EA

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

EA

Nieprzeczytany post autor: bucho1504 »

Dzięki za podpowiedź poprawiłem parę błędów :-) i śmiga bardzo dobrze :-)
bez OrderModify error 1 :-)


Kod: Zaznacz cały

   
                  {
                 if((OrderMagicNumber()== magic78) && (OrderType() == OP_SELL)&& 
                 (NormalizeDouble(Ask,Digits) < NormalizeDouble(OrderOpenPrice(),Digits)+ TP_Activated*Point)&&
                 (NormalizeDouble(OrderTakeProfit(),Digits) > (NormalizeDouble(Ask,Digits) - TPOpenShort*Point))&&
                 ((TP_Level*Point) < (NormalizeDouble(Close[t3],Digits) - NormalizeDouble(Open[t3],Digits)))) 
                 
                  {
                  OrderModify(OrderTicket(),NormalizeDouble(OrderOpenPrice(),Digits),
                  NormalizeDouble(OrderStopLoss(),Digits),(NormalizeDouble(Ask,Digits) - TP_Jumping*Point),0,Blue);
                        
                   }     
                                              
                 }     
Ten nie popełnia błędów kto nic nie robi

Awatar użytkownika
bucho1504
Stały bywalec
Stały bywalec
Posty: 55
Rejestracja: 01 sie 2008, 21:46

Re: EA

Nieprzeczytany post autor: bucho1504 »

Witam :D
Morduję się od jakiegoś czasu nad codem MQL i nie bardzo wiem gdzie popełniam błąd , chcę aby EA po zamknięciu zlecenia na SL wykonało zlecenie przeciwstawne ale Mi nie wykonuje a nawet blokuje wykonanie zleceń wg założeń :(

Kod: Zaznacz cały

 
int start()
{
 if (anyBuyOrderSL() && !anyCloseOrder())
           {
           doSell();
           }
    else if (anySellOrderSL() && !anyCloseOrder()) 
          {
          doBuy();
          }
     return(0); 
}

bool anyBuyOrderSL() 
      {
       
       for (int i=OrdersHistoryTotal()-1 ; i>=0 ;i--)
        {
         if (OrderSelect(i , SELECT_BY_POS, MODE_HISTORY)) continue ;
        if (OrderMagicNumber()== 1) continue; 
        if (OrderType() == OP_BUY) continue ;
        if (NormalizeDouble(OrderClosePrice(),Digits) <= NormalizeDouble(OrderStopLoss(),Digits))continue; 
        if (OrderCloseTime() < TimeHour(TimeCurrent()))  
          {
          return(True);
          }
         return(False);
        }
      }
     
    bool anySellOrderSL() 
    {
       
       
       for (int i=OrdersHistoryTotal()-1 ; i>=0 ;i--)
      {
       if (OrderSelect(i , SELECT_BY_POS, MODE_HISTORY)) continue;
       if (OrderMagicNumber()== 2) continue;
       if (OrderType() == OP_SELL) continue;
       if (NormalizeDouble(OrderClosePrice(),Digits) >= NormalizeDouble(OrderStopLoss(),Digits)) continue; 
       if (OrderCloseTime() < TimeHour(TimeCurrent())) 
       {
        return(True);
        }
       return(False);
      }
     }
    
  bool anyCloseOrder() 
   {
   return(OrdersTotal()>0);
   }

Dzięki :D
Ten nie popełnia błędów kto nic nie robi

ODPOWIEDZ