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

 
i999i:
int Count=0 ;
//+------------------------------------------------------------------+
//| fonction d'initialisation de l'expert|
//+------------------------------------------------------------------+
int init()
{
Alert ("The init() function failed on startup") ;
return ;
}
//+------------------------------------------------------------------+
//| expert start function|
//+------------------------------------------------------------------+
int start()
{
double Price = Bid ;
Count++ ;
Alert("New Tick ",Count," Price = ",Price) ;
return ;
}
//+------------------------------------------------------------------+
int deinit()
{
Alert ("Deinit() triggered on unloading") ;
return ;

}

D'après ce que j'ai compris, dans ce script, à chaque nouveau cours acheteur, un message ...... devrait apparaître, mais ce n'est pas le cas ...... Quel est le problème ? ...que faire ?

Vous devez probablement activer l'option "autoriser l'EA à commercer" dans les paramètres du terminal.
 

Y a-t-il un moyen de modifier le stop loss, mais de laisser le take profit sur une ligne (ne pas le mentionner, c'est-à-dire qu'il doit rester tel qu'il a été défini auparavant par d'autres fonctions) ?

OrderModify(OrderTicket(),0,stop_loss, ? ??, 0,CLR_NONE) ;

 
rigonich:


Si le testeur avait compté autant de commandes que le serveur, les données seraient également à plusieurs chiffres.

Le testeur, tout comme le serveur, attribue à chaque nouvel ordre un numéro d'ordre unique (ticket), mais le serveur le fait dès la création de la maison de courtage, pour tous ses clients et pour tous les instruments.


Je l'ai eu, merci :)))
 
rigonich:
Vous devez probablement avoir "autorisé l'EA à commercer" dans les paramètres du terminal.


Cela n'aide pas
 
i999i:

Cela n'aide pas

Désolé - toutes les classes ....... merci
 
lottamer:

Y a-t-il un moyen de modifier le stop loss, mais de laisser le take profit sur une ligne (ne pas le mentionner, c'est-à-dire qu'il doit rester tel qu'il a été défini auparavant par d'autres fonctions) ?

OrderModify(OrderTicket(),0,stop_loss, ? ??, 0,CLR_NONE) ;

OrderModify(OrderTicket(),OrderLots( ),stop_loss,OrderTakeProfit( ), 0,CLR_NONE) ;

Stop, donc votre lot est de 0.

 
Cette commande doit également être sélectionnée au préalable par OrderSelect. Je suis déjà passé par là - sinon le billet peut souvent devenir ce que vous voulez qu'il soit.
 
Dimka-novitsek:
Cette commande doit également être sélectionnée au préalable par OrderSelect. Sinon, le billet peut souvent devenir n'importe quoi.

Oui, le ticket sera celui que vous indiquez, mais les valeursOrderLots( ) etOrderTakeProfit( ), elles peuvent être retournées pour n'importe quel ordre.
 

Bonjour !

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

//***************************************   
 
 bool nahodka=false;
  
 if (OrderSelect(tacket, SELECT_BY_TICKET , MODE_HISTORY)) 
 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

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 !

//***************************************   
 
  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; 
 if (tocket==OrderTicket()) 
 if (OrderTakeProfit( )-3*Point<profitsell&&OrderTakeProfit( )+3*Point>profitsell) nahodka=true;}
     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tecket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )>Bid+treylingstop*Point ){ Print ("четвёртаямодифи    " );
 OrderModify(  tecket, OrderOpenPrice(), Bid+treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
 for ( i = OrdersTotal() - 1; i >= 0; i--)

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!

 
Ouais, c'est ça ! !!
Raison: