my first ea

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).




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




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 www.forex-tsd.com.

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.




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




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.




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.




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:
3OH!3 ft Ke$ha My first Kiss
my first hack EMBH6YWKYFWJAYKBGE4NYLZNCSBQYUUR22VA5RA
My first?y at school
Kolenda po angielsku In my first year
MY FIRST ALBUM Track list
First Day of My Life
The rasmus first day of my life
First Day Of My Life
The Strange Life of Nikola Tesla by Nikola Tesla ed by John Penner first published as My Inventions
In My Dreams (First Tracks Book Kristen James
my clothes
biologia my
christiane f my dzieci z dworca zoo PODRYX5ASFIPH4SUR3JRHNPGY3OISOG2VG3DIII
first certificate practice tests and key 2
First 2015 Writing sample paper Nieznany
M Swieciaszek Task 2 my comment (2)
Spis przetw, my hobby, moje przepisy

więcej podobnych podstron