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

 

Voici comment cela ne modifie pas bye - et c'est une condition zircale, et cela ne fonctionne pas non plus tout le temps.

C'est l'endroit.

//***************************************   
 
 bool nahodka=false;
 
 for (i=0; i<=OrdersHistoryTotal(); i++) {
 if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
 if (OrderSymbol()!=Symbol())continue; 
 if (OrderMagicNumber() != 450) continue; Print (" tacket ",tacket, "  OrderTicket() ",OrderTicket(),"    profit " , profit, "    OrderTakeProfit( ) ",OrderTakeProfit( ) );
 if (tacket==OrderTicket()) {Print ("tacket==OrderTicket()    " );
 if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;}}     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tucket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )<Bid-treylingstop*Point ){ Print ("втораямодифи    " );
 OrderModify(  tucket, OrderOpenPrice(), Bid-treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
 if (BUY == 0) {perenos=false;srabotka=false;nahodka=false;} 
 
 
 //*************************************** 
 
 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
 
Dimka-novitsek:

Bonjour !

Je n'arrive absolument pas à comprendre - les conditions du trailing stop ne fonctionnent pas.

Donc, la commande est retirée immédiatement alors qu'elle n'est pas encore sur l'historique, ce que je ne comprends pas du tout !

Et là, la situation est meilleure ! Si nous avons cette astuce, au moins l'ordre est corrigé lorsqu'il est déjà dans l'historique.

Mais une fois sur cinq ou dix, la nahodka ne prend pas la valeurvraie, et la modification ultérieure ne se produit pas!


Avez-vous essayé if(OrderClosePrice()==OrderTakeProfit())nahodka=true; ?
 
Dimka-novitsek:

Bonjour !

Je n'arrive absolument pas à comprendre - les conditions du trailing stop ne fonctionnent pas.

Donc, la commande est retirée immédiatement alors qu'elle n'est pas encore dans l'historique, ce que je ne comprends pas du tout !

Et là, la situation est meilleure ! Si nous avons cette astuce, au moins l'ordre est corrigé lorsqu'il est déjà dans l'historique.

Mais une fois sur cinq ou dix, la nahodka ne prend pas la valeur vraie, et la modification ultérieure ne se produit pas!

Lors de la sélection d'une commande par ticket, le pool n'est pas pris en compte. Par conséquent, il est absolument inutile d'écrire MODE_HISTORY. Après la sélection de l'ordre selon le ticket, vous devez aussi nécessairement vérifier son heure de clôture OrderCloseTime() - si elle est supérieure à zéro, l'ordre est fermé et sélectionné dans l'historique, si elle est égale à zéro, alors l'ordre est toujours sur le marché et est sélectionné dans la liste des positions du marché.

Ce contrôle n'est pas présent dans vos lignes :

if (OrderSelect(tacket, SELECT_BY_TICKET , MODE_HISTORY)) 
if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;     // Находим ордер, сработавший именно по тейкпрофиту 

Il faut commencer petit :

if (OrderSelect(tacket, SELECT_BY_TICKET)) {
   if (OrderCloseTime()>0) {                         // Убедились, что ордер выбран из истории
      // Тут ищете далее то, что вам необходимо ... а закрылся ли он по тейку ...
      }
   }

et vous serez heureux...

 
Dimka-novitsek:

Bonjour !

Je n'arrive absolument pas à comprendre - les conditions du trailing stop ne fonctionnent pas.

Donc, la commande est retirée immédiatement alors qu'elle n'est pas encore sur l'historique, ce que je ne comprends pas du tout !

Et là, la situation est meilleure ! Si nous avons cette astuce, au moins l'ordre est corrigé lorsqu'il est déjà dans l'historique.

Cependant, la nahodka ne prend aucune valeurvraie une fois sur cinq à dixet il n'y a plus de modification !

! - C'est à vous de faire preuve d'ingéniosité pour nommer le billet : tecket, tocket, tucket, etc. etc. N'êtes-vous pas vous-même troublé par ces noms ? Mon conseil : pour éviter toute confusion, ne le faites pas. C'est ainsi que LochBranding se construit, par exemple : ADIDAS et ADITAS...

De plus, il est inutile d'avoir autant de drapeaux, par ex :

     if (OrderSelect (ticket, SELECT_BY_TICKET))
     {
         //---- Проверяем закрыт этот ордер или нет
         if (OrderCloseTime > 0)
         {
             //---- Находим ордер, сработавший именно по тейкпрофиту 
             if (NormalizeDouble (OrderTakeProfit()- OrderClosePrice()), Digits) == 0.0)
             {
                 if (OrderSelect (tucket, SELECT_BY_TICKET))
                 {
                     double ld_SL = NormalizeDouble (Bid - treylingstop * Point, Digits);
                     if (NormalizeDouble (ld_SL - OrderStopLoss(), Digits) > 0.0)
                     {
                         Print ("втораямодифи    " );
                         OrderModify (tucket, OrderOpenPrice(), ld_SL, OrderTakeProfit(), 0, CLR_NONE);
                     }
                 }
             }
         }
     }
Il s'agit d'une improvisation facile basée sur votre code.
 
Merci !!!!!!!
 
Dimka-novitsek:
Ouais, c'est ça ! !!
Dimka-novitsek:

Voici comment cela ne modifie pas bye - et c'est une condition zircale, et cela ne fonctionne pas non plus tout le temps.

C'est l'endroit.


Il ne devrait pas être modifié, car la dernière transaction, et en général toutes celles du graphique donné, sont fermées sur sl.
 
lottamer:

il s'avère que la fonction SecondsAfterOpenLastPos() de la bibliothèque de Kim renvoie ces nombres 1355319542 , et le dernier nombre est en réalité des secondes... vous pouvez voir comment ils changent.....

Qu'est-ce que c'est ? Si c'est vraiment des secondes - ça fait 43 ans.... et demi.... et la fonction doit retourner les secondes à partir du moment où la dernière transaction a été FERMÉE...

Bien qu'il s'est avéré que même OrderOpenTime donne le temps dans le même format ... comment le traduire en sens inverse ? doit apparemment prendre le temps actuel et soustraire OrderOpenTime. Comment obtenir l'heure actuelle ?


Si vous voulez voir l'heure dans un format auquel vous êtes plus habitué, utilisez les fonctions de conversion, il y en a beaucoup dans la section d'aide de la date et de l'heure, vous pouvez afficher le résultat dans différents formats, par exemple jours, heures, minutes, heure...

La dernière heure du serveur sera renvoyée par la fonction iClose pour la barre zéro. Ou simplementClose[0].

Cette fonction renvoie le dernier prix connu. Le temps reviendra

TimeCurrent( )
 
rigonich:


Si vous voulez voir l'heure dans un format plus familier, utilisez les fonctions de traduction, il y en a beaucoup dans la section d'aide sur la date et l'heure, vous pouvez afficher ce que vous voulez, séparer les jours, les heures, les minutes, l'heure dans différents formats...

La dernière heure du serveur sera renvoyée par la fonction iClose pour la barre zéro. Ou simplementClose[0].

Cette fonction renvoie le dernier prix connu. Le temps reviendra

TimeCurrent( )


j'ai réussi à récupérer le message :))), bien que je l'aie supprimé...j'ai découvert que l'heure est trouvée en soustrayant simplementTimeCurrent()-OrderOpenTime()
 
lottamer:

J'ai réussi à récupérer le message :))), bien que je l'aie supprimé...ayant découvert que l'heure est trouvée en soustrayant simplement TimeCurrent()-OrderOpenTime()

Si vous voulez que je ne réponde pas à vos questions, dites-le simplement.
 

Je n'ai qu'une seule position sur le marché... donc ça ne manquera pas...

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))

Raison: