[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 241

 
artmedia70:

On vous a déjà dit quelle était la raison. La question n'est pas i++ ou i-- mais plutôt de savoir à partir de quelle extrémité de la liste nous devons commencer à supprimer les ordres - le début de la liste (comme vous l'avez fait) ou la fin de la liste (comme vous devez le faire dans ce cas).

Pour comprendre ce qui se passe lorsque des commandes sont supprimées, vous devez savoir et comprendre comment les commandes sont stockées dans le tableau.

Lorsque vous supprimez d'abord le premier ordre (il est indexé par i=0), les index de tous les ordres sont décalés dans le tableau - le premier ordre devient nul, le deuxième devient le premier, le troisième devient le deuxième et ainsi de suite. C'est pourquoi tous les ordres ne sont pas complètement supprimés - en fait, lorsque i devient 6, le sixième ordre est déplacé en cinquième position dans le tableau des ordres et l'ordre n'est pas sélectionné par l'indice 6.

Lorsque vous supprimez des commandes à la fin de la liste, le décalage ne se produit pas - la première commande a une position zéro dans la liste, et elle continuera à l'avoir. Le 10ème ordre avait la position 9, il a été supprimé, puis le 9ème ordre, qui a une position 8 dans la liste est supprimé, et ainsi de suite, jusqu'au premier ordre ayant une position zéro dans le tableau des ordres.

Un GRAND MERCI à artmedia70 pour leur réponse complète, juste un merci à ilunga ... et à nadya pour sa participation aussi ... Tous nos vœux de réussite...
 
J'ai configuré l'outil multidevise pour travailler avec plusieurs devises dans une seule fenêtre. Mais le problème est que le passage d'une monnaie à l'autre est si rapide qu'il n'y a pas le temps d'ouvrir un ordre. En 3 minutes, 4 ordres + 4 ordres en attente ont été ouverts. Et il y avait beaucoup d'échanges entre les monnaies.
 
volshebnik:
Qu'est-ce qui est mieux et quoi ? )
Créer des noms uniques et s'en souvenir. Je ne connais pas votre tâche, peut-être que vous n'en avez pas besoin.
 
forexnew:
J'ai configuré l'outil multidevise pour travailler avec plusieurs devises dans une seule fenêtre. Mais le problème est que le passage d'une monnaie à l'autre est si rapide qu'il n'y a pas le temps d'ouvrir un ordre. En 3 minutes, 4 ordres + 4 ordres en attente ont été ouverts. Et il y avait beaucoup d'échanges entre les monnaies.

http://vinin.ucoz.ru/forum/11
 

il y a 2 modifications d'utilisateur Mod_1 et Mod_2

Les deux ont des conditions de modification :

double TS;
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

if (TS < Min_Dist)
TS=Min_Dist;

Comment le changer pour que la modification n'aille pas jusqu'au bout avec une condition de stop loss, pour acheter le stop loss est inférieur au trailing stop,

et pour la vente, le stop loss est plus grand que le trailing stop.

 

Bonjour.

Veuillez m'aider à trouver un bug.

Le code ci-dessous ne fonctionne pas sur le testeur, alors qu'il n'y a pas ce problème sur la démo. Il n'y a pas d'erreur dans le journal de bord.

Merci d'avance.

  //====================== Отлавливаем прибыль по рынку ===========================================
  if (RinProfit) {
    if(SchBuyLots>0 || SchBuyLots777>0)
     {
      if((SchSellStop_b(MAGIC)>0 && (maM_fast<maM_slow || maH_fast<maH_slow || maOtk_fast<maOtk_slow)) ||
         (SchSellStop_b(MAGIC)>0 && (speedup_H1_ff<(10000+H1_MA_factor_ff) || speedup_H1_ss<(10000+H1_MA_factor_ss) ||
                                     speedup_M15_ff<(10000+M15_MA_factor_ff) || speedup_M15_ss<(10000+M15_MA_factor_ss))) ||
         (SchSellStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss<(10000+H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchSellStop_b(MAGIC)>0 && Fractal_fibo_buy>Fibo_prohibit) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S<TF2S) ||
         (SchSellStop_b(MAGIC)>0 && TF1S>0 && TF2S>0 && timf1s!=0 && timf2s!=0 && TF1S>=TF2S && Bid<price_S))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Buy закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
    }
    if(SchSellLots>0 || SchSellLots777>0)
     {
      if((SchBuyStop_b(MAGIC)>0 && (maM_fast>maM_slow || maH_fast>maH_slow || maOtk_fast>maOtk_slow)) ||
         (SchBuyStop_b(MAGIC)>0 && (speedup_H1_ff>(10000-H1_MA_factor_ff) || speedup_H1_ss>(10000-H1_MA_factor_ss) ||
                                    speedup_M15_ff>(10000-M15_MA_factor_ff) || speedup_M15_ss>(10000-M15_MA_factor_ss))) ||
         (SchBuyStop_b(MAGIC)>0 && ((maHXX<=H1_point_min  && speedup_H1_ss>(10000-H1_MA_factor_ss)) || maHXX>=H1_point_max)) ||
         (SchBuyStop_b(MAGIC)>0 && Fractal_fibo_sell>Fibo_prohibit) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B>TF2B) ||
         (SchBuyStop_b(MAGIC)>0 && TF1B>0 && TF2B>0 && timf1b!=0 && timf2b!=0 && TF1B<=TF2B && Bid>price_B))
       {
        while (SchBuyLots+SchBuyLots777>0 && SchSellLots+SchSellLots777>0)
         {
          CloseVstrechnye(MAGIC);
          return (0);
         }
        CloseAll_bMAGIC(Proskalz, MAGIC);
        CloseAll777_b(Proskalz);
        DeleteOtlozhMAGIC(MAGIC);
        DeleteOtlozh777();
        Alert("Позиции Sell закрыты согласно рыночной ситуации.");
        RefreshRates();
        if (Timeout_Trade>0 && ProfHist<=0)
         {
          Comment (SMB,": ТАЙМАУТ ТОРГОВЛИ "); 
          Sleep (Timeout_Trade*60000);
         } 
        RefreshRates();
       }
     } 
   }
  //===============================================================================================  
 

Quelle est la différence entre l'appel de fonctions depuis une dll dans MT4 et MT5 ? J'ai compilé la dll, elle fonctionne bien dans MT5, mais dans MT4 elle me donne une erreur :

2011.10.06 23:00:34 Exécuteur Solaris EURUSDm,M1 : ne peut pas appeler la fonction 'InfoOfTrading' de la dll 'Solaris.dll'(erreur 127)

Qu'est-ce que c'est que ça ? - Je me suis creusé les méninges. :(

 
faire un projet de dll Win32
 
sergeev:
faire un projet de dll Win32
Mais cela fonctionne bien dans MT5 !
 

Je vais poursuivre avec ma question ci-dessus.

J'ai également utilisé le code ci-dessus dans un autre EA. La situation avec cet EA était similaire à celle décrite ci-dessus, à la différence que les conditions du code étaient remplies exactement dans l'autre sens (dans la démo, là encore, tout fonctionnait sans erreur). Mais un jour, le testeur a fonctionné correctement et le code a fonctionné correctement selon les conditions qui lui étaient données.

C'est un vrai mysticisme.

En outre, il m'arrive parfois de ne pas pouvoir optimiser mon code pour une raison quelconque. Parfois, il recalcule quelque chose mais remet tous les résultats à zéro pour une raison quelconque. Il en est ainsi sur les terminaux de différents courtiers. Cependant, lorsque toutes les étoiles et constellations du ciel convergent probablement, tout commence à fonctionner comme il se doit.