Forum Giełda, inwestowanie w akcje, fundusze inwestycyjne i inne rynki Strona Główna Giełda, inwestowanie w akcje, fundusze inwestycyjne i inne rynki
Inwestowanie w akcje, fundusze inwestycyjne, waluty, giełdy zagraniczne, towarowe i inne rynki. Rozmowy: spółki giełdowe, finanse, konta bankowe, lokaty i obligacje skarbowe. Miejsce dla każdego inwestora.
 





Reklama:    
weterynarz warszawa bielany  
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy    RejestracjaRejestracja    ProfilProfil   PWPW   ZalogujZaloguj 
pierwszy system transakcyjny
Idź do strony 1, 2  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum Giełda, inwestowanie w akcje, fundusze inwestycyjne i inne rynki Strona Główna -> Dla początkujących
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
johnyjj2



Dołączył: 28 Cze 2010
Posty: 11

PostWysłany: Poniedziałek, 28 Czerwiec 2010, 3:18    Temat postu: pierwszy system transakcyjny Odpowiedz z cytatem

Witam!

Ostatnio zainteresowałem się systemami transakcyjnymi i zacząłem testować system GunnHiLo (http://www.amibroker.com/library/detail.php?id=60). W backteście zysk wyszedł ok. 100%, więc zacząłem stosować system na gragieldowa.pl i przynosi mi on od jakiegoś czasu straty na długich pozycjach na akcjach. Zdziwiło mnie to, więc zdecydowałem się przeczytać książkę "Komputerowa analiza rynków terminowych". Czy możecie mi powiedzieć co Waszym zdaniem świadczy o tym, że ten system spisuje się tak a nie inaczej? Mam parę opcji, dlaczego tak może być, nie chciałbym jednak sugerować z góry odpowiedzi. System optymalizowałem dla długich pozycji pod kątem cen akcji ściągniętych z bossa.pl w formacie bazy dla MetaStocka. Najpierw zoptymalizowałem w AmiBrokerze obie zmienne w zakresie 01.2005-01.2009, a następnie przetestowałem dla 01.2009-06.2010.

Przeanalizowałem sobie system i działa on tak:

==== Krok pierwszy ====
Narysuj wykres cen zamknięcia, a następnie:
CLOSE>Ref(Ma(H,PeriodsA) -> HLd = +1 [cena zamknięcia większa od wczorajszej średniej ruchomej cen maksymalnych dla PeriodsA dni]
CLOSE HLd = -1
w przeciwnym razie -> HLd = 0
==== Krok drugi ====
HLv jest równe HLd, jeśli HLd było wczoraj różne od zera
W zasadzie to nie wiem, po co to HLv=ValueWhen(HLd != 0,HLd,1);. Przecież jeśli HLd było wczoraj różne od zera to jest to zwykłe przypisanie HLv = HLd. Natomiast jeśli HLd było wczoraj zerem to pozostawia domyślną wartość HLv, czyli zapewne zero, ponieważ nigdzie zmienna nie była inicjalizowana z wartością początkową. Czyli zawsze wykonuje HLv = HLd.
==== Krok trzeci ====
HLv = -1 -> HiLo = Ma(H,PeriodsA)
HLv = +1 lub 0 -> HiLo = Ma(L,PeriodsA)
==== Kroki 1-3 ====
W zasadzie to kroki 1-3 sprowadzają się tylko do tego, że:
CLOSE>Ref(Ma(H,PeriodsA) => HiLo = Ma(L,PeriodsA)
CLOSE HiLo = Ma(H,PeriodsA)
w przeciwnym razie => HiLo = Ma(L,PeriodsA)
No, chyba, że coś źle zrozumiałem .
==== Krok czwarty ====
Narysuj wykres HiLo.
==== Krok piąty ====
Wykonaj kroki 1-4 dla wartości PeriodsB, ostatnią zmienną nazwij HiLoInvert.
==== Krok szósty ====
HiLo przecina od dołu HiLoInvert -> kupuj
HiLo przecina od góry HiLoInvert -> sprzedawaj
==== Krok siódmy ====
Pierwszy raz pojawi się sygnał kupna, to go zostawia. Później kolejne sygnały kupna usuwa, aż do momentu, gdy w pojawi się zarówno sygnał kupna jak i sprzedaży (nie do końca rozumiem cel tej funkcji).
==== Krok ósmy ====
Sygnały otwarcia i zamknięcia krótkiej pozycji to cały pozostały czas, kiedy nie zajmujemy pozycji długiej.

Pozdrawiam!
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Reklama
gogus



Dołączył: 27 Paź 2006
Posty: 61

PostWysłany: Poniedziałek, 28 Czerwiec 2010, 4:27    Temat postu: Odpowiedz z cytatem

Pierwsze konkretne pytanie od dość dawna:)
Możliwości jest dość sporo dlaczego system się nie sprawdza.Pierwsza sprawa jest taka,czy stosujesz system na tym samym rynku/rynkach na którym był testowany?Na jakim okresie robiłeś testy?Zobacz w raporcie w jaki sposób rozkładają się zyski i straty na pozycjach długich i krótkich?Być może, system więcej zarabia na krótkich,a w realnej grze nie masz możliwości tego wykorzystać.Następna kwestią jest to że system mógł przynieść w testach taki zysk,ale musisz sprawdzić jakie było po drodze DD.Jeśli w realnej grze obsuniecie przekroczyło to które wyszło w testach to jest to sygnałem do sprawdzenia wszystkiego od początku.System nie posiada stopów,ze względu na to że cały czas jest na rynku.Spróbuj dodać jakieś stopy a wyniki powinny być lepsze.
Właśnie doczytałem do końca na jakich danych testowałeś:)To zdecydowanie za krótko,przetestuj na całej historii jaka masz.
Jedna z ważniejszych rzeczy jest to,że jest to system łapiący jakieś trendy,a to powoduje ze może on przechodzić dość długotrwale i głębokie obsunięcia,wiec to co się teraz dzieje z wynikami może być normalne.Na pocieszenie powiem Ci ze systemy trendowe których używam tez w ostatnim czasie nie dają rady:)Pozostaje jeszcze kwestia tego,ze systemy na akcjach są same w sobie dość niebezpieczne,na co niedawno ktoś mi zwrócił uwagę,bo tez nie wziąłem tego pod uwagę.Jest jeszcze masa innych pułapek w które można wpaść przy budowaniu systemu.Pozdrawiam
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
johnyjj2



Dołączył: 28 Cze 2010
Posty: 11

PostWysłany: Wtorek, 29 Czerwiec 2010, 0:07    Temat postu: Odpowiedz z cytatem

Dzięki za odpowiedź!

gogus napisał:
Pierwsze konkretne pytanie od dość dawna:)
Możliwości jest dość sporo dlaczego system się nie sprawdza.Pierwsza sprawa jest taka,czy stosujesz system na tym samym rynku/rynkach na którym był testowany?Na jakim okresie robiłeś testy?


Najpierw zoptymalizowałem w AmiBrokerze obie zmienne w zakresie 01.2005-01.2009, a następnie przetestowałem dla 01.2009-06.2010.

gogus napisał:
Zobacz w raporcie w jaki sposób rozkładają się zyski i straty na pozycjach długich i krótkich?Być może, system więcej zarabia na krótkich,a w realnej grze nie masz możliwości tego wykorzystać.


Optymalizowałem tylko pod kątem pozycji długich (tak ustawiłem w opcjach). W realnej grze też używam tylko długich.

gogus napisał:
Następna kwestią jest to że system mógł przynieść w testach taki zysk,ale musisz sprawdzić jakie było po drodze DD.Jeśli w realnej grze obsuniecie przekroczyło to które wyszło w testach to jest to sygnałem do sprawdzenia wszystkiego od początku.


DD, czyli obsunięcie jak rozumiem. Gdzie można to sprawdzić w AmiBrokerze?

gogus napisał:
System nie posiada stopów,ze względu na to że cały czas jest na rynku.Spróbuj dodać jakieś stopy a wyniki powinny być lepsze.


To z całą pewnością muszę zrobić, jak również wyliczyć wielkość pozycji oraz wliczyć w kalkulacje prowizje i poślizg. Niestety, nie mam pomysłu co obrać za wyznacznik miejsca umieszczenia stopów oraz jak to zakodować. Co do wielkości pozycji to można ją policzyć na podstawie ryzyka, je zaś uzyskać znając przewidywany zysk - czyli na obliczenie wielkości pozycji też nie mam pomysłu, bo wyliczenie przewidywanego zysku nie jest takie proste, a często jest niemożliwe. Prowizje i poślizg myślę, że mam pomysł, jak zakodować.

gogus napisał:
Właśnie doczytałem do końca na jakich danych testowałeś:)To zdecydowanie za krótko,przetestuj na całej historii jaka masz.


Opierałem się na pliku ABSysDevTutorv2.pdf ze strony AmiBrokera. Chyba też były jakieś problemy w AmiBrokerze, jeśli okres testów był zbyt długi, czyli wynosił całą historię. Ale co dokładniej było nie tak to nie pamiętam, musiałbym jeszcze raz puścić ten test.

gogus napisał:
Jedna z ważniejszych rzeczy jest to,że jest to system łapiący jakieś trendy,a to powoduje ze może on przechodzić dość długotrwale i głębokie obsunięcia,wiec to co się teraz dzieje z wynikami może być normalne.


Normalne może być to, że wyszedł duży zysk w testach, a na grze giełdowej przynosi teraz straty ze względu na obsunięcia? Dlaczego fakt, że system łapie trendy powoduje spore obsunięcia?

gogus napisał:
Pozostaje jeszcze kwestia tego,ze systemy na akcjach są same w sobie dość niebezpieczne,na co niedawno ktoś mi zwrócił uwagę,bo tez nie wziąłem tego pod uwagę.Jest jeszcze masa innych pułapek w które można wpaść przy budowaniu systemu.Pozdrawiam


Dlaczego systemy na akcjach są niebezpieczne? I na czym w takim razie bezpieczne są? Próbowałem wcześniej ręcznie analizować wskaźniki, oscylatory itd., ale z kiepskim skutkiem. Może lepszą opcją będzie, jeśli się wezmę za jakiś czas za ręczną analizę wykresów cen (kanały tredowe, formacje itd.), ale tymczasem chciałbym jednak znaleźć i zoptymalizować dobry system. Jakie to inne pułapki (albo zwłaszcza które) masz na myśli?

W trakcie optymalizacji systemu oraz jego stosowania robiłem zrzuty ekranu i opatrywałem je swoim komentarzem, więc zawsze mogę w razie czego je podesłać, jeśli tylko nie zanudzi Cię to na śmierć i masz chwilę wolnego czasu.

Pozdrawiam!
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
gogus



Dołączył: 27 Paź 2006
Posty: 61

PostWysłany: Wtorek, 29 Czerwiec 2010, 7:25    Temat postu: Odpowiedz z cytatem

Czesc.
Cytat:
DD, czyli obsunięcie jak rozumiem. Gdzie można to sprawdzić w AmiBrokerze?

Po przeprowadzeniu testu w oknie Automatic Analysis wciśnij "Report".A w raporcie w zakładce statystyki nazywa się to Max. system % drawdown.

Jeśli chodzi o stopy,to zajrzyj do pomocy Ami na funkcje ApplyStop.Najlepiej rozpisz sobie trzy rodzaje stopów(początkowy,kroczący i kasujący zysk)i każdy poddaj optymalizacji.Wtedy będziesz miał odpowiedz jak wychodzić z pozycji i jak kasować zysk.Zawsze możesz pozostawić zamykanie stratnej pozycji w niezmienionej formie,czyli wtedy kiedy system daje sygnał zajęcia odwrotnej pozycji.Jak już będziesz znał wielkość stopa to na tej podstawie możesz policzyć wielkość pozycji.Z prowizjami nie ma w ogóle problemu możesz je ustawić w oknie Automatic Analysis/Settings
Testowanie bez wątpienia im na dłuższym okresie tym lepiej.

Cytat:
Normalne może być to, że wyszedł duży zysk w testach, a na grze giełdowej przynosi teraz straty ze względu na obsunięcia? Dlaczego fakt, że system łapie trendy powoduje spore obsunięcia?


Jest to jak najbardziej normalne.Musisz mieć odpowiednią próbę transakcji.W systemach trendowych bardzo często całkowity zysk pochodzi z jedynie kilku transakcji.W takich systemach przeważnie więcej jak polowa transakcji jest stratnych.Jest bardzo dużo fałszywych sygnałów które mogą pojawiać się całymi miesiącami.Jak już przetestujesz system na większej ilości danych,to zrób sobie wtedy mniejsze testy,rok po roku,a nawet kwartał po kwartale,a jeśli masz ochotę się pobawić a jednocześnie poobserwować niektóre rzeczy to przetestuj go też miesiąc za miesiącem.Niejednokrotnie może się zdarzyć sytuacja ze system na danych 10-letnich przynosi spory zysk a po chwili okazuje się,że zysk ten pochodzi np tylko z ostatniego roku a przez 9 lat system tracił lub przynajmniej nie zarabiał.Ta zasada dotyczy też optymalizacji.Jeśli optymalizujesz system to niekoniecznie wybiera się parametry które dają najlepszy zysk,ale szuka się takich które powodują jak najmniejsze obsunięcia i takich przy których system jest stabilny i jego zyski nie pochodzą tylko z wybranego okresu.Przejrzyj sobie dokładnie raport,zwracając uwagę na obsunięcia,ilość transakcji stratnych i zyskownych,ilość następujących po sobie transakcji stratnych i zyskownych,przyjrzyj się też największym stratom,obejrzyj wykres i pomyśl jak można było ich uniknąć.
Systemy na akcjach są "niebezpieczne" ze względu na płynność i na to że każdy walor ma kiedyś jakieś swoje pięć minut,które może zawyżyć wynik testu a nigdy więcej się nie powtórzyć w przyszłości.Rynki akcji bardzo często zmieniają swój charakter i może pojawić się sytuacja że za kilka miesięcy na jakimś rynku będzie sprawdzała się inna metoda niż wcześniej.Jeśli handlujesz tym systemem na wszystkich rynkach gdzie daje on sygnały a nie na wybranych to porób testy na kilku rożnych walorach i zobaczysz że na jednych będzie osiągał dobre wyniki a na innych będzie tracił.
Jak chcesz możesz podesłać jakieś raporty.Pozdrawiam
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
robert.kajzer



Dołączył: 11 Sie 2009
Posty: 190

PostWysłany: Wtorek, 29 Czerwiec 2010, 19:07    Temat postu: Odpowiedz z cytatem

Budowanie systemu z przeznaczeniem na rynek akcji ma swoje wady. Jest to i tak lepsze niz inwestowanie na takim rynku bez przygotowanego systemu.
_________________
http://abcinwestowania.wordpress.com ---> blog o inwestowaniu
http://www.growandgo.pl ---> darmowy kurs o Papierach Wartościowych
http://poradnikinwestycyjny.wordpress.com ---> poradnik inwestowania w Fundusze Inwestycyjne
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
johnyjj2



Dołączył: 28 Cze 2010
Posty: 11

PostWysłany: Sobota, 3 Lipiec 2010, 15:33    Temat postu: Odpowiedz z cytatem

Dzięki za odpowiedzi. Spędziłem ostatnio trochę czasu czytając Komputerową Analizę Rynków Terminowych Charlesa LeBeau i Davida W. Lucasa (te zagadnienia można odnieść nie tylko do tytułowych rynków terminowych, ale również do rynków akcji).

Ostatnimi czasy testuję systemy transakcyjne:
1. Gunn Hi-Lo http://www.amibroker.com/library/detail.php?id=60
2. William's Alligator System http://www.amibroker.com/library/detail.php?id=100

Przetestowałem oryginalne systemy (w drugim musiałem zmienić A na Avg, bo inaczej nie działał system). Jako "spółki" wybrałem Watch Listę z nazwami wszystkich spółek, których akcje można kupić na gragieldowa.pl. Pozostałe spółki są z indeksów na dzień dzisiejszy (3 VII 2010).

Net Profit:
1. spółki -> 1,28%, WIG20 -> 11,21%, mWIG40 -> 176,51%, WIG20 & mWIG40 -> -2,38%
2. spółki -> -16,13%, WIG20 -> 246,78%, mWIG40 -> 692,34%, WIG20 & mWIG40 -> 99,31%

Pierwszy z dwóch systemów prawie zawsze przynosi zysk. Drugi natomiast nie przynosi zysku dla spółek. Ogólnie oba systemy dają największy zysk dla spółek z indeksu mWIG40.

Przyjrzyjmy się Backtest Report dla systemu drugiego:

Cytat:
Initial capital 10000.00
Ending capital 79234.37
Net Profit 69234.37
Net Profit % 692.34
Exposure % 72.10
Net Risk Adjusted Return % 960.19
Annual Return % 67.83
Risk Adjusted Return % 94.08

---------------------------------

All trades: 179
Avg. Profit/Loss 386.78
Avg. Profit/Loss % 1.54
Avg. Bars Held 5.64

---------------------------------

Winners: 74 (41,34 %)
Total Profit 229586.84
Avg. Profit 3102.52
Avg. Profit % 8.23
Avg. Bars Held 7.76
Max. Consecutive 8
Largest win 24248.64
# bars in largest win 8

---------------------------------

Losers 105 (58.66 %)
Total Loss -160352.47
Avg. Loss -1527.17
Avg. Loss % -3.18
Avg. Bars Held 4.15
Max. Consecutive 9
Largest loss -7768.67
# bars in largest loss 3

---------------------------------

Max. trade drawdown -10779.49
Max. trade % drawdown -25.63 %
Max. system drawdown -66913.23
Max. system % drawdown -67.30 %
Recovery Factor 1.03
CAR/MaxDD 1.01
RAR/MaxDD 1.40
Profit Factor 1.43
Payoff Ratio 2.03
Standard Error 20618.72
Risk-Reward Ratio 0.47
Ulcer Index 31.18
Ulcer Performance Index 2.00
Sharpe Ratio of trades 1.12
K-Ratio 0.0172


Czy mogę prosić o jakiś komentarz do tego raportu? Roczny zysk 67% to zdaje mi się, że raczej dużo. Trzy czwarte udanych transakcji to wynik zadziwiająco wysoki. Maksymalne obsunięcie kapitału w jednej transakcji to -25,36%, czyli chyba raczej akceptowalne. Obsunięcie systemu wynosi -67,30%, a tego już moim zdaniem nie można zaakceptować. Jak można spróbować zmniejszyć system drawdown? Co ciekawego mówią nam pozostałe informacje, takie jak Ulcer Performance Index, Sharpe Ratio of trades i inne?

Pozdrawiam!
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
gogus



Dołączył: 27 Paź 2006
Posty: 61

PostWysłany: Sobota, 3 Lipiec 2010, 20:27    Temat postu: Odpowiedz z cytatem

Witam.
Podstawowa kwestia jest to,że moja znajomość AFL nie pozwala mi na w miarę szybkie rozebranie tego drugiego systemu na czynniki pierwsze,więc wszystko co napisze niżej,jest obarczone ryzykiem pomyłki.
1.Pierwsze co rzuciło mi się w oczy, to brak w formule ostawień co do cen zawierania transakcji i przesunięcia.
2.Następna sprawa to zaangażowanie.System otwiera jedna pozycje za całą gotówkę,co można nazwać samobójstwem.
3.Tu się powtórzę,ale przetestuj system rok po roku i zobaczysz że wyniki potrafią być słabe.Widziałem tam w niektórych rocznych okresach DD znacznie przekraczał zysk.
4.Najważniejszym wnioskiem jest chyba to że przy takim obsunięciu(w niektórych testach 10-letnich wychodziło mi ponad 70%),taki wynik nie jest żadną rewelacja i pamiętaj że na te sześćdziesiąt parę procent możesz czekać kilka lat.
5.Nie wiem skąd stwierdzenie ze 3/4 transakcji jest udanych skoro ze 179 transakcji 105 było stratnych?
6.Trochę z innej beczki,to zdecydowanie lepiej by było gdybyś tworzył własny system niż posługiwał się czyimś pomysłem.
7.Profit Factor tez słabiutki,uważa się że dla rynku akcji powinien być wyższy od 3.
Ze względu na niektóre rozwiązania w nim zawarte,myślę że jak będę miał chwilę to przyjrzę mu się bliżej.Powtórzę się jeszcze raz-każdy rynek akcji jest inny,to że dane walory są skupione w jednym indeksie nie oznacza że zachowania na nich są takie same.Dla porównania wkleję Ci wyniki mojego prostego systemu opartego na trzech średnich plus kilka rozwiązań co do zamykania pozycji.Test na danych 10 letnich od 1.01.2000-1.01.2010

Initial capital 10000.00
Ending capital 427033.57
Net Profit 417033.57
Net Profit % 4170.34 %
Exposure % 42.48 %
Net Risk Adjusted Return % 9817.01 %
Annual Return % 45.56 %
Risk Adjusted Return % 107.25 %

--------------------------------------------------------------------------------

All trades 408
Avg. Profit/Loss 1022.14
Avg. Profit/Loss % 4.33
Avg. Bars Held 11.41

--------------------------------------------------------------------------------

Winners 219 (53.68 %)
Total Profit 675022.24
Avg. Profit 3082.29
Avg. Profit % 12.03
Avg. Bars Held 14.89
Max. Consecutive 10
Largest win 20507.65
# bars in largest win 12

--------------------------------------------------------------------------------

Losers 189 (46.32 %)
Total Loss -257988.67
Avg. Loss -1365.02
Avg. Loss % -4.59 %
Avg. Bars Held 7.38
Max. Consecutive 9
Largest loss -11318.17
# bars in largest loss 3

--------------------------------------------------------------------------------

Max. trade drawdown -15761.22
Max. trade % drawdown -24.61 %
Max. system drawdown -50135.70
Max. system % drawdown -22.56 %
Recovery Factor 8.32
CAR/MaxDD 2.02
RAR/MaxDD 4.75
Profit Factor 2.62
Payoff Ratio 2.26
Standard Error 53899.63
Risk-Reward Ratio 0.59
Ulcer Index 6.91
Ulcer Performance Index 5.81
Sharpe Ratio of trades 1.68
K-Ratio
Oczywiście częściowo musiałem powycinać tak jak Ty rzeczy nieistotne.Jeśli chodzi o te wszystkie wskaźniki na samym dole to odpowiedzi udzieli Ci Google.Zawodowcy mówią,że z wyników backtestu trzeba by obliczyć jakieś 20% i to jest wynik którego należy się spodziewać w handlu realnym.Ja jeszcze nie mam za dużo doświadczenia,póki co po prawie rocznym handlu wyniki nie odbiegają od tych uzyskanych w testach.Pozdrawiam
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
johnyjj2



Dołączył: 28 Cze 2010
Posty: 11

PostWysłany: Niedziela, 4 Lipiec 2010, 1:27    Temat postu: Odpowiedz z cytatem

Dzięki za odpowiedź!

Trochę mnie przekonałeś, żeby spróbować samemu tworzyć systemy transakcyjne. Znalazłem osiem różnych metod otwierania pozycji, cztery dotyczące zleceń stop i pięć odnośnie zamykania pozycji. Przy pomocy funkcji IIf oraz Optimize przetestuję wszystkie kombinacje, których jest 8*4*5. Najpierw jednak muszę te pomysły zakodować Smile.

I tu pojawia się pierwszy problem. Wynikałoby, że ruchomy stop spisuje się nad wyraz dobrze. Sama idea tego, żeby stop przesuwać w trakcie trwania pozycji jest dobra. Pozostaje jednak kwestia bardziej szczegółowego opracowania ruchomego stopu. W jaki sposób polecałbyś wyznaczać stop początkowy oraz kiedy i o ile go przesuwać? To jest takie moje główne pytanie.

Następnie zastanawiam się, czy jest możliwość zaprogramowania AFL w taki sposób, aby podawał kwotę, która byłaby zleceniem aktywującym. Pomyślałem, że można by spróbować do przecięcia średnich kroczących dodać jeszcze czekanie na wybicie kursu ponad maksimum cenowe dnia, w którym następuje przecięcie średnich. Jak to można by zakodować?

Następnie - czy da się w AmiBrokerze przeprowadzić kumulatywne testy projekcyjne (czyli np. dla dziesięciu lat: 3+1, 4+1, 5+1 itd.)?

Gdybym się zdecydował na ustalenie zlecenia stop jako poziomu wsparcia i oporu, czyli dla długiej pozycji stopu w minimum z ostatnich 20 dni sprzed otwarcia pozycji - w jaki sposób to zakodować? Chodzi mi o ostatnich 20 dni, ale sprzed otwarcia pozycji. Zwykłe Ref(..., -20) raczej nie wystarczy.

I na sam koniec - zlecenia stop progu rentowności. Stop umieszcza się na poziomie otwarcia pozycji po osiągnięciu zysku x (500, 1000, 1500 lub 2000). Czy dobrze rozumiem, że pozycję zamykam, gdy close-buy>=x, gdzie close to aktualna cena zamknięcia, buy to cena, przy której kupiłem? I znowu pojawia się pytanie związane z AFL - jak zakodować, że chodzi mi o cenę, po której kupiłem daną akcję?

Mam nadzieję, że to nie za wiele pytań Smile. Spodziewam się, że gdy przeskoczę tych kilka powyższych problemów to kodowanie nie sprawi mi większej trudności. Zastanawiam się również, w jaki sposób wyznaczyć wielkość otwieranej pozycji. Bo rzecz jasna ustalenie tej wielkości na 100% posiadanych środków to, jak to również Ty wspomniałeś, samobójstwo.

Pozdrawiam!
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
robert.kajzer



Dołączył: 11 Sie 2009
Posty: 190

PostWysłany: Niedziela, 4 Lipiec 2010, 8:20    Temat postu: Odpowiedz z cytatem

Mozesz budowac swoj system inwestycyjny na podstawie systemow innych inwestorow. Nigdy jednak nie przejmuj od nikogo w 100% systemu bo to i tak nie bedzie u Ciebie funkcjonowac.

Jak ustawiac poziom stop lossow to odwieczne pytanie inwestorow. To zalezy od rynku i od Twoich preferencji. Nikt nie odpowie Ci na to pytania. Trzeba testowac, testowac i jeszcze raz testowac.

Niekoniecznie pozycja za 100% kapitalu to samobojstwo. Jesli gra sie ze stop lossami to z gory mozna powiedziec ile sie straci w najgorszym wypadku. Tak wiec mozna ograniczac ryzyko straty.
_________________
http://abcinwestowania.wordpress.com ---> blog o inwestowaniu
http://www.growandgo.pl ---> darmowy kurs o Papierach Wartościowych
http://poradnikinwestycyjny.wordpress.com ---> poradnik inwestowania w Fundusze Inwestycyjne
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
gogus



Dołączył: 27 Paź 2006
Posty: 61

PostWysłany: Niedziela, 4 Lipiec 2010, 9:30    Temat postu: Odpowiedz z cytatem

Cześć.

Cytat:
I tu pojawia się pierwszy problem. Wynikałoby, że ruchomy stop spisuje się nad wyraz dobrze. Sama idea tego, żeby stop przesuwać w trakcie trwania pozycji jest dobra. Pozostaje jednak kwestia bardziej szczegółowego opracowania ruchomego stopu. W jaki sposób polecałbyś wyznaczać stop początkowy oraz kiedy i o ile go przesuwać? To jest takie moje główne pytanie.


To w jaki sposób wyznaczyć stop początkowy i jak go przesuwać jest kwestią rożną dla rożnych rynków.Pobaw się w optymalizacje i zobaczysz jak rożne mogą być wielkości stopów.Tu znów odsyłam Cie do pomocy Ami,bo rodzajów stopów jest sporo.Postaram się przedstawić sprawę trochę jaśniej na przykładzie stopa początkowego:

SL=Optimize("SL",default,min,max,step);

gdzie:pierwsze SL to jest skrót(możesz użyć jakiegokolwiek),który następnie wpiszesz w funkcji ApplyStop w miejsce "amount".
W nawiasie zaczynasz od nazwy koniecznie używając cudzysłów i ta nazwa będzie użyta po optymalizacji w raporcie optymalizacji.
Dalej wpisujesz wartość domyślna stopa oraz wartości minimalne i maksymalne zakresu w jakim funkcja ma szukać rozwiązań.Na końcu krok poszukiwań.
Ogólnie mam spore problemy z pozycjonowaniem w formule poszczególnych funkcji,ale w tym wypadku na pewno Optimize działa jak jest umieszczone powyżej ApplyStop.Tak wiec poniżej umieszczasz ApplyStop:

ApplyStop( type, mode, amount, exitatstop, volatile = False, ReEntryDelay = 0 )

gdzie:
type= rodzaj stopa.Masz do wyboru czy ma to być stop początkowy,trailing stop,profit stop,lub stop czasowy.W tym wypadku umieszczasz stopTypeLoss lub 0
mode=tu chodzi o to w jakiej formie maja być obliczane stopy.Nas głownie interesuje czy będą to punkty czy procenty,ale są też inne rozwiązania np przy stopie czasowym.W tym wypadku będzie to stopModePercent lub 1
amount=tu wpisujesz wartość stopa.Ze wzgledu na to,że nasz stop ma być poddany optymalizacji,zamiast konkretnej wartości wpisujemy SL.
exitatstop=tu nie będę się rozpisywał.chodzi o to w jaki sposób program ma sprawdzać stopy.Odsyłam do pomocy i podkreślam że jest to bardzo ważne i w znacznym stopniu wpływa na wynik.
volatile=jako ze stop nie jest oparty na zmienności wpisujesz tu volatile=false lub 0
ReEntryDelay=tu polecałbym Ci wpisać 1 czyli że stop jest odpalany z jednodniowym przesunięciem.Gdyby z exitatstop wynikało że stop ma być odpalany podczas sesji(czego nie polecam ale możesz przetestować)to nie powinno być przesunięcia.Tak wiec podsumowując mogłoby to wyglądać tak:

ApplyStop(stopTypeLoss,stopModePercent,SL,1,0,1);

Cytat:
Następnie zastanawiam się, czy jest możliwość zaprogramowania AFL w taki sposób, aby podawał kwotę, która byłaby zleceniem aktywującym. Pomyślałem, że można by spróbować do przecięcia średnich kroczących dodać jeszcze czekanie na wybicie kursu ponad maksimum cenowe dnia, w którym następuje przecięcie średnich. Jak to można by zakodować?


Nie bardzo wiem co masz na myśli.Jeśli chodzi o to żeby cena zamknięcia była ponad średnią to w formule wpisuj ceny zamknięcia(C) zamiast najwyższe(H).


Cytat:
Następnie - czy da się w AmiBrokerze przeprowadzić kumulatywne testy projekcyjne (czyli np. dla dziesięciu lat: 3+1, 4+1, 5+1 itd.)?


Prawdopodobnie masz tu na myśli Walk Forward Test.Kiedyś się tym bawiłem jednak nieszczególnie zauważam wyższość tego typu testowania nad tradycyjną metoda.Nie do końca wiem czy akurat to masz na myśli ale nawet jeśli nie dosłownie to na pewno da się to załatwić dzięki WFT.Żeby trochę rozjaśnić temat odsyłam tu:

http://blogi.bossa.pl/2008/08/05/test-wszystkich-testow/#more-471

Cytat:
Gdybym się zdecydował na ustalenie zlecenia stop jako poziomu wsparcia i oporu, czyli dla długiej pozycji stopu w minimum z ostatnich 20 dni sprzed otwarcia pozycji - w jaki sposób to zakodować? Chodzi mi o ostatnich 20 dni, ale sprzed otwarcia pozycji. Zwykłe Ref(..., -20) raczej nie wystarczy


Nie bardzo wiem jak się za to zabrać.Musiałbyś spróbować połączyć funkcje ApplyStop z Ref,choć nawet nie wiem czy się da,ale myślę ze nie byłoby problemu.

Cytat:
I na sam koniec - zlecenia stop progu rentowności. Stop umieszcza się na poziomie otwarcia pozycji po osiągnięciu zysku x (500, 1000, 1500 lub 2000). Czy dobrze rozumiem, że pozycję zamykam, gdy close-buy>=x, gdzie close to aktualna cena zamknięcia, buy to cena, przy której kupiłem? I znowu pojawia się pytanie związane z AFL - jak zakodować, że chodzi mi o cenę, po której kupiłem daną akcję?


Tutaj tez poszukałbym rozwiązania w ApplyStop z ustawieniem punktowym.Cena kupna to buyprice,ale jeśli w ApplyStop ustawisz stopa kasującego zyski,wartości na punktowe i wpiszesz konkretną wartość,to on automatycznie będzie się odwoływał do ceny kupna.

Wielkość pozycji ustala się bardzo prosto:
positionsize=-30;
Powyższy przykład to ustalenie pozycji na 30% całego kapitału.Jeśli przed wartością postawisz minus to program odnosi się procentowo.Jeśli wartość będzie dodatnia,to program traktuje to jako konkretna kwotę jaka ma obracać.Np dla kwoty 4 000 będzie to wyglądało tak:
positonsize=4000;
Pozdrawiam.
[/quote]
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
johnyjj2



Dołączył: 28 Cze 2010
Posty: 11

PostWysłany: Niedziela, 4 Lipiec 2010, 17:06    Temat postu: Odpowiedz z cytatem

Dzięki za odpowiedzi!

gogus napisał:
To w jaki sposób wyznaczyć stop początkowy i jak go przesuwać jest kwestią rożną dla rożnych rynków.Pobaw się w optymalizacje i zobaczysz jak rożne mogą być wielkości stopów.Tu znów odsyłam Cie do pomocy Ami,bo rodzajów stopów jest sporo.Postaram się przedstawić sprawę trochę jaśniej na przykładzie stopa początkowego.


Na dobry początek spróbuję zoptymalizować drugi system, dołączając do niego zlecenia stop:

Kod:
Buy = Cross( CCI(), 100 );
Sell = Cross( 100, CCI() );

which_stop = Optimize("which_stop",6,1,6,1);

/* max loss stop optimization */
IIf(which_stop == 1,
ApplyStop(stopTypeLoss,
         stopModePercent,
         //Optimize( "max. loss stop level", 10, 2, 30, 1 ),
         10,
         True )
,0);
/* single-line implementation of Chandelier exit */
IIf(which_stop == 2,
ApplyStop(stopTypeTrailing, stopModePoint, 3*ATR(14), True, True )
,0);
/* N-bar stop */
IIf(which_stop == 3,
ApplyStop( stopTypeNBar, stopModeBars, 5 )
,0);
/* Back testing your trading ideas - Trailing stops */
IIf(which_stop == 4,
ApplyStop( stopTypeTrailing, stopModePercent, 10, True )
,0);
/* Back testing your trading ideas - Dynamic stops */
IIf(which_stop == 5,
ApplyStop( 0, 2, 2 * ATR( 10 ), 1 )
,0);
/* naparkiecie.pl */
//SL=Optimize("SL",10,1,30,1);
SL=10;
IIf(which_stop == 6,
ApplyStop(stopTypeLoss,stopModePercent,SL,1,0,1)
,0);


Mam nadzieję, że konstrukcja IIf(warunek, ApplyStop(...), 0) jest dozwolona, a także, że jest możliwe użycie warunkowo zagnieżdżonych wywołań funkcji Optimize (-> "max. loss stop level").

gogus napisał:
Nie bardzo wiem co masz na myśli.Jeśli chodzi o to żeby cena zamknięcia była ponad średnią to w formule wpisuj ceny zamknięcia(C) zamiast najwyższe(H).


Jak rozumiem Cross(ARRAY1, ARRAY2) oznacza, że pierwsza linia przecina drugą od dołu (crosses above).

Znalazłem w "Komputerowej analizie rynków terminowych" taki opis:

Cytat:
Możemy posłużyć się na przykład kombinacją średnich 4-, 9- i 18-dniowej. Jeśli średnia 9-dniowa jest powyżej 18-dniowej, ale średnia 4-dniowa zeszła poniżej 9-dnio-wej, możemy stwierdzić, że rynek znajduje się w trendzie bocznym. To samo powiemy wtedy, gdy średnia 9-dniowa znajdzie się poniżej 18-dniowej, a średnia 4-dniowa przetnie od dołu 9-dnio-wą. Z trendem zwyżkującym będziemy mieli do czynienia wtedy, gdy średnia 4-dniowa znajdzie się ponad 9-dniową, ta zaś położona będzie powyżej 18-dniowej. Odwrotne położenie średnich jest oznaką trendu zniżkującego.


Jednak jest on dla mnie trochę niejasny, ponieważ mówi, która średnia znajduje się nad którą, a nie, która średnia przecina którą (z jednym wyjątkiem). W związku z tym poszukałem w internecie i jedyne, co znalazłem użytecznego to http://theforexarticles.com/2008/08/27/heres-a-solid-ema-trading-strategy/ , które niestety również nie wyczerpuje tematu. Rozrysowałem to tutaj: http://images45.fotosik.pl/312/5b27004f8de01c07.jpg . Napisałem poniższy kod, z którego jednak nie jestem do końca zadowolony. Zastanawiam się również, czy to zerowanie przenieść na dół kodu, zostawić czy też wyrzucić. Zastosowałem tutaj dla trendu bocznego opis z książki, dla kupna i sprzedaży opis ze strony.

Kod:
//zeruję buy i sell, jeśli wykryto trend boczny

buy = IIf(
  (((ema(C,9) > ema(C,4)) AND (ema(C,4) > ema(C,18))) OR ((ema(C,18) > ema(C,4)) AND (cross(ema(C,4),ema(C,9)))))
,0,buy)

sell = IIf(
  (((ema(C,9) > ema(C,4)) AND (ema(C,4) > ema(C,18))) OR ((ema(C,18) > ema(C,4)) AND (cross(ema(C,4),ema(C,9)))))
,0,sell)

//kupuję, gdy zwyżkuje

buy = IIf(
  cross(ema(C,9),ema(C,18))
  //AND (ema(C,4) > ema(C,9)) AND (ema(C,4) > ema(C,18))
,1,0)

//sprzedaję, gdy maleje

sell = IIf(
  cross(ema(C,9),ema(C,4))
  //AND (ema(C,18) > ema(C,4)) AND (ema(C,18) > ema(C,9))
,1,0)


Natomiast to, o co mi chodziło z czekaniem na wybicie kursu ponad maksimum cenowe dnia, w którym następuje przecięcie średnich powinno się znaleźć na końcu, jako dodatkowy warunek.

Kod:
czy_nastapilo_wybicie_kursu = IIf(C > Ref(H,-1),1,0)

buy = IIf(czy_nastapilo_wybicie_kursu, buy, 0)


Z tym, że ten końcowy kod nie będzie działać, ponieważ musiałoby działać jeden dzień później. Przykładowo:
środa - przecięcie średnich wskazujące na buy
czwartek - cena powyżej wczorajszego High, więc oba warunki spełnione i składam zlecenie

gogus napisał:
Prawdopodobnie masz tu na myśli Walk Forward Test.Kiedyś się tym bawiłem jednak nieszczególnie zauważam wyższość tego typu testowania nad tradycyjną metoda.


Czyli zapewne będę stosował następującą metodę:
m - maksymalna ilość lat, na których mogę testować dane
1. optymalizacja danych dla "m minus półtorej roku" (bez ostatniego półtorej roku)
2. sprawdzenie, jak system ze zoptymalizowanymi wartościami działa dla ostatniego półtorej roku
Dla przyspieszenia zamiast m-1,5 mogę stosować 4,5 roku (6 lat bez ostatniego 1,5), jeśli będę miał sporo zmiennych do zoptymalizowania. Czy jest to dobry sposób testowania?

Pozdrawiam!


Ostatnio zmieniony przez johnyjj2 dnia Wtorek, 6 Lipiec 2010, 0:30, w całości zmieniany 2 razy
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
gogus



Dołączył: 27 Paź 2006
Posty: 61

PostWysłany: Poniedziałek, 5 Lipiec 2010, 18:53    Temat postu: Odpowiedz z cytatem

To nie do końca tak Very Happy
Mam na myśli tą formulę służącą znalezieniu stopa.Przede wszystkim są w niej błędy,spowodowane tym,ze trzeba to rozpisywać dość starannie a nie kopiować wszystko co się wynajdzie w sieci.Ale nawet gdyby konstrukcja była prawidłowa to w porównaniu do ilości możliwych parametrów stopów,wybór samego rodzaju stopa jest banalny.Tu nie chodzi o to żebyś optymalizował jakiego rodzaju stopa użyć,tylko o jakich parametrach.Drugą kwestią jest to,że nikt nie powiedział że strategia ma się opierać na tylko jednym rodzaju stopa.Poza wyjątkami,gdzie np stop oparty na zmienności,byłby zbędny w parze ze stopem początkowym procentowym,lub też w przypadku kilku innych wykluczających się kombinacji,z powodzeniem można stosować kilka rodzajów jednocześnie.Np.Stop początkowy,do tego trailing stop i do tego take profit.W niektórych strategiach jedynym stopem może być stop czasowy,a w niektórych czasowy połączony ze stop lossem.Tak więc sprytnie sobie wykombinowałeś żeby wybór przerzucić na maszynę,ale to nie tu powinieneś szukać.

Jeśli chodzi o te średnie z opisu,to podczas lektury tej książki też mnie to zainteresowało,jednak jak do tej pory nie prowadziłem takich obserwacji.Jedno jest pewne ,nawet jeśli taka metoda jest skuteczna to nie na każdym rynku i bardzo możliwe że nie koniecznie z takimi parametrami.Zanim wprowadzisz to w życie obejrzyj wykresy i zobacz czy w ogóle ma to szanse na powodzenie.A samo rozpisywanie(które pewnie nie będzie zaakceptowane ze względu na brak w formule cen z jakich maja być obliczane średnie),jest raczej dobrym rozwiązaniem,chyba lepszym niż używanie do tego celu cross,ale że sam tego nie sprawdzałem to pewności nie mam.Jeszcze tak mi właśnie przyszło do głowy że IIF z AND niekoniecznie musi działać,bo kiedyś miałem z tym problemy,ale być może w tym wypadku zadziała.
Generalnie zawsze zanim spróbuję cokolwiek testować sprawdzam formule czy nie ma błędów.Ale mimo wszystko chciałbym żebyś był świadom,że wiele razy program przyjmuje formule a mimo wszystko,przy backtescie nie postępuję tak jak sobie to zakładałeś.Dlatego dla pewności polecam Ci zawsze sprawdzanie przynajmniej kilku transakcji czy były zawarte zgodnie z Twoimi założeniami.
A to o czym mówisz na samym końcu to właśnie WFT.Do optymalizacji wykorzystuje się około 70% danych(in sample) a do testu około 30%(out of sample)
Pozdrawiam
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
johnyjj2



Dołączył: 28 Cze 2010
Posty: 11

PostWysłany: Wtorek, 6 Lipiec 2010, 0:44    Temat postu: Odpowiedz z cytatem

Dzięki za odpowiedź!

Co do optymalizacji konkretnych parametrów zleceń stop zamiast wyboru zlecenia stop, niewiele udało mi się znaleźć na ten temat. Większość artykułów omawia "stop loss" i "take profit", a na pewno rodzajów zleceń stop jest dużo więcej. Co mógłbyś polecić do zgłębienia swojej wiedzy na temat zleceń stop (zwłaszcza mnie interesują ruchome linie obrony, ale nie tylko)? Tymczasem, póki mi tej wiedzy brak, spróbowałem - po wprowadzeniu drobnych zmian do kodu, które naniosłem również w poprzednim poście - odpalić optymalizację wyboru zlecenia stop. Niestety, wygląda to tak, jakby dla każdego wyboru stopu dawał identyczne wyniki, co mnie zdziwiło. Coś tu nie pasuje. Swoją drogą, raczej nie można zagnieżdżać funkcji Optimize. Natomiast konstrukcja IIf(warunek, ApplyStop(...), 0) jest poprawna składniowo, choć nie jestem pewien, czy te dziwne wyniki nie są spowodowane tym, że nie działa ona tak, jak bym się tego spodziewał. No, ale nie mam pomysłu, jak by inaczej to zapisać. Trochę różni się w AFL składnia instrukcji warunkowej od tej, z którymi miałem do czynienia w zwykłych językach programowania.

Co do średnich zaś to książce Curtis Faitha "Way of the Turtle" znalazłem, że system kupuje i sprzedaje, kiedy szybka średnia ruchome przecina wolniejszą, ale tylko w kierunku wskazanym przez bardzo wolną średnią.

W dalszym ciągu nie do końca wiem, jak zaprogramować to czekanie na wybicie kursu ponad maksimum cenowe dnia, w którym następuje przecięcie średnich. Opisałem to pod koniec poprzedniego postu. Działać by to miało na przykład tak: środa - przecięcie średnich wskazujące na buy, czwartek - cena powyżej wczorajszego High, więc oba warunki spełnione i składam zlecenie.

Pozdrawiam!
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
gogus



Dołączył: 27 Paź 2006
Posty: 61

PostWysłany: Wtorek, 6 Lipiec 2010, 18:27    Temat postu: Odpowiedz z cytatem

Cześć.
Co do samych stopów to szukaj w sieci bo z samych książek ja sam nieszczególnie zbyt dużo wynalazłem.Nie skupiaj się na rozpisaniu jakiego stopa użyć bo to można zrobić ręcznie sprawdzając każdy po kolei.
Nie czytałem tej książki,ale osobiście jeśli chodzi o Żółwie to wole się skupiać na anty strategiach do ich koncepcji.

Posiedziałem chwile nad tym Twoim wybiciem.Poniżej wkleję Ci kod z tymi warunkami,z tym że jest jeden podstawowy problem.Do systemu trzeba wprowadzić jakieś ceny na których będzie on operował.Domyślam się,że ceną kupna ma być cena przy której dzisiejsze maksimum przebija wczorajsze.Ja jednak nie potrafię tego zrobić,a nie mam też za bardzo czasu żeby szukać rozwiązania.Pewnie jest proste.Rozpisałem Ci wiec z cena zamknięcia i na takiej podstawie zawiera transakcje.Wprowadziłem też stopy z ich optymalizacją i optymalizację średnich.Starałem się to opisać krok po kroku,żebyś mógł to użyć w przyszłości.Jest dość dużo kroków optymalizacji więc pewnie zajmie Ci ona kolo godziny.Nie ma gwarancji że wynik wyjdzie dobry.Gdyby był fatalny,możesz spróbować zmienić ceny na których operuje,zmienić rodzaj średnich bo proste nieszczególnie lubię,możesz zmienić zaangażowanie i pewnie jeszcze przy innych rzeczach pogrzebać.

[list]
////////Optymalizacja srednich//////

sr1=Optimize("srednia_szybka",10,10,20,2); //Optymalizacja szybkiej sredniej
sr2=Optimize("srednia_wolna",45,30,70,2); //Optymalizacja wolnej sredniej

///////Warunki wejscia////////////

Cond1=Cross(MA(Ref(Close,-1),sr1),MA(Ref(Close,-1),sr2)); //Przeciecie dwoch srednich dzien wczesniej
Cond2=H>Ref(H,-1); //Dzisiejsze maksimum wieksze od wczorajszego

////////// Kupno i sprzedaz////////

Buy=Cond1 AND Cond2;
Sell=0; //jesli warunkiem sell jest 0 to znaczy ze warunkiem sprzedazy sa tylko stopy

/////////Wielkosc pozycji///////

PositionSize=-25; //Wielkosc ustalona na 25% wartosci portfela

//////////////Optymalizacja stopow///////////

SL=Optimize("stop_poczatkowy",5,5,12,1); //optymalizacja stopa poczatkowego
TS=Optimize("trailing_stop",6,6,12,1); //optymalizacja trailing stopa
TP=Optimize("take_profit",15,15,30,5); //optymalizacja stopa kasujacego zyski

//////////Stopy//////////

ApplyStop(stopTypeLoss,stopModePercent,SL,1,0,0); //stop poczatkowy
ApplyStop(stopTypeTrailing,stopModePercent,TS,1,0,0); //trailing stop
ApplyStop(stopTypeProfit,stopModePercent,TP,1,0,0); //take profit

////////Pozostale warunki////////

SetOption("initialequity",10000); //kapital poczatkowy
SetOption("activatestopsimmediately",False); //rodzaj odpalania stopow
SetOption("futuresmode",False); //tryb futures wylaczony
SetOption("Minposvalue",1400); //min pozycja za kwote 1400 ze wzgledu na prowizje
SetOption("commissionmode",1); //rodzaj prowizji(procentowy)
SetOption("commissionamount",0.39); //wartosc prowizji
BuyPrice=SellPrice=Close; //ceny na jakich ma operowac
SetTradeDelays(0,0,0,0); //przesuniecia zajmowania i wychodzenia z pozycji wylaczone

Sprawdzałem tylko warunki zajmowania pozycji i to się zgadza.Resztę byś musiał sprawdzić ale nie powinno być błędów.Rysowanie sobie rozpisz sam,bo to też trochę czasu zajmuje.
Pozdrawiam
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość Wyślij email
johnyjj2



Dołączył: 28 Cze 2010
Posty: 11

PostWysłany: Wtorek, 6 Lipiec 2010, 23:14    Temat postu: Odpowiedz z cytatem

Dzięki za odpowiedź!

Automatyczna aktywacja zleceń stop.
Zastanawiam się, dlaczego ustaliłeś Activate Stops Immediately na False. Stopy mają to do siebie, że automatycznie zamykają mi pozycję, jeśli cena spadnie do wartości zlecenia stop. Czyli są one aktywowane natychmiastowo. Natomiast gdy wartość AST jest na False, to jak rozumiem są one odpalane następnego dnia, czyli nie mają większego sensu, bo i tak co dzień wieczór samemu mogę sobie zamykać niechciane pozycje grając EOD.

Poślizg cenowy.
A jak w tych pozostałych warunkach uwzględnich slippage, czyli poślizg? Czy może po prostu zwiększyć prowizję z 0,39 do np. 0,45 i tak oto w sztuczny sposób "stracić" trochę pieniędzy, symulując dzięki temu poślizg. Zresztą najlepiej grać tam, gdzie poślizg jest najmniejszy, więc może dobrze będzie, jeśli będę tworzyć system nie pod wszystkie akcje, ale np. tylko dla WIG20 i mWIG40?

Cena kupna, a zlecenie aktywujące.
"Domyślam się, że ceną kupna ma być cena przy której dzisiejsze maksimum przebija wczorajsze". Nie widzę, żebyś gdziekolwiek ustawiał buyprice, czyli jak rozumiem domyślną wartością jest buyprice = Close. Dajmy na to, że miałbym już gotowy system. Wtedy w nim byłby tylko pierwszy warunek, wykonywałbym Scan i dla tych akcji, które sugeruje mi kupić, ustalał zlecenie aktywujące (jak się domyślam jest to standardowa funkcja w panelu on-line dowolnego biura maklerskiego) na cenę równą High w danym dniu. Jeśli cena waloru następnego dnia przekroczy wczorajszy High, zlecenie aktywujące zostanie odpalone i w krótkim czasie (związanym z poślizgiem cenowym, czyli tym, że ktoś musi chcieć sprzedać tyle, ile ja chcę kupić oraz że są inni chętni do kupna w kolejce) nabędę daną akcję. Żeby jednak przetestować taki system, potrzebuję drugiego warunku (Cond2), gdyż nie wiem, jak ustawić zlecenie aktywujące w AmiBrokerze. W związku z tym odrobinę się spóźniam ze złożeniem zlecenia, ponieważ w powyższym kodzie składam je po zamknięciu sesji, zaś domyślnie chciałbym, aby zostało ono złożone przez zlecenie aktywujące przed zamknięciem sesji. Piszesz też o "cenie, przy której dzisiejsze maksimum przebija wczorajsze". No to przebija ono wczorajsze właśnie w tym momencie, w którym w dniu dzisiejszym zostanie osiągnięte to, co było wczorajszym maksimum. Czyli nie wystarczyłoby po prostu napisać buyprice = Ref(H,-1)? Czy podobnie myślałeś, co ja w kwestii, o której właśnie napisałem?

Wyszukiwanie pozycji zlecenia stop przez system i jego aktywacja w rzeczywistym tradingu.
Jak to jest ze stosowaniem stopów z systemu transakcyjnego w rzeczywistym inwestowaniu? Jak się domyślam, podczas optymalizacji stopy są zmieniane tylko pomiędzy sesjami, a nie w trakcie, skoro zamierzam stworzyć system EOD? Skoro wybierając "Scan", aby system transakcyjny mi wskazał, co mam kupować lub sprzedawać, pokazuje mi odpowiednie walory i akcję, którą mam wykonać, to jak mam ustawić, aby oprócz tego podawał mi też, jaką wartość stopu mam ustawić zaraz po złożeniu zlecenia kupna? Czy w rzeczywistym tradingu taką wartość mogę ustawić od razu po złożeniu zlecenia kupna, czy dopiero po zrealizowaniu zlecenia?

Pozdrawiam!
Powrót do góry
Ogląda profil użytkownika Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Giełda, inwestowanie w akcje, fundusze inwestycyjne i inne rynki Strona Główna -> Dla początkujących Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


Powered by phpBB © 2001, 2005 phpBB Group

Kontakt
WorldSEO Business Centre
Daniel Burzawa
73-110 Stargard Szczeciński, Al. Żołnierza 19/4
NIP: 854-211-64-99
Telefon kontaktowy: +48 661 574 609
Email: kontakt@naparkiecie.pl

Polecamy strony: Franczyza | Dabu.pl - Ranking Informacji

W celu wyświetlania reklam w trakcie Twojej wizyty w naszej witrynie korzystamy z usług zewnętrznych firm reklamowych (m.in. Google). Pliki cookie DART umożliwiają Google wyświetlanie użytkownikom konkretnych reklam na podstawie ich wizyt na tej oraz innych witrynach internetowych. Firmy te mogą wykorzystywać informacje (z wyłączeniem imienia i nazwiska, adresu, adresu e-mail i numeru telefonu) związane z Twoimi wizytami w tej oraz innych witrynach do wyświetlania reklam towarów i usług, które mogą Cię zainteresować. Wejdź na http://www.networkadvertising.org, aby uzyskać więcej informacji na ten temat oraz dowiedzieć się, w jaki sposób możesz uniknąć wykorzystania informacji przez te firmy lub na http://www.google.com/privacy_ads.html, aby zrezygnować z używania plików cookie DART.