ninjaproject pisze: ↑27 kwie 2022, 00:16
To się nie tak robi...
Kod: Zaznacz cały
input int MA_m1_timeframe = PERIOD_M1;
input int MA_m1_period=30;
input int MA_m1_mashift=0; /* to jest tzw. offset, wyprzedzenie, lub opóźnienie */
input ENUM_MA_METHOD MA_m1_method=MODE_SMA;
input ENUM_APPLIED_PRICE MA_m1_applied_price=PRICE_CLOSE;
input int MA_m1_shift=0; /* 0 oznacza świecę bieżącą */
double SMA_m1,SMA_m5,SMA_m15,SMA_m30,SMA_H1;
void OnTick()
{
//--- SMA: deklaracja
SMA_m1 = iMA(_Symbol,MA_m1_timeframe,MA_m1_period,MA_m1_mashift,MA_m1_method,MA_m1_applied_price,MA_m1_shift);
Print("Srednia krocząca m1 z okresu ",MA_m1_period," = ",SMA_m1);
}
Zrobiłem jedną, ty sobie zrób resztę.
PS. Alert() nie działa w testerze strategii.
No i odpaliłem twój kod i działa zupełnie tak samo jak to, co ja naskrobałem...
Poza możliwością wprowadzenia zmiennych input.
Mode_SMA ma przypisane wartości od 0 do 6 chyba
Ale bardzo interesujące zagadnienie się tutaj pojawiło w międzyczasie.
Bo widzę, że double SMA zadeklarowałeś poza onTick
Nad tym się głowiłem właśnie. Nie wiedziałem, że tak w ogóle można. Widzę że są przesłanki by faktycznie tak zrobić w zasadzie.
Zadeklarować w globalnych a ustawić w onTick. Sprytne
Ogólnie rzecz biorąc, na moją niewielką wiedzę i na chłopski rozum, zdecydowałem większość tego co mam ustawić w onTick.
Raczej ze względu na to, że w sytuacjach, kiedy strategie będzie miała działać, decydująca będzie zdecydowana reakcja na zdarzenie.
Czy to ma wielkie znaczenie, wyrobi MT4 w ogóle takie coś?
Deklaracja zmiennych pod onTick będzie miała znaczenie, jeśli tych zmiennych nie użyję w innych void?