napisałem prostego EA i nie działa podczas testów. Wygląda na to, że expert wchodzi w pętle i wtedy dane testowe przestają napływać. Warunkiem wyjścia z pętli jest odpowiednia zmiana ceny. Poniżej zamieszczam kod. Proszę bardziej doświadczonych o pomoc. Pzdr!
Kod:
Kod: Zaznacz cały
//+------------------------------------------------------------------+
//| SO v01.mq4 |
//| Copyright 2010 Adrian Gasiński |
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010 Adrian Gasiński"
#property link ""
double maks=10000, min=0, cena_otwarcia;
int numer_zlecenia;
//---- input parameters
extern int lot;
extern int sl;
void Inicjator(){
if(Hour()==7 && Minute()>54){
maks=High[iHighest(NULL, PERIOD_H1, MODE_HIGH, 3, 0)]; //określenie jakie było maksimum dla 3 ostatnich swiec
min=Low[iLowest(NULL, PERIOD_H1, MODE_LOW, 3, 0)]; //określenie jakie było minimum dla 3 ostatnich swiec
}
}
void SprawdzDluga(){ //funkcja sprawdzajaca czy nie nalezy otworzyc dlugiej pozycji
if (Ask>maks){
cena_otwarcia=Ask;
numer_zlecenia=OrderSend(Symbol(),OP_BUY,lot,Ask,20*Point,0,0,NULL,0,0,Blue);
}
}
void SprawdzKrotka(){
if (Bid<min){
cena_otwarcia=Bid;
numer_zlecenia=OrderSend(Symbol(),OP_SELL,lot,Bid,20*Point,0,0, NULL,0,0, Red);
}
}
void SprawdzCzyZamknac(){
if(Bid>cena_otwarcia+sl*Point || Ask<cena_otwarcia-sl*Point){
OrderClose(numer_zlecenia,lot,Ask,7*Point,Green);
}
}
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
Inicjator();
if(min-maks<40*Point){
while(OrdersTotal()==0){
SprawdzKrotka();
SprawdzDluga();
}
}
while(OrdersTotal()>0){
SprawdzCzyZamknac();
}
return 0;
}