„Niniejsza prezentacja jest efektem wspólnych prac Domu Maklerskiego TMS Brokers S.A. oraz Pana Tomasza
Waszczyka
Materiały zawarte w niniejszej prezentacji mają charakter edukacyjny i nie stanowią działalności
maklerskiej polegającej na doradztwie inwestycyjnym lub wydawaniu rekomendacji o charakterze ogólnym.
Zaprezentowane podczas warsztatów (w tym w niniejszej prezentacji) algorytmy mają charakter jedynie
poglądowy w celu zobrazowania i nauki języka programowania modułu Expert Advisor dla systemu
transakcyjnego MetaTrader. Korzystając z algorytmów klient powinien mieć na względzie, że:
1. Klient wykorzystuje mechanizmy algorytmiczne na własne ryzyko i odpowiedzialność.
2. Klient ponosi pełną odpowiedzialność za straty lub utracone korzyści związane z realizacją zleceń za
pomocą mechanizmów algorytmicznych. Dotyczy to także prowizji, jakie Klient będzie zobowiązany pokryć w
związku z transakcjami, które będą zawierane w oparciu o algorytm, nawet przy ich znacznej ilości.
3. Klient odpowiada za opóźnione wygenerowanie lub niewygenerowanie lub błędne wygenerowanie zleceń za
pomocą mechanizmów algorytmicznych. W szczególności Klient ponosi odpowiedzialność za ww. zdarzenia
powstałe w wyniku błędów w oprogramowaniu mechanizmów algorytmicznych.
4. Nie można zagwarantować osiągnięcia określonego wyniku finansowego na transakcjach zawartych z
wykorzystaniem mechanizmów algorytmicznych.
5. Transakcje realizowane za pomocą mechanizmów algorytmicznych traktowane są jako transakcje zawierane
przez Klienta.
6. Składanie, usuwanie lub modyfikowanie zleceń z wykorzystaniem mechanizmów algorytmicznych traktowane
jest jako zlecenia złożone przez Klienta.
7. W wersji webowej oraz mobilnej systemu transakcyjnego może nie istnieć możliwość uruchomienia
strategii automatycznych.
8. Wszelkie przykładowe strategie algorytmiczne zaprezentowane w czasie niniejszego szkolenia mają
jedynie charakter edukacyjny i nie powinny być stosowne na rachunkach rzeczywistych.
Dom Maklerski TMS Brokers S.A. podlega nadzorowi Komisji Nadzoru Finansowego i prowadzi działalność
maklerską na podstawie zezwolenia z dnia 26 kwietnia 2004 r. (KPWiG-4021-54-1/2004). Kontakt: Skylight
Ul. Złota 59; 00-120 Warszawa, Polska; Tel.: +48 22 27 66 200”
Agenda
- Metody ustawiania zlecenia stop loss
- Zarzadzanie portfelem - wielkość pozycji
- Zmienne predefiniowane
- Architektura MetaTrader
- Zmiana przedziału czasowego
- Zaktualizowany MQL
- Engulfing pattern w MQL
- Jakie IDE do MQL?
- Gdzie szukać pomocy technicznej
- Wersjonowanie naszych automatów
- . . .
Metody ustawiania SL
int liczbaSwiec = 10;
int LowestShift = iLowest(NULL,0,MODE_LOW,liczbaSwiec,0);
double BuyStopLoss = Low[LowestShift];
Alternatywny sposób ustawiania SL - Parabolic SAR
SAR(i) = SAR(i-1)+PRZYSPIESZENIE*(CENA_POPRZEDNIA(i-1)-SAR(i-1))
Zarzadząnie wielkoscia pozycji
// External variables
extern bool DynamicLotSize = true;
extern double EquityPercent = 2;
extern double FixedLotSize = 0.1;
// Start function
if(DynamicLotSize == true)
{
double RiskAmount = AccountEquity() * (EquityPercent / 100);
double TickValue = MarketInfo(Symbol(),MODE_TICKVALUE);
if(Digits == 3 || Digits == 5) TickValue *= 10;
double CalcLots = (RiskAmount / StopLoss) / TickValue;
double LotSize = CalcLots;
}
else LotSize = FixedLotSize;
Do jakich informacji mamy dostęp z MQL - zmienne predefiniowane
Zmiana przedzialu czasowego - programujemy !
//+------------------------------------------------------------------+
//| zmienTF.mq4 |
//| Tomasz Waszczyk |
//| https://www.waszczyk.com |
//+------------------------------------------------------------------+
#property copyright "Tomasz Waszczyk"
#property link "https://www.waszczyk.com"
#property version "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
#property show_inputs
#import "user32.dll"
int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
int GetWindow(int hWnd,int uCmd);
int GetParent(int hWnd);
#import
int eintTF=PERIOD_M5;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int OnStart()
{
bool blnContinue=true;
int intParent= GetParent(WindowHandle(Symbol(),Period()));
int intChild = GetWindow(intParent,0);
int intCmd;
switch(eintTF)
{
case PERIOD_M1: intCmd = 33137; break;
case PERIOD_M5: intCmd = 33138; break;
case PERIOD_M15: intCmd = 33139; break;
case PERIOD_M30: intCmd = 33140; break;
case PERIOD_H1: intCmd = 35400; break;
case PERIOD_H4: intCmd = 33136; break;
case PERIOD_D1: intCmd = 33134; break;
case PERIOD_W1: intCmd = 33141; break;
case PERIOD_MN1: intCmd = 33334; break;
}
if(intChild>0)
{
if(intChild!=intParent) PostMessageA(intChild,0x0111,intCmd,0);
}
else blnContinue=false;
while(blnContinue)
{
intChild=GetWindow(intChild,2);
if(intChild>0)
{
if(intChild!=intParent) PostMessageA(intChild,0x0111,intCmd,0);
}
else blnContinue=false;
}
// Now do the current window
PostMessageA(intParent,0x0111,intCmd,0);
return 0;
}
//+------------------------------------------------------------------+
Jakie IDE do programowania ?
Z automatami na kilka rynków spotkałem się przy przeglądaniu konkursu MQL organizowanej przez firmę Metaquotes, tam cześć uczestników używało automatów na kilka rynków, stąd wiem że technicznie
jest to możliwe....
...Ale bardziej mi zależy żeby się dowiedzieć jak najwięcej o zmianach które weszły do nowej...
... wersji MQL4. , Stąd mam prośbę o przekazanie dużej dawki informacji z nowości. Z góry dziękuje i pozdrawiam serdecznie.
Co nowego w języku MQL ?
Obiektowość - OOP czyli klasy
Nowe typy danych - uklon w stronę C++
Zmiana struktury katalógow
Szablony funkcji - sekcja naprawde zaawansowana
Optymalizacja języka - przykład pętla "if"
MQL5 Storage
Szablony funkcji
template< typename T>
T ArrayMax(T &arr[])
{
uint size=ArraySize(arr);
if(size==0) return(0);
T max=arr[0];
for(uint n=1;n < size ;n++)
if(max < arr[n]) max=arr[n];
//---
return(max);
}
Dlaczego wazne jest odswiezanie ceny?
RefreshRates()
Wielowatkowosc w MQL
while(IsTradeContextBusy()) Sleep(10);
int Ticket = OrderSend(Symbol(),OP_BUY,LotSize,Ask,UseSlippage,0,0,"Buy Order",MagicNumber,0,Green);
Gdzie szukać pomocy technicznej ?
Wersjonowanie naszego kodu zrodlowego
MQL5 Storage
Wlasny VCS
GIT
SVN
„Niniejsza prezentacja jest efektem wspólnych prac Domu Maklerskiego TMS Brokers S.A. oraz Pana Tomasza
Waszczyka
Materiały zawarte w niniejszej prezentacji mają charakter edukacyjny i nie stanowią działalności
maklerskiej polegającej na doradztwie inwestycyjnym lub wydawaniu rekomendacji o charakterze ogólnym.
Zaprezentowane podczas warsztatów (w tym w niniejszej prezentacji) algorytmy mają charakter jedynie
poglądowy w celu zobrazowania i nauki języka programowania modułu Expert Advisor dla systemu
transakcyjnego MetaTrader. Korzystając z algorytmów klient powinien mieć na względzie, że:
1. Klient wykorzystuje mechanizmy algorytmiczne na własne ryzyko i odpowiedzialność.
2. Klient ponosi pełną odpowiedzialność za straty lub utracone korzyści związane z realizacją zleceń za
pomocą mechanizmów algorytmicznych. Dotyczy to także prowizji, jakie Klient będzie zobowiązany pokryć w
związku z transakcjami, które będą zawierane w oparciu o algorytm, nawet przy ich znacznej ilości.
3. Klient odpowiada za opóźnione wygenerowanie lub niewygenerowanie lub błędne wygenerowanie zleceń za
pomocą mechanizmów algorytmicznych. W szczególności Klient ponosi odpowiedzialność za ww. zdarzenia
powstałe w wyniku błędów w oprogramowaniu mechanizmów algorytmicznych.
4. Nie można zagwarantować osiągnięcia określonego wyniku finansowego na transakcjach zawartych z
wykorzystaniem mechanizmów algorytmicznych.
5. Transakcje realizowane za pomocą mechanizmów algorytmicznych traktowane są jako transakcje zawierane
przez Klienta.
6. Składanie, usuwanie lub modyfikowanie zleceń z wykorzystaniem mechanizmów algorytmicznych traktowane
jest jako zlecenia złożone przez Klienta.
7. W wersji webowej oraz mobilnej systemu transakcyjnego może nie istnieć możliwość uruchomienia
strategii automatycznych.
8. Wszelkie przykładowe strategie algorytmiczne zaprezentowane w czasie niniejszego szkolenia mają
jedynie charakter edukacyjny i nie powinny być stosowne na rachunkach rzeczywistych.
Dom Maklerski TMS Brokers S.A. podlega nadzorowi Komisji Nadzoru Finansowego i prowadzi działalność
maklerską na podstawie zezwolenia z dnia 26 kwietnia 2004 r. (KPWiG-4021-54-1/2004). Kontakt: Skylight
Ul. Złota 59; 00-120 Warszawa, Polska; Tel.: +48 22 27 66 200”
Programowanie automatycznych strategii transakcyjnych
Część trzecia - zaawansowana 4.11.2015
Stworzone przez Tomasz Waszczyk / Twitter @Boomattache