[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 462

 
tol64:


Merci. C'est très clair. Tout le monde peut comprendre si vous l'expliquez comme ça.))

Une dernière question. J'ai trouvé beaucoup de versions similaires de la question dans la recherche, mais ma question sera un peu différente.))

Discordance dans les graphiques. Pour obtenir un résultat "fiable", je dois constamment recalculer les délais. C'est-à-dire que si je vois qu'il y a des erreurs dans le journal, je vais dans l'archive des citations et je recalcule toutes les échéances. Dans le testeur, par exemple, je fais un test sur les points de contrôle. Tout va bien. Ensuite, je forme, par exemple, des barres. Tout va bien. Mais si nous effectuons à nouveau un test en utilisant des points de contrôle, je verrai à nouveau des divergences entre les graphiques dans le journal. Qu'est-ce que... ? ))) Y a-t-il quelque chose contre ce fléau ?


IMHO, utilisez seulement deux modèles de test - soit "Tous les ticks..." ou "Par les prix d'ouverture..." (pour cela dans le tableau vous devez organiser le contrôle pour la formation d'une nouvelle barre) - ce sont des coupes "fiables" - et ne vous embêtez pas... :-))) "Points de contrôle" - ça ne vaut pas la peine.

Il vous suffit de télécharger l'historique des minutes de l'instrument que vous souhaitez et de vous lancer... :-)))

 
Roman.:


IMHO, utilisez seulement deux modèles de test - soit "Tous les ticks..." ou "Par les prix d'ouverture..." (pour cela dans le hibou vous devez organiser le contrôle de la formation de nouvelles barres) - ce sont des coupes "fiables" - et ne vous en faites pas... :-))) "Points de contrôle" - ça ne vaut pas la peine.

Il vous suffit de télécharger l'historique des minutes de l'instrument que vous souhaitez et de vous lancer... :-)))


Mon lien est cassé...

Dans mon approche, si vous utilisez "Tous les ticks", vous devrez attendre éternellement). Je teste sur un historique de 10 ans. Dans l'EA, les conditions et le suivi sont construits sur les barres formées. Mais il y a certaines conditions qui doivent être vérifiées à chaque tique. Par exemple, si un stop loss s'est déclenché et que le système de gestion monétaire a modifié la taille du lot, vous devez réinitialiser tous les ordres en attente afin de modifier la taille du lot. Ou supprimez simplement les ordres en attente, si les conditions l'exigent. Tout doit être clair pour être valable.)) C'est pourquoi les points de contrôle me suffisent en principe, car je comparais certains morceaux d'histoire avec tous les tics. Une seule et même chose.

Que peut-on donc faire pour aider à trier et à éliminer ces erreurs ? Parce que le lien est cassé.))

 
tol64:


Le lien est cassé...

Dans mon approche, si vous utilisez "Tous les ticks", vous devrez attendre éternellement). Je teste sur un historique de 10 ans. Dans l'EA, les conditions et le suivi sont construits sur des barres formées. Mais il y a certaines conditions qui doivent être vérifiées à chaque tique. Par exemple, si un stop loss s'est déclenché et que le système de gestion monétaire a modifié la taille du lot, vous devez réinitialiser tous les ordres en attente afin de modifier la taille du lot. Ou supprimez simplement les ordres en attente, si les conditions l'exigent. Tout doit être clair pour être valable.)) C'est pourquoi les points de contrôle me suffisent en principe, car je comparais certains morceaux d'histoire avec tous les tics. Une seule et même chose.

Que peut-on donc faire pour aider à trier et à éliminer ces erreurs ? Parce que le lien est cassé))


Re-téléchargé

et ici.

 

Bonjour messieurs.

Aidez-moi à comprendre le code. Je comprends la logique, mais je ne sais pas comment la décrire correctement. Je ne sais pas comment le décrire correctement.

Voici un morceau de l'Expert Advisor.

total=OrdersTotal();
if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7))
{

OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3))
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}

S'il vous plaît, conseillez-moi sur la manière de traiter correctement ce problème. Salutations Denis.

 
Roman.:


Re-posé sur

et ici.


Merci. Ces liens, et d'autres, ne disent pas la chose la plus importante que j'avais besoin de savoir.

Lorsque les cotations arrivent en ligne dans le terminal, les délais doivent être recalculés de temps en temps pour qu'il n'y ait pas de décalage.

En mode hors ligne, il n'y a pas de tels problèmes). C'est le premier.

Maintenant la seconde.

for(pos = 0; pos < OrdersHistoryTotal(); pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

Si je fais cela, l'écriture dans le fichier se fait sans erreur. C'est-à-dire que dans le fichier, tout se présente comme prévu. Si je le fais de la façon dont vous l'avez affirmé avec confiance :

for(pos = 0; pos < OrdersHistoryTotal()-1; pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

alors le fichier n'est pas écrit correctement. Je peux voir qu'il y a des cas individuels.))

 
Reporté.
smartemiy:

Bonjour, mes chers.

J'ai besoin de l'aide d'un expert ! !!

Comment spécifier dans l'Expert Advisor qu'il doit arrêter le trading si le drawdown de la balance est déjà de 20%, et que ce chiffre peut être modifié ?

Je suis désolé, cela a peut-être déjà été expliqué sur le forum, je ne l'ai peut-être pas remarqué ...

JE VOUS EN SUIS RECONNAISSANT À L'AVANCE !

Bonne chance pour le trading ! !!!!

 
granit77:
Reporté.


Par exemple, comme ceci...

extern int MaxLoss = 90;          // Максимально допустимая просадка в процентах от баланса

...     

static datetime prevtime = 0;       // по ценам открытия
bool IsExpertFailed = false;
bool IsExpertStopped = false;

      

//+------------------------------------------------------------------+
//| Старт робота                                                     |
//+------------------------------------------------------------------+

int init()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   IsExpertStopped = false;
   if (!IsTradeAllowed())
   {
      Comment("Необходимо разрешить советнику торговать");
      IsExpertStopped = true;
      return (0);
   }
      
   if (!IsTesting())
   {
      if (IsExpertEnabled())
      {
         Comment("Советник запустится следующим тиком");
      }
      else 
      {
         Comment("Отжата кнопка \"Разрешить запуск советников\"");
      }
   }
 return (0);
}
  
//+------------------------------------------------------------------+
//| Завершение работы робота                                         |
//+------------------------------------------------------------------+

int deinit()
{
   return (0);
}
  
//+------------------------------------------------------------------+
//| Обработка сигнала                                                |
//+------------------------------------------------------------------+
  
int start()    // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
  
 
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   if (IsExpertStopped)
   {
      Comment("Не удалось инициализировать советник!");
      return (0);
   }
   
   if (IsExpertFailed)
   {
      Comment("Критическая ошибка! Советник остановлен.");
      return (0);
   }
   
         
   // ------------------------------------------------Ищем наш ордер---------------------------------

   int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))
      {
         continue;
      }

      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }

      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue;
      }
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();
      
                              
                                  
                           if (orderType == OP_BUY) 
                              {
      
                               }
            
                            if (orderType == OP_SELL) 
                                 {
       
                                 }   
                            
                    }

      // Проверка на предельную просадку
      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }
    
              
       
}
   
 
Veuillez me rappeler comment régler le délai. Je pense que tu peux le faire en quelques millisecondes. J'oublie toujours comment l'épeler.
 
Et quelqu'un peut-il suggérer un script qui ferme toutes les positions rapidement. Je n'arrive pas à le trouver. J'aimerais voir le code.
 
FOReignEXchange:
Et quelqu'un peut-il suggérer un script qui ferme toutes les positions rapidement. Je n'arrive pas à le trouver. J'aimerais voir le code.
Une recherche medonnera 50 000 $.