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;
   
  }
							




