J'apprends à écrire un conseiller... - page 7

 

Par ailleurs, est-ce que je vérifie correctement l'état du pied sur les trois critères ?

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

Ou est-ce

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

Avez-vous entendu parler d'un "period shift" sur ce forum ?

Laissez-moi vous expliquer. Par exemple, les chandeliers H4 sont différents dans toutes les sociétés de courtage, c'est clair - parce que l'heure du serveur est différente. Comment déplacer ces chandeliers en fonction du temps, pour obtenir d'autres caractéristiques à la sortie - le maximum, le minimum, l'ouverture, la fermeture...

A quoi sert tout cela ? Ma société de courtage a les mêmes chandeliers et la stratégie que je mets en œuvre par mon conseiller expert fonctionne, mais il y a beaucoup d'erreurs de correspondance entre les graphiques. (D'après ce que j'ai compris, il s'agit d'un problème de ma société de courtage et il n'est pas bien accueilli pendant l'analyse par les participants au forum).

Mais après avoir téléchargé l'historique de MetaQuotes il n'y a pas d'erreurs, mais même pendant le test visuel les chandeliers ne montrent pas beaucoup de signaux et le test EA les utilisant donne de mauvais résultats.

C'est pourquoi j'ai commencé à y penser - à "déplacer" les chandeliers pour qu'ils coïncident avec ma société de courtage ou une autre.

 

Comment réduire vos erreurs de DC et améliorer la qualité de la modélisation ?



EUR/0.1-10 lot/1 an/300-322000

 

Vérifier si je traite correctement la modification de la commande ? Quels sont les pièges possibles ici ?

//+------------------------------------------------------------------+
//| Открытие позиции на покупку
//+------------------------------------------------------------------+
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());
               }
         }     
   }

Puis int Start () vérifie la modification...

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

Merci à ceux qui ont aidé)

Je suis en train d'apprendre comment exécuter un EA sur différents symboles en même temps...

Pouvez-vous me dire si cette variante est bonne pour trouver un ordre appartenant à un symbole sur lequel l'EA fonctionne ?

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

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