[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 364

 
J'ai vérifié ce code maintenant sur un compte réel, tout est OK, j'ai modifié tous les ordres de marché, mais la seule chose que je n'ai pas touché est les ordres en attente. Quel est le problème ? Qu'en pensez-vous ?
 
Noterday:
J'ai vérifié ce code sur mon compte réel, tout est ok, j'ai modifié tous les ordres de marché, mais j'ai laissé les ordres en attente intacts. Quel est le problème ? Qu'en pensez-vous ?


En l'état

         if(cmd==OP_BUY || cmd==OP_SELL)

et dans l'état

if(cmd==OP_BUY)
 
Je ne comprends pas :(
 
Noterday:
Je ne comprends pas :(

Il y a aussi une phrase dans le nom du script qui dit que les ordres de marché seulement... Supprimez ces conditions pour les ordres au marché, puis les conditions pour les ordres au marché et en attente seront remplies - c'est tout. Non, ce n'est pas tout - lisez-le attentivement - exigences et limitations... ...et assurez-vous d'ajouter ces exigences minimales à vos ordres en attente afin qu'elles soient également respectées.
 
KONDOR:


Je n'ai donc pas du tout de telles lignes, je ne sélectionne pas du tout le type, mais je modifie TOUS ceux que j'ai, qu'ils soient en attente ou sur le marché.
 
Noterday:
Je n'ai donc pas du tout de telles lignes, je ne sélectionne pas du tout le type, je les modifie TOUS, qu'ils soient en attente ou sur le marché.

Je vous écris pour lire attentivement : "Restriction de distance FreezeLevel.

Les ordres de marché ne sont pas fermés si les valeurs StopLoss ou TakeProfit violent les exigences du paramètre FreezeLevel.
Les ordres de marché StopLoss ou TakeProfit ne peuvent pas être modifiés si les valeurs StopLoss ou TakeProfit violent les exigences du paramètre StopLevel.
La suppression et la modification des ordres en attente ne sont pas effectuées si le prix ouvert déclaré de l'ordre ne respecte pas les exigences du paramètre FreezeLevel.
 

C'est ça, l'erreur était là :

if (OrdersTotal()!=0)
  {
   
   bool   modify;
   int    Done=0;
   for (i = 1; i <= OrdersTotal(); i++)
      {
       if (OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES) == true)
         {
          Stop = OrderStopLoss();
          Take = OrderTakeProfit();
          Print("Пробую модифицировать ",i," ордер (#",OrderTicket(),")");
          modify = OrderModify(OrderTicket(),0,SL,TP,0,0);                          <<<--------------------- во втором параметре OrderModify нужно ставить не ноль а Orderopenprice()
          if (modify==true) Done++;
          if (modify==false)
            {
             int error = GetLastError();
             Print("                 Неудача... Ошибка ",error);
             Sleep(5000);
            }
         }
       }
    Alert("Модифицировано  ",Done,"  из  ",OrdersTotal());
    Sleep(10000);
   }
 
Noterday:
Je n'ai donc pas du tout de telles lignes, je ne sélectionne pas du tout le type, je les modifie TOUS, qu'ils soient en attente ou sur le marché.


Également dans l'état ce

( cmd==OP_BUYLIMIT || cmd==OP_SELLSTOP)

changer de façon similaire sous l'ordre à sélectionner (changer la condition de définition du type d'ordre en l'une de celles-ci :

Constant Valeur Description
OP_BUY 0 Position d'achat.
OP_SELL 1 Position de vente.
OP_BUYLIMIT 2 Position en attente de limite d'achat.
OP_SELLLIMIT 3 Vente de limite de position en attente.
OP_BUYSTOP 4 Arrêt d'achat en attente de position.
OP_SELLSTOP 5 Arrêt de vente en attente de position.
et déjà alors vous vérifiez la conformité aux "Exigences et restrictions de négociation" de tel ou tel ordre sélectionné, chaque type d'ordre sélectionné ayant ses propres exigences et restrictions... et ici le script est seulement pour les ordres de marché... Modifiez par analogie et c'est tout - vous avez toutes les informations. Calmement, soigneusement et méthodiquement.

 
Oui, tout était écrit correctement à l'origine, l'erreur se situait dans la partie ci-dessus. MERCI À VOUS TOUS ! =)))
 
Est-il possible d'accélérer le processus d'essai ?
Raison: