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

 

Bonsoir ! Je suis désolé, je crois que je vous ai déjà posé une question quelque part. L'un avec un takeprofit, et un trailing stop devrait fonctionner pour l'autre.

Dès que l'un prend un takeprofit, un trailing stop commence à fonctionner pour l'autre. Eh bien, il commence à fonctionner immédiatement lorsque les deux commandes sont passées !

//***************************************   
 
  nahodka=false;
 
 
 if (OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY)) { 
 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);}}}
  // Модифицируем оставшийся ордер

Comment et que choisit OrderSelect, si la commande avec le ticket n'est pas encore dans l'historique ?

 
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
               
               //EMA – период 10 пересекает с верху в низ EMA – период 200 , CCI пересекает уровень
 0,100 или-100 с вверху в низ; Свеча закрывается или находится ниже LMA – период 100
 
 bool CCInapravlenie=false;
 if(( CCI_50S>100&&CCI_50<100) ||(CCI_50S>0&&CCI_50<0)||( CCI_50S>-100&&CCI_50<-100 ) )CCInapravlenie=true;
 if(EMA_10S>EMA_20S&&EMA_10<EMA_20&&CCInapravlenie&&LMA_100<Ask&&!sellistavili){
 
 RefreshRates();   
           tocket=OrderSend (Symbol( ), OP_SELL,   lot , NormalizeDouble (Bid, Digits), 5 ,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   NormalizeDouble( Bid-( teykprofit*Point),Digits),   NULL, 450, 0, CLR_NONE);
           Error=GetLastError();if (Error==0){  
           Sleep(2000); RefreshRates();  
           tecket=OrderSend (Symbol( ), OP_SELL,  lot ,NormalizeDouble(Bid, Digits), 5,
 NormalizeDouble( Bid+ (stoploss*Point),Digits),   0, NULL, 450, 0, CLR_NONE); 
           if (Error==0){ profitsell = NormalizeDouble( Bid-( teykprofit*Point),Digits); tsenasell=Bid;  
           sellistavili= true; perenossell= false;  }}}
           
           if (Error!=0){  errorcomment = "Ошибка открытия  ордера OP_SELL"  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
 
 
 if(tsenasell-30*Point>Bid&&!perenossell){Print ("третямодифи    " );
 OrderSelect( tocket, SELECT_BY_TICKET ); 
Positionnement
 
Dimka-novitsek:

Bonsoir ! Je suis désolé, je pense que je vous ai déjà posé une question quelque part là-dedans. L'un avec un takeprofit, et un trailing stop devrait fonctionner pour l'autre.

Dès que l'un prend un takeprofit, un trailing stop commence à fonctionner pour l'autre. Eh bien, il commence à fonctionner immédiatement lorsque les deux commandes sont passées !

Comment et que sélectionne OrderSelect, si la commande avec le ticket n'est pas encore dans l'historique ?

Dans la boucle, on parcourt l'historiqueOrderSelect(index, SELECT_BY_POS , MODE_HISTORY), en comparant la valeur de tocket avec le ticket de la commande en cours de sélection.

La commande OrderSelect(tocket, SELECT_BY_TICKET , MODE_HISTORY) retournera true si la commande avec ce ticket est présente dans le terminal.

Pool - source de données pour la sélection. Il est utilisé lorsque le paramètre de sélection est égal à SELECT_BY_POS. Il peut s'agir de l'une des valeurs suivantes :

MODE_TRADES (par défaut) - l'ordre est sélectionné parmi les ordres ouverts et en attente,

MODE_HISTORY - l'ordre est sélectionné parmi les ordres fermés et supprimés.

Et juste au cas où, mettezNormalizeDouble(Bid+treylingstop*Point, Digits)

 
Merci ! !! Je vais m'amuser avec mon code !
 
Quel est le meilleur conseiller expert à utiliser pour visualiser le trading. Là encore, il est souhaitable de pouvoir utiliser différentes TF en même temps. Merci !
 

fini le conseiller ! il fait ce qu'il veut... mais...

La première pensée qui m'est venue à l'esprit : comment le testeur fonctionne-t-il avec l'historique des échanges? Par exemple, s'il y a la condition "si les 2 dernières barres étaient des pertes - n'achetez pas", il ne suffit pas que mon conseiller expert ignore cette condition (c'est peut-être une erreur - je vais y réfléchir). Mais que se passera-t-il lorsque le Testeur ouvrira ses propres marchés (qui sont déjà absents de l'historique du terminal) ? À quels téléscripteurs s'appliquera-t-il et dans quel historique ? le testeur ne semble pas attribuer de tickers aux transactions ! le testeur crée-t-il son propre historique des transactions ?

 
lottamer:

fini le conseiller ! il fait ce qu'il veut... mais...

La première pensée qui m'est venue à l'esprit : comment le testeur fonctionne-t-il avec l'historique des échanges ? Par exemple, s'il y a la condition "si les 2 dernières barres étaient des pertes - n'achetez pas"... Non seulement cela, mais mon conseiller expert ignore cette condition (peut-être une erreur - je vais y repenser). Mais que se passera-t-il lorsque le Testeur ouvrira ses propres marchés (qui sont déjà absents de l'historique du terminal) ? À quels téléscripteurs s'appliquera-t-il et dans quel historique ? le testeur ne semble pas attribuer de tickers aux transactions ! le testeur crée-t-il son propre historique des transactions ?


tout est attribué - regardez l'onglet "résultats". mais le testeur ne fait pas de miracles - vous devez savoir comment l'utiliser
 
YOUNGA:

tout est attribué - regardez l'onglet "résultats". mais le testeur ne fait pas de miracles - il faut savoir l'utiliser.

il n'y a pas de téléscripteur à plusieurs chiffres comme dans la vie réelle. Il y a un numéro de série de l'affaire. Tu le pensais vraiment ?
 
lottamer:

Il n'y a pas de ticker multivalué comme dans le trading réel. Il y a un numéro consécutif d'une affaire. Tu le pensais vraiment ?


S'il y avait autant de commandes dans le testeur que de commandes comptabilisées par le serveur, les données seraient également à plusieurs chiffres.

Le testeur, tout comme le serveur, attribue à chaque nouvel ordre un numéro de téléscripteur unique, mais le serveur le fait depuis la création de la société de courtage, pour tous ses clients et pour tous les instruments.

 
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 ?