Sto imparando a scrivere un consigliere... - pagina 7

 

Inoltre, sto controllando correttamente la condizione del piede sui tre criteri?

  //проверяем если есть поза, стоит стоп и не стоит БУ        
       if ((OrdersTotal()>0)&& (OrderStopLoss()!=0) && (OrderStopLoss()!= SLBU))
            ModifySLinBU();   //передаем управление в ф-ю установки БУ

O è

  //проверяем если есть поза, стоит стоп и не стоит БУ        
       if ((OrdersTotal()>0)&& (OrderStopLoss()!=0 && SLBU))
            ModifySLinBU();   //передаем управление в ф-ю установки БУ
 

Avete sentito parlare di un "cambio di periodo" su questo forum?

Lasciatemi spiegare. Per esempio le candele H4 sono diverse in tutte le società di brokeraggio, è chiaro - perché il tempo del server è diverso. Come spostare queste candele secondo il tempo, per ottenere altre caratteristiche all'uscita - il massimo, il minimo, l'apertura, la chiusura...

A cosa serve tutto questo? La mia società di intermediazione ha le stesse candele e la strategia che implemento con il mio Expert Advisor funziona, ma ci sono molti errori di mismatching grafico. (Per quanto ho capito, questo è un problema della mia società di intermediazione e non è gradito durante l'analisi dai partecipanti al forum!)

Ma avendo scaricato la cronologia MetaQuotes non ci sono errori, ma anche durante il test visivo le candele non mostrano molti segnali e il test EA che le usa dà cattivi risultati.

Ecco perché ho iniziato a pensarci - per "spostare" i candelieri in modo che coincidano con la mia società di intermediazione o con un'altra.

 

Come ridurre i vostri errori DC e migliorare la qualità della modellazione?



EUR/0.1-10 lotto/1 anno/300-322000

 

Vedere se sto elaborando correttamente il cambio d'ordine? Quali sono le possibili insidie qui?

//+------------------------------------------------------------------+
//| Открытие позиции на покупку
//+------------------------------------------------------------------+
void OpenBuy() 
  { 
   RefreshRates();
      if ((OrdersTotal()==0) && (Ask == Enter)) //бъем до упора эту цену
         {
            if (IsTradeContextBusy()==false)
               {
                  OrderSend(Symbol(), OP_BUY, Lot, Enter, Slippage, 0, 0, 0, MAGIC,0, clOpenBuy);
                  if (OrdersTotal()>0)
                     {
                        Modify = false;                              //флаг установки SL и TP - не установлен
                        ModifySL();                        
                     }
                  else Print("Ошибка установки ордера BAY по цене ",OrderOpenPrice()," код ошибки ="+GetLastError());
               }  
         }              
      if ( UseSound) PlaySound( NameFileSound);
  } 
//+------------------------------------------------------------------+
//| Открытие позиции на продажу
//+------------------------------------------------------------------+
void OpenSell() 
  { 
   RefreshRates();
      if ((OrdersTotal()==0)&&(Bid == Enter))  //бъем до упора эту цену
         { 
            if (IsTradeContextBusy()==false)
               {
                  OrderSend(Symbol(), OP_SELL, Lot, Enter, Slippage, 0, 0, 0, MAGIC,0, clOpenSell);
                  if (OrdersTotal()>0)
                     {
                        Modify = false;                              //флаг установки SL и TP - не установлен
                        ModifySL();
                     }   
                  else Print("Ошибка установки ордера SELL по цене ",OrderOpenPrice()," код ошибки ="+GetLastError());
               }
         }
      if ( UseSound) PlaySound( NameFileSound);        
  } 
//+------------------------------------------------------------------+
//| Модификация ордера на установку SL и TP                                                                 |
//+------------------------------------------------------------------+
void ModifySL()
   {
      if (OrderSelect(0, SELECT_BY_POS)==true) // Если есть открытый ордер
         {       
            if (OrderType()==OP_BUY)
               {
                  StopL = SLB(); 
                  TakeP = TPB();
                  Modify = OrderModify(OrderTicket(),OrderOpenPrice(), StopL, TakeP,0,Red);
                  if ( Modify == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить СТОП ", StopL,". Текущая цена- ",Bid,", код ошибки ="+GetLastError());
               }
            else
               {
                  StopL = SLS(); 
                  TakeP = TPS();
                  Modify = OrderModify(OrderTicket(),OrderOpenPrice(), StopL, TakeP,0,Red);
                  if ( Modify == false) Print("Ошибка изменения ордера #",OrderTicket(), " при попытке установить СТОП ", StopL,". Текущая цена- ",Ask,", код ошибки ="+GetLastError());
               }
         }     
   }

Poi int Start () controlla la modifica...

//+------------------------------------------------------------------+
//| Проверка открытого оредра на установку SL,TP и установка SL,TP
//+------------------------------------------------------------------+
    if ((OrdersTotal()>0) && ( Modify == false)) ModifySL();  //SL и TP - не установлен
 

Grazie a chi mi ha aiutato).

Attualmente sto imparando come eseguire un EA su diversi simboli allo stesso tempo...

Puoi dirmi se questa variante è buona per trovare un ordine appartenente a un simbolo su cui l'EA è in esecuzione?

for (int i=1; i<=OrdersTotal(); i++)          //Цикл по всем ордерам,..
  {                                           //отражённым в терминале
      if(OrderSelect( i-1, SELECT_BY_POS)==true)//Если есть следующий         
        {
          if(OrderSymbol()==Symbol())
            {
              if (OrderType()==OP_BUY)
               {
                 ... 
               }  
              else
               {
                 ...
               }

            }
        } 
  }                                         //Конец тела цикла