Statystyka MT4- wskaźnik wspomagający handel
Statystyka mt4- nie jest to termin, który często się przewija wśród traderów. Głównie dlatego, że możliwości MetaTrader4 wielu kojarzy przede wszystkim z Expert Advisorami oraz wskaźnikami typu RSI, czy MACD. Z kolei Ci, którzy maja zacięcie statystyczne, z reguły kierują się w stronę Excela, albo w kierunku języka R, bądź Pythona. Jest to całkowicie zrozumiałe. Excel – popularny jest wśród analityków biznesowych – a wspomniane wyżej języki programowania – u analityków danych.
Panuje także przekonanie, że platformy firmy MetaQuotes są dobre do analizowania ruchów ceny, a nie do jakiejś głębszej analizy statystycznej. Czy tym krótkim wpisem, chciałbym zburzyć ten pogląd? Z pewnością chcę zburzyć część mitów co do samej platformy, jednocześnie muszę uważać, by nie stworzyć żadnych nowych. Po prostu powiedzieć jak jest 🙂 Oczywiście, że lepiej analizować dane w programach, które są bardziej rozbudowane, niż konkretny język pod daną platformę. Jednakże, uważam że warto wykorzystać język MQL do statystyki, jeśli po prostu handlujesz na którejś z platform MetaTrader.
Tworzenie wskaźnika w MetaTrader4
Tworząc jakiekolwiek wskaźniki, dokonujesz obliczeń – po prostu. Nie ma to znaczenia, czy handlujesz w oparciu o daną formację analizy technicznej, czy nie. Możesz stworzyć wskaźnik, który sprawdzi, jaki dzień tygodnia jest z reguły wzrostowy. W ten sposób uchyliłem rąbka tajemnicy, jak został skonstruowany wskaźnik.
Punktem odniesienia jest wykres dzienny. To właśnie na wykresie D1 wskaźnik prezentuje prawidłowe wartości. Dzięki funkcji DayOfWeek(), jestem w stanie stwierdzić, jaki dzień tygodnia występuje w danej chwili na instrumencie. Korzystając z pętli 'for’ po kolei sprawdzam i zliczam wszystkie świece z danych dni tygodnia. Następnie porównuje wzrostowe świece ze wszystkimi i tak powstaje wynik.
W powyższym przykładzie można zauważyć, że wykorzystując dane od danego brokera można stwierdzić, że na tej platformie 56.19% poniedziałków kończyło się wzrostem pary walutowej EURUSD.
Statystyka MT4 – budowa wskaźnika
Aby wykorzystać ten wskaźnik w tradingu, wystarczy otworzyć „Nowy” plik w MetaEditorze, wybrać „standardowy wskaźnik” i nadać mu nazwę. Następnie wystarczy skopiować poniższy kod i skompilować:
//+------------------------------------------------------------------+
//| Statystyka tygodniowa.mq4 |
//| Krzysztof Kamiński |
//| https://www.QuantTrader.pl/ |
//+------------------------------------------------------------------+
#property copyright "Krzysztof Kamiński"
#property link "https://www.QuantTrader.pl/"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1 80
#property indicator_level2 60
#property indicator_level3 40
#property indicator_level4 20
#property indicator_level5 0
#property indicator_levelwidth 1
#property indicator_levelstyle STYLE_DOT
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//--- five levels
IndicatorSetInteger(INDICATOR_LEVELS,5);
//--- set descriptions of horizontal levels
IndicatorSetString(INDICATOR_LEVELTEXT,0,"Poniedziałek: ");
IndicatorSetString(INDICATOR_LEVELTEXT,1,"Wtorek: ");
IndicatorSetString(INDICATOR_LEVELTEXT,2,"Środa: ");
IndicatorSetString(INDICATOR_LEVELTEXT,3,"Czwartek: ");
IndicatorSetString(INDICATOR_LEVELTEXT,4,"Piątek: ");
//--- set the short name for indicator
IndicatorSetString(INDICATOR_SHORTNAME,"Statystyki tygodniowe");
//--- set clrBlue color for all levels
IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrRed);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
int count_Monday=0;
double count_Monday_up=0;
int count_Tuesday=0;
double count_Tuesday_up=0;
int count_Wednesday=0;
double count_Wednesday_up=0;
int count_Thursday=0;
double count_Thursday_up=0;
int count_Friday=0;
double count_Friday_up=0;
//poniedziałek
for(int i=0; i<Bars; i++)
{
int day = TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i));
if(day==1)
{
count_Monday++;
if(iClose(Symbol(),PERIOD_D1,i)>iOpen(Symbol(),PERIOD_D1,i))
count_Monday_up++;
}
}
double procen_wzros_pon = count_Monday_up/count_Monday;
procen_wzros_pon*=100;
//wtorek
for(int i=0; i<Bars; i++)
{
int day = TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i));
if(day==2)
{
count_Tuesday++;
if(iClose(Symbol(),PERIOD_D1,i)>iOpen(Symbol(),PERIOD_D1,i))
count_Tuesday_up++;
}
}
double procen_wzros_wto = count_Tuesday_up/count_Tuesday;
procen_wzros_wto*=100;
//środa
for(int i=0; i<Bars; i++)
{
int day = TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i));
if(day==3)
{
count_Wednesday++;
if(iClose(Symbol(),PERIOD_D1,i)>iOpen(Symbol(),PERIOD_D1,i))
count_Wednesday_up++;
}
}
double procen_wzros_sro = count_Wednesday_up/count_Wednesday;
procen_wzros_sro*=100;
//czwartek
for(int i=0; i<Bars; i++)
{
int day = TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i));
if(day==4)
{
count_Thursday++;
if(iClose(Symbol(),PERIOD_D1,i)>iOpen(Symbol(),PERIOD_D1,i))
count_Thursday_up++;
}
}
double procen_wzros_czw = count_Thursday_up/count_Thursday;
procen_wzros_czw*=100;
//piątek
for(int i=0; i<Bars; i++)
{
int day = TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i));
if(day==5)
{
count_Friday++;
if(iClose(Symbol(),PERIOD_D1,i)>iOpen(Symbol(),PERIOD_D1,i))
count_Friday_up++;
}
}
double procen_wzros_pia = count_Friday_up/count_Friday;
procen_wzros_pia*=100;
IndicatorSetString(INDICATOR_LEVELTEXT,0,"Poniedziałek wzrosty: "+DoubleToString(procen_wzros_pon,2)+"%");
IndicatorSetString(INDICATOR_LEVELTEXT,1,"Wtorek wzrosty: "+DoubleToString(procen_wzros_wto,2)+"%");
IndicatorSetString(INDICATOR_LEVELTEXT,2,"Środa wzrosty: "+DoubleToString(procen_wzros_sro,2)+"%");
IndicatorSetString(INDICATOR_LEVELTEXT,3,"Czwartek wzrosty: "+DoubleToString(procen_wzros_czw,2)+"%");
IndicatorSetString(INDICATOR_LEVELTEXT,4,"Piątek wzrosty: "+DoubleToString(procen_wzros_pia,2)+"%");
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
Statystyka tygodniowa – wady i zalety
Zaleta stworzonego wskaźnika jest oczywista. Można w bardzo szybki sposób określić, czy np. w poniedziałki częściej dochodzi do wzrostów, czy spadków badanego instrumentu. Jeśli prezentowany wynik jest poniżej 50%, tzn. że częściej dochodziło do spadków, niż wzrostów danego dnia. Warto pamiętać, że informacje prezentowane we wskaźniku dotyczą przeszłości. Oznacza to, że nie ma żadnej gwarancji, iż w przyszłości te wyniki miałyby się utrzymać.
Dodatkowo, gdy mowa o statystyce, to warto pamiętać także o pewnej kwestii. Nawet, jeśli dany dzień tygodnia jest w 60, 70, czy nawet 80% dniem wzrostowym, to jeszcze nic nie znaczy. Może bowiem dojść do takiej sytuacji, że 8 na 10 razy świeca dzienna wychodzi na niewielki plus, podczas gdy 2 razy odnotowuje znaczącą stratę. Wówczas ryzyko jest spore. Także nie należy tego odbierać, jako „Świętego Graala”, bo z pewnością nim nie jest. Jest to narzędzie, które pozwala dokonać pewnych obserwacji i następnie wyciągnąć własne wnioski.
Statystyka MT4 – podsumowanie
Wskaźnik prezentuje tylko i wyłącznie informacje o wzrostach poszczególnych dni tygodnia wyrażonych w procentach. Rzecz jasna nie jest to wskaźnik, który gwarantuje jakiekolwiek sukcesy. Prawdę powiedziawszy, to żaden takowych nie daje. Wskaźnik ten uznaje za pewien wstęp do głębszego poznania języka MQL4 na platformie MetaTrader4.
Jeśli handlujesz na platformie MetaTrader i wykorzystujesz dane z platformy do własnych obliczeń oraz spostrzeżeń, to warto w tym samym miejscu zastanowić się nad analizą danych. Oczywiście, jeśli potrzebujesz zbadać obszary, których nie jesteś w stanie w MQL, poza tym czujesz się dobrze w innych narzędziach, jak np. Jupyter Notebook, to świetnie. To po prostu działaj. Jeśli natomiast interesuje Cię statystyka, a MT4 wykorzystujesz do handlu, to możesz naprawdę wiele zdziałać bez zamykania platformy. Nie wiesz jak się za to zabrać? Możesz skorzystać z promocji i zapisać się na poniższy kurs.