Dax/Nasdaq Daytrading

Miejsce, gdzie każdy może prowadzić swój własny dziennik gry na FX.
Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
26 kwie 2022, 10:40

Oczywiście, że jest.
Są wszystkie domyślne wskaźniki w MT4:
https://docs.mql4.com/indicators/

I jest jeszcze iCustom() dla dowolnego wsklaźnika:
https://docs.mql4.com/indicators/icustom

Dzięki!

Jak tak dalej pójdzie to wszystko zrobię z gotowców.
Jednak jestem już stary: wszystko bym rozpisywał ręcznie :D

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: ninjaproject »

Mistyfikator pisze:
26 kwie 2022, 16:12
ninjaproject pisze:
26 kwie 2022, 10:40

Oczywiście, że jest.
Są wszystkie domyślne wskaźniki w MT4:
https://docs.mql4.com/indicators/

I jest jeszcze iCustom() dla dowolnego wsklaźnika:
https://docs.mql4.com/indicators/icustom

Dzięki!

Jak tak dalej pójdzie to wszystko zrobię z gotowców.
Jednak jestem już stary: wszystko bym rozpisywał ręcznie :D
Świetny pomysł!
Nie trzeba wynajdywać koła od nowa.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
26 kwie 2022, 16:16

Świetny pomysł!
Nie trzeba wynajdywać koła od nowa.
Pełna zgoda. Nawet wychodzi, że moja strategia jest tak banalnie prosta, że przytłaczająca większość tego co w documentation się absolutnie nie przyda.
BTW obszerne jest documentation, dobrze to przeczytać, zrozumieć i zapamiętać. Jednak dla laika jak ja, wymaga to trochę czasu.

***

Zmienne mam, teraz instrukcje warunkowe.

I tutaj też coś nie tak:

Kod: Zaznacz cały

if(BID>SMA_m1) { OP_BUY;}
Dlaczego nie działa?
Zmienne zadeklarowane, próbowałem też innych operatorów (Order Select()).

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: ninjaproject »

Mistyfikator pisze:
26 kwie 2022, 19:59
ninjaproject pisze:
26 kwie 2022, 16:16

Świetny pomysł!
Nie trzeba wynajdywać koła od nowa.
Pełna zgoda. Nawet wychodzi, że moja strategia jest tak banalnie prosta, że przytłaczająca większość tego co w documentation się absolutnie nie przyda.
BTW obszerne jest documentation, dobrze to przeczytać, zrozumieć i zapamiętać. Jednak dla laika jak ja, wymaga to trochę czasu.

***

Zmienne mam, teraz instrukcje warunkowe.

I tutaj też coś nie tak:

Kod: Zaznacz cały

if(BID>SMA_m1) { OP_BUY;}
Dlaczego nie działa?
Zmienne zadeklarowane, próbowałem też innych operatorów (Order Select()).
Pierwsza rzecz, to w MT4 nie potrzeba definiować BID, wystarczy dać .
To już zwraca cenę aktualną Bid.

Druga, to OP_BUY jest typem zlecenia, a nie zmienną.

Kod: Zaznacz cały

int type;
if(Bid>SMA_m1) {type=OP_BUY;}
Dalej, odnośnie składania zlecenia, to OrderSend().
Tylko trzeba pamiętać, żeby ceny SL i TP oraz ew. zleceń oczekujących normalizować tak:

Kod: Zaznacz cały

double StopLoss=NormalizeDouble(cenaSL,_Digits);
A OrderSelect() to potem, dla obsługi już istniejących pozycji.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
26 kwie 2022, 20:31

Pierwsza rzecz, to w MT4 nie potrzeba definiować BID, wystarczy dać .
To już zwraca cenę aktualną Bid.

Druga, to OP_BUY jest typem zlecenia, a nie zmienną.

Kod: Zaznacz cały

int type;
if(Bid>SMA_m1) {type=OP_BUY;}
Dalej, odnośnie składania zlecenia, to OrderSend().
Tylko trzeba pamiętać, żeby ceny SL i TP oraz ew. zleceń oczekujących normalizować tak:

Kod: Zaznacz cały

double StopLoss=NormalizeDouble(cenaSl,_Digits);
A OrderSelect() to potem, dla obsługi już istniejących pozycji.

Stokrotne dzięki Ninjaproject, bardzo przyspieszyłeś moje działania
Wiem, że mam tyły straszne. Oczywiście będę się uczył całej dokumentacji po kolei, ale na razie priorytetem jest uruchomienie EA działającego wg zasad, które opisałem.

Jakby nie patrzeć, jeszcze 2 tygodnie temu spodziewałem się, że jest więcej dłubania.
Świadczy to o tym, że moje pojęcie o programowaniu stanęło na epoce lat 80-ych.
Ale to nic, napisanie takiego prostego EA jest dobrym pretekstem, aby coś z tym ruszyć

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: Mistyfikator »

Powiem tak, są funkcje dla średnich kroczących.
Niestety znajduję takie kwiatki:
2022-04-26 at 22-42-58.png
Ewidentnie niewłaściwie obliczona średnia w niektórych momentach. Zdarzają się wartości z doopy, np 127.5 przy SMA30 dla M15 przy NASDAQ100.

Czy to jest błąd na etapie ALERT?
Bo boję się zaufać takiej "automatyzacji"

Po przemyśleniach:
Z drugiej strony, obniżenie kryteriów poprzez pojawienie się nienaturalnie niskich wartości SMA spowoduje co najwyżej zwiększenie liczby wejść, a zasadniczo powinno być kilkadziesiąt sygnałów dziennie. I to jest absolutne minimum.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: ninjaproject »

Mistyfikator pisze:
26 kwie 2022, 22:47
Powiem tak, są funkcje dla średnich kroczących.
Niestety znajduję takie kwiatki:

2022-04-26 at 22-42-58.png

Ewidentnie niewłaściwie obliczona średnia w niektórych momentach. Zdarzają się wartości z doopy, np 127.5 przy SMA30 dla M15 przy NASDAQ100.

Czy to jest błąd na etapie ALERT?
Bo boję się zaufać takiej "automatyzacji"
Pierwsze, to nie ma potrzeby robić kontroli poprzez Alert().
Rób kontrolę przez Print(), a odczyt masz w zakładce Strategie w Terminal.
No i też masz dostęp do pliku log.

Drugie, to nie wiem jak ci z tym pomóc, jeżeli nie mam kodu i sam nie widzę co ew. namieszałeś, albo w czym problem może być. Pobierając dane z buforów wskaźnika nie ma opcji źle obliczonej średniej. Raczej bym stawiał na błąd programisty w samym EA.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: Mistyfikator »

ninjaproject pisze:
26 kwie 2022, 23:25

Pierwsze, to nie ma potrzeby robić kontroli poprzez Alert().
Rób kontrolę przez Print(), a odczyt masz w zakładce Strategie w Terminal.
No i też masz dostęp do pliku log.

Drugie, to nie wiem jak ci z tym pomóc, jeżeli nie mam kodu i sam nie widzę co ew. namieszałeś, albo w czym problem może być. Pobierając dane z buforów wskaźnika nie ma opcji źle obliczonej średniej. Raczej bym stawiał na błąd programisty w samym EA.
Już znalazłem przyczynę!
W kodzie wszystko działało wcześniej, stąd moje zmieszanie:

Kod: Zaznacz cały

void OnTick()
   
{

  //--- SMA: deklaracja

double SMA_m1 = iMA(NULL,1,30,0,0,0,0);
double SMA_m5 = iMA(NULL,5,30,0,0,0,0);
double SMA_m15 = iMA(NULL,15,30,0,0,0,0);
double SMA_m30 = iMA(NULL,30,30,0,0,0,0);
double SMA_H1 = iMA(NULL,60,30,0,0,0,0);

   Print("Srednia krocząca m1 z okresu 30 =" , SMA_m1);
   Print("Srednia krocząca m5 z okresu 30 =" , SMA_m5);
   Print("Srednia krocząca m15 z okresu 30 =" , SMA_m15);
   Print("Srednia krocząca m30 z okresu 30 =" , SMA_m30);
   Print("Srednia krocząca H1 z okresu 30 =" , SMA_H1);
   
 } 
 
  

Z iMa nie byłem pewny 4 i 7 parametru, ale podejrzewam, że to przesunięcie okresu dla obliczeń SMA w czasie.

Ale fajna rada z Print. Alerty są denerwujące, nawet jeśli - jak w tym przypadku miały służyć tylko do testów.

P.S. Wiem, że to powyżej da się zapisać krócej :)
Ale takie tematy, to zostawię na później

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: ninjaproject »

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.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Mistyfikator
Pasjonat
Pasjonat
Posty: 932
Rejestracja: 05 lip 2021, 20:35

Re: Dax/Nasdaq Daytrading

Nieprzeczytany post autor: Mistyfikator »

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?
Ostatnio zmieniony 27 kwie 2022, 00:46 przez Mistyfikator, łącznie zmieniany 1 raz.

Zablokowany