Project-Runway / TA-Lib

TA-Lib
http://projekt-stats.esy.es/
0 stars 1 forks source link

INFO: Jak testować cdl...Lookbacki #10

Open XubeiX opened 9 years ago

XubeiX commented 9 years ago

Metody te przeważnie wyglądają tak:

przechwytywanie

Jest to inna forma zapisu warunku IF then else. W linku poniżej jest przykład z zamianą. http://www.cafeaulait.org/course/week2/43.html

Zapis ten określa się jako: warunek ? true : false

By przetestować taki lookback trzeba postępować następująco. 1.Sprawdzić jak wygląda nasz lookback (screen powyżej) znajdziecie go w klasie Core na branchu developers. 2.Sprawdzić jak rozkładają się nawiasy. Bo trochę ich jest. W moim przypadku nawiasy te rozkładają się w następujący sposób.

( ( ((a))> ((b)) ) ? ((x)) : ((y)) ) +2;

Czyli niezależnie od warunku do wyniku końcowego zawsze zostanie dodane +2.

3.Stworzyć nowy obiekt Core(). Core c1 = new Core();

4.Zmienić ustawienie CandleSettings na własne, zależne od tego z których korzysta nasz lookback. Musimy znów popatrzeć w nasz screen przechwytywanie

widzimy tam takie zapisy: this.candleSettings[CandleSettingType.BodyShort.ordinal()].avgPeriod this.candleSettings[CandleSettingType.BodyLong.ordinal()].avgPeriod

zwracamy na uwagę jaki CandleSettingType występuje w nawiasach []. a jest to: CandleSettingType.BodyShort CandleSettingType.BodyLong

tym typom przypiszemy nową własną wartość avgPeriod gdyż to ona jest brana pod uwagę w lookbacku. Nasz if lookbackowy wygląda więc tak

(BodyShort.avgPeriod > BodyLong.avgPeriod ? BodyShort.avgPeriod : BodyLong.avgPeriod ) + 2

Teraz przypisujemy nową wartość avgPeriod dla obu CandleSettingType

RetCode r = c1.SetCandleSettings(CandleSettingType.BodyShort, RangeType.HighLow, 6, 10.0); RetCode r1 = c1.SetCandleSettings(CandleSettingType.BodyLong, RangeType.HighLow, 2, 10.0);

Dla BodyShort ustawiam wartość na 6 a dla BodyLong na 2. if ma więc postać (6>2) ? (6 : 2)+2; 6 > 2 to prawda zwrócone więc zostanie 6 oraz +2 poza nawiasem czyli zwróci nam 8;

Czyli sprawdzamy to: assertEquals(6+2, c1.cdl3InsideLookback());

5.By przetestować to w 100% trzeba odwrócić ten warunek. Czyli znów zmienić wartości dla BodyShort i BodyLong

r = c1.SetCandleSettings(CandleSettingType.BodyShort, RangeType.HighLow, 2, 10.0); r1=c1.SetCandleSettings(CandleSettingType.BodyLong, RangeType.HighLow, 8, 10.0);

2>8 nie jest wykona się więc false czyli u nas zwróci 8 oraz +2 poza nawiasem. Czyli zwraca 10;

Sprawdzamy to: assertEquals(8+2, c1.cdl3InsideLookback());

Tak oto wygląda cały test: przechwytywanie2

to +2 dlatego, że za nawiasem w lookback jest +2.

Draginek commented 9 years ago

Ehe, a jak ktoś ma ciut więcej parametrów, to co teraz? ;p ​

W dniu 7 czerwca 2015 14:44 użytkownik Artur Ratajczak < notifications@github.com> napisał:

Metody te przeważnie wyglądają tak:

[image: przechwytywanie] https://cloud.githubusercontent.com/assets/9266046/8023920/eb703f3c-0d20-11e5-9ada-d030e2d005df.PNG

Jest to inna forma zapisu warunku IF then else. W linku poniżej jest przykład z zamianą. http://www.cafeaulait.org/course/week2/43.html

Zapis ten określa się jako: warunek ? true : false

By przetestować taki lookback trzeba postępować następująco. 1.Sprawdzić jak wygląda nasz lookback (screen powyżej) znajdziecie go w klasie Core na branchu developers. 2.Sprawdzić jak rozkładają się nawiasy. Bo trochę ich jest. W moim przypadku nawiasy te rozkładają się w następujący sposób.

( ( ((a))> ((b)) ) ? ((x)) : ((y)) ) +2;

Czyli niezależnie od warunku do wyniku końcowego zawsze zostanie dodane +2.

3.Stworzyć nowy obiekt Core(). Core c1 = new Core();

4.Zmienić ustawienie CandleSettings na własne, zależne od tego z których korzysta nasz lookback. Musimy znów popatrzeć w nasz screen [image: przechwytywanie] https://cloud.githubusercontent.com/assets/9266046/8023920/eb703f3c-0d20-11e5-9ada-d030e2d005df.PNG

widzimy tam takie zapisy: this.candleSettings[CandleSettingType.BodyShort.ordinal()].avgPeriod this.candleSettings[CandleSettingType.BodyLong.ordinal()].avgPeriod

zwracamy na uwagę jaki CandleSettingType występuje w nawiasach []. a jest to: CandleSettingType.BodyShort CandleSettingType.BodyLong

tym typom przypiszemy nową własną wartość avgPeriod gdyż to ona jest brana pod uwagę w lookbacku. Nasz if lookbackowy wygląda więc tak

(BodyShort.avgPeriod > BodyLong.avgPeriod ? BodyShort.avgPeriod : BodyLong.avgPeriod ) + 2

Teraz przypisujemy nową wartość avgPeriod dla obu CandleSettingType

RetCode r = c1.SetCandleSettings(CandleSettingType.BodyShort, RangeType.HighLow, 6, 10.0); RetCode r1 = c1.SetCandleSettings(CandleSettingType.BodyLong, RangeType.HighLow, 2, 10.0);

Dla BodyShort ustawiam wartość na 6 a dla BodyLong na 2. if ma więc postać (6>2) ? (6 : 2)+2; 6 > 2 to prawda zwrócone więc zostanie 6 oraz +2 poza nawiasem czyli zwróci nam 8;

Czyli sprawdzamy to: assertEquals(6+2, c1.cdl3InsideLookback());

5.By przetestować to w 100% trzeba odwrócić ten warunek. Czyli znów zmienić wartości dla BodyShort i BodyLong

r = c1.SetCandleSettings(CandleSettingType.BodyShort, RangeType.HighLow, 2, 10.0); r1=c1.SetCandleSettings(CandleSettingType.BodyLong, RangeType.HighLow, 8, 10.0);

2>8 nie jest wykona się więc false czyli u nas zwróci 8 oraz +2 poza nawiasem. Czyli zwraca 10;

Sprawdzamy to: assertEquals(8+2, c1.cdl3InsideLookback());

Tak oto wygląda cały test: [image: przechwytywanie2] https://cloud.githubusercontent.com/assets/9266046/8023998/abbeef70-0d23-11e5-8883-3f23e8c3c625.PNG

— Reply to this email directly or view it on GitHub https://github.com/Project-Runway/TA-Lib/issues/10.