KURS Twoj pierwszy Doradca Ekspertowy MQL4 KURS Twoj pierwszy Doradca Ekspertowy MQL4 plik1


MQL4 COURSE

By Coders' guru

www.forex-tsd.com

-13-

Twoj pierwszy Doradca Ekspertowy

Part 1

--------------------

W poprzedniej lekcji tworzyli nasz pierwszy wskaznik. Chociaz nie byl on uzyteczny dla tradera, to jednak mial ogromne znaczenie dla programisty. Wskazniki - ogolnie rzecz biorac - odgrywaja duze znaczenie w analizie technicznej rynku, przewidywania przyszlych cen.

Z ich pomoca obserwujemy wykres, by nastepnie otworzyc recznie pozycje dluga, krotka lub zmodyfikowac juz otwarta. Co sie z tym laczy, musimy siedziec przed monitorem i miec oczy szeroko otwarte. Jesli sie zmeczysz, chcesz wypic filizanke herbaty lub nawet zrobic sobie krotkie wakacje, musisz zastanowic sie i wybrac pomiedzy dwoma rozwiazaniami:

Mozesz najac kogos do obserwowania terminalu. Ta osoba bedzie do ciebie dzwonila co piec minut z informacjami o tym, co dzieje sie na rynku. Jesli pracownik, ktorego wynajales jest ekspertem, bedzie cie on kosztowal tyle pipsow, ile zdolasz zarobic, a jesli jest poczatkujacy, bedzie cie to kosztowalo caly twoj kapital.

Drugim rozwiazaniem jest uzywanie programu, ktory zautomatyzuje twoje zlecenia. Do tego wlasnie sluzy Expert Advisor (w przelozeniu na polski Doradca Ekspertowy, ale bede uzywal angielskiej nazwy, ew. skrotu EA).

Expert Advisor jest programem napisanym w MQL4 uzywajacy twoich ulubionych wskaznikow i metod handlu do automatyzacji twoich polecen.

Moze kupowac, sprzedawac i modyfikowac zlecenia. Pozwala ci na wypicie filizanki kawy i zachowania zarobkow, ktore wydalbys na pracownika lub na bukiet kwiatow dla zony pomocnika.

Dzisiaj zaczniemy tworzyc nasz pierwszy EA, do dziela wiec!

Krok pierwszy:

Jesli nie otworzyles jeszcze MetaEditor'a, mysle, ze nastal czas bys to zrobil.

Z meny Plik (file) wybieramy Nowy (new) (mozesz rowniez nacisnac ctrl+n lub kliknac na ikonke Nowy na standardowym pasku narzedziowym). Otworzy sie kreator, ktory juz widziales przy okazji tworzenia wskaznika. Tym razem wybierzemy pierwsz opcje 'Doradca Ekspertowy' (Expert Advisor program) i klikniemy 'Dalej' (next).

0x08 graphic

Krok drugi:

Kiedy kliknales przycisk 'Dalej', otrzymales kreator ogolnych wlasciwosci. Pozwoli ci on ustawic oprocz ogolnych wlasciwosci, zewnetrzne wartosci, ktorych uzyjesz w soim EA. Na tym etapie mozesz ustawic:

- Nazwa twojego EA, w naszym przykladzie My_First_EA.

- Autor, gdzie wpiszesz swoje imie (w przykladzie wpisalem swoje :>)

- Link do twojej strony internetowej

- Lista wartosci zewnetrznych:

Jest to lista wartosci twojego EA, ktore pozwalasz zmienic z poziomu okna wlasciwosci Doradcy.

By dodac nowa zmienna, kliknij na przycisk 'Dodaj' (Add), co z powoduje dodanie nowego rekordu do naszej listy. Kazdy z nich ma trzy pola:

Nazwa - kliknij dwa razy by ustawic nazwe dla danej zmiennej

Typ - kliknij dwa razy by ustawic typ (lekcja 3 - MQL4 Data types) dla danej zmiennej

Poczatkowa wartosc - kliknij dwa razy by ustawic poczatkowa wartosc dla danej zmiennej

To pole jest domyslne, co oznacza, ze mozesz pozostawic je bez zmian. W naszym przykladzie dodalismy 3 wartosci (zmienne):

Varaible _ Type _ initial value

TakeProfit _ double _ 350

Lots _ double _ 0.1

TrailingStop _ double _ 35

0x08 graphic

Teraz kliknij na przycisk 'Zakończ' (Finish), by zamknac kreator,a MetaEditor wyswietli nam kod stworzony za jego pomoca i zapisze go jako My_First_EA.mq4 w katalogu MetaTrader 4, folder experts.

Uwaga: EA musisz umieszczac w folderze MetaTrader 4\experts, a wskazniki w MetaTrader 4\experts\indicators w przeciwnym wypadku nie beda dzialac.

Oto kod, ktory stworzylismy za pomoca kreatora:

//+------------------------------------------------------------------+

//| My_First_EA.mq4 |

//| Coders Guru |

//| http://www.forex-tsd.com |

//+------------------------------------------------------------------+

#property copyright "Coders Guru"

#property link "http://www.forex-tsd.com"

//---- input parameters

extern double TakeProfit=250.0;

extern double Lots=0.1;

extern double TrailingStop=35.0;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

Jak widzisz powyzej, kod wygenerowany przez kreator jest szablonem do ktorego mozesz dodac swoj kod, bez klopotliwego pisania glownych funkcji.

Dodaj teraz swoj kod:

//+------------------------------------------------------------------+

//| My_First_EA.mq4 |

//| Coders Guru |

//| http://www.forex-tsd.com |

//+------------------------------------------------------------------+

#property copyright "Coders Guru"

#property link "http://www.forex-tsd.com"

//---- input parameters

extern double TakeProfit=250.0;

extern double Lots=0.1;

extern double TrailingStop=35.0;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

int Crossed (double line1 , double line2)

{

static int last_direction = 0;

static int current_dirction = 0;

if(line1>line2)current_dirction = 1; //up

if(line1<line2)current_dirction = 2; //down

if(current_dirction != last_direction) //changed

{

last_direction = current_dirction;

return (last_direction);

}

else

{

return (0);

}

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

int cnt, ticket, total;

double shortEma, longEma;

if(Bars<100)

{

Print("bars less than 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit less than 10");

return(0); // check TakeProfit

}

shortEma = iMA(NULL,0,8,0,MODE_EMA,PRICE_CLOSE,0);

longEma = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

int isCrossed = Crossed (shortEma,longEma);

total = OrdersTotal();

if(total < 1)

{

if(isCrossed == 1)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,

"My EA",12345,0,Green);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

if(isCrossed == 2)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,

Bid-TakeProfit*Point,"My EA",12345,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

if(OrderType()==OP_BUY) // long position is opened

{

// should it be closed?

if(isCrossed == 2)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

// close position

return(0); // exit

}

// check for trailing stop

if(TrailingStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-

Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // go to short position

{

// should it be closed?

if(isCrossed == 1)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

// close position

return(0); // exit

}

// check for trailing stop

if(TrailingStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||

(OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,

OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

//+------------------------------------------------------------------+

Uwaga: nie kopiuj kodu powyzej, poniewaz jest on warped i nie bedzie dzialal, uzyj kodu zawartego w lekcjach na .

Przestraszony? (Are you scared? You shouldn't be! Cuz you are in scare tactics :D)

Nie boj sie tych 160 linii kodu. Zapoznamy sie z nim calym, linijka po linijce, obiecuje, to bedzie latwe zadanie.

Testowanie EA:

Zanim ropozczniemy analize naszego EA, musimy sprawdzic czy jest on dochodowy, czy nie.

Uwaga: Nasz EA dziala z para EURUSDna interwale H4. Skompiluj wiec nasza strategie przy pomocy klawisza F5 i zaladuj ja w MetaTrader'ze.

Handlowanie na zywo:

Rezultaty testowania strategii na zywo jest bardziej dokladne, ale musisz poswiecic na to dni (czasami i miesiace) by okreslic, czy jest ona dochodowa.

Musisz pozwolic EA na przeprowadzanie przez niego operacji handlu.

By to zrobic, z menu Narzedzia (tools) wbierz Opcje (option) lub nacisnij kombinacje klawiszy ctrl + o. Pojawi sie okno, w ktorym nalezy przejsc do zakladki Expert Advisor i zaznaczyc opcje:

Enable Expert Advisor

Allow live trading

i kliknij OK.

0x08 graphic

Zobaczysz symbol usmiechu obok nazwy strategii, co bedzie oznaczalo, ze EA jest gotowe, by przejac twoje obowiazki.

0x08 graphic

Strategy tester:

Druga metoda na sprawdzenie twojego EA, z mniejsza dokladnoscia, ale nie zajmujaca tyle czasu, jest Strategy tester. Otworz okno od niego uzywajac klawisza F6.

Symbol: EURUSD

Okres (Period): H4

Model: Open prices only

Kliknij przycisk Start, by rozpoczac testowanie EA.

0x08 graphic

Zobaczysz pasek postepu (i dwie zakaldki Ustawienia i Dziennik), ktory zamieni sie (?) w 5 zakladek. Nas interesuje zakladka Raport. Przejdz do niej, by zobaczyc dochod.

0x08 graphic

Mamy duzo do powiedzenia i zrobienia na nastepnej lekcji. Mam nadzieje, ze jestes gotowy do tego pojedynku. Jestem otwarty na wszystkie pytania i sugestie.

Do napisania

Coders' Guru

24-11-2005

Tlumaczenie Matteo 13-10-2007



Wyszukiwarka

Podobne podstrony:
KURS Twoj pierwszy Doradca Ekspertowy MQL4 KURS Twoj pierwszy Doradca Ekspertowy MQL4 plik2
Twój Darmowy Kurs Techniki Pamięciowe
Twój Darmowy Kurs Tuning Notowania
Twój Darmowy Kurs Szybkie Czytanie
Twój Darmowy Kurs Niszczenie Problemów
[lekcja 17] Funkcje pierwsze starcie Kurs C++ » Poziom 2
Noss Kurs EAGLE Część pierwsza
Krotki kurs pierwszej pomocy id Nieznany
kurs pierwszej pomocy dla wychowawcow
pierwszeństwa ruchu drogowego, Kurs Instruktora Prawa Jazdy, Konspekty, 2
[lekcja 3] Uruchamiamy pierwszy program Kurs C++ » Poziom 1
KURS KWALIFIKOWANEJ PIERWSZEJ POMOCY, Pierwsza pomoc
Kurs dal początkujących- 10 lekcji, Lekcja 2-Pierwsze starcie, Pierwsze starcie
jaki powinien byc twoj pierwszy raz (www instrukcja pl)
Kurs ratownictwa i udzielania pierwszej pomocy Dzieciom, Rok szkolny 2011-2012
Twoj pierwszy pracownik Zatrudniaj w malej firmie w Polsce
biznes i ekonomia twoj pierwszy pracownik zatrudniaj w malej firmie w polsce marcin pietraszek ebook

więcej podobnych podstron