Demandez ! - page 29

 
Yannis:
Dave,

Essayez de modifier votre code en utilisant l'extrait suivant et faites-moi savoir si cela a fonctionné.

Yannis

int i=0 ;

for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)

OrderSelect(i, SELECT_BY_POS, MODE_TRADES) ;

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && ( OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && ( OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

return(0) ;

}

}

J'ai un problème avec le fait qu'il modifie toujours les transactions dans le backtester, encore et encore. Comment faire pour qu'il ne modifie les transactions qu'une seule fois ? Comme le programme se met en veille, les seules transactions qui doivent être modifiées sont celles qui sont encore ouvertes.

Veuillez voir le fichier .Gif ci-joint des résultats du backtest. Je suis si près d'y arriver - Conseillez-moi ! J'utilise cette modification de Take Profit et Stop Loss en conjonction avec le mode veille. Voir le code ci-dessous

int start()

{

if (UseHourTrade)

{

int a=0 ;

int b=0 ;

int c=0 ;

if( !(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1 ;

if( !(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2)) b=1 ;

if( !(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3)) c=1 ;

si(a==1 && b==1 && c==1)

{

Commentaire(

"\n"," * CONSEILLER EXPERT EN ÉNERGIE SOLAIRE *",

"\n",

"\n", " - PROGRAMME EN CYCLE DE SOMMEIL - ",

"\n",

"\n"," > HEURES DE NON-TRADING ! <") ;

///////////////////MODIFIER LE STOP LOSS ET LE TAKE PROFIT AU DÉBUT DU CYCLE DE SOMMEIL /////////////////

int h=0 ;

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(h, SELECT_BY_POS, MODE_TRADES) ;

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

return(0) ;

}

}

Dave <<<

VEUILLEZ REGARDER LA VIGNETTE CI-JOINTE !

 

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES) ;

pour qu'il compte le même nombre

 

Je ne comprends pas. Comment puis-je corriger cette erreur ?? Peut-être que je vois - Laissez-moi changer cnt1 en h. Ai-je raison ?

Dave

<<

 
phoenix:
votre OrderSelect() n'a pas compté la base sur la boucle en cours d'exécution.

int start()

{

if (UseHourTrade)

{

int a=0 ;

int b=0 ;

int c=0 ;

if( !(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1 ;

if( !(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2)) b=1 ;

if( !(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3)) c=1 ;

si(a==1 && b==1 && c==1)

{

Commentaire(

"\n"," * CONSEILLER EXPERT EN ÉNERGIE SOLAIRE *",

"\n",

"\n", " - PROGRAMME EN CYCLE DE SOMMEIL - ",

"\n",

"\n"," > HEURES DE NON-TRADING ! <") ;

///////////////////MODIFIER LE STOP LOSS ET LE TAKE PROFIT AU DÉBUT DU CYCLE DE SOMMEIL /////////////////

//int h=0 ;

for (int h=OrdersTotal()-1;h>=0;h--)

OrderSelect(h, SELECT_BY_POS, MODE_TRADES) ;

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

return(0) ;

}

}

///////////////////////////////////////////////////////////////////////////////////////

J'ai effectué les changements mais j'obtiens toujours une boucle constante de modifications par rapport à un changement unique.

Veuillez me conseiller à nouveau, s'il vous plaît !

Dave

<<<

 

Veuillez poster votre code dans les codes [PHP][/PHP]. Il est beaucoup plus facile de lire et de déboguer un code formaté.

 

Onglet de saisie de l'indicateur

Comment et où puis-je coder un indicateur pour que l'onglet d'entrée ne s'affiche plus lorsqu'il est attaché au graphique ?

Merci,

solaris

 
iscuba11:
int start()

{

if (UseHourTrade)

{

int a=0 ;

int b=0 ;

int c=0 ;

if( !(Hour()>=FromHourTrade1 && Hour()<=ToHourTrade1)) a=1 ;

if( !(Hour()>=FromHourTrade2 && Hour()<=ToHourTrade2)) b=1 ;

if( !(Hour()>=FromHourTrade3 && Hour()<=ToHourTrade3)) c=1 ;

si(a==1 && b==1 && c==1)

{

Commentaire(

"\n"," * CONSEILLER EXPERT EN ÉNERGIE SOLAIRE *",

"\n",

"\n", " - PROGRAMME EN CYCLE DE SOMMEIL - ",

"\n",

"\n"," > HEURES DE NON-TRADING ! <") ;

///////////////////MODIFIER LE STOP LOSS ET LE TAKE PROFIT AU DÉBUT DU CYCLE DE SOMMEIL /////////////////

//int h=0 ;

for (int h=OrdersTotal()-1;h>=0;h--)

OrderSelect(h, SELECT_BY_POS, MODE_TRADES) ;

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{if( OrderStopLoss() > Ask + Point * 15 || OrderStopLoss() == 0 )

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

if( OrderStopLoss() < Bid - Point * 15 )

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan) ; //Modifier le stop loss et le take profit

return(0) ;

}

return(0) ;

}

}

///////////////////////////////////////////////////////////////////////////////////////

J'ai effectué les changements mais j'obtiens toujours une boucle constante de modifications par rapport à un changement unique.

Veuillez me conseiller à nouveau, s'il vous plaît !

Dave

<<<

essayez d'ajouter la ligne violette ... cela peut aider

 
solaris:
Comment et où coder un indicateur pour que l'onglet de saisie ne s'affiche plus lorsqu'il est attaché au graphique ?

Merci,

solaris

pourquoi ne pas essayer de l'enregistrer en tant que modèle... il n'y aura pas besoin de configurer à nouveau les paramètres lorsque vous appellerez tous vos indicateurs dans le nouveau graphique.

 

J'ai fait ce que vous avez suggéré ! (j'apprécie votre patience)

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES) ;

** Mais j'obtiens toujours des modifications massives de la boucle sur un seul trade comme avant !

J'ai apparemment une boucle dans une boucle dans la logique !

Dave

<<

Veuillez consulter les derniers résultats du backtest. Excusez le logo.htm - Je n'arrive pas à m'en débarrasser.

 
iscuba11:
J'ai fait comme vous l'avez suggéré ! (J'apprécie votre patience)

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES) ;

** Mais j'obtiens toujours des modifications massives de la boucle sur un seul trade comme avant !

J'ai manifestement une boucle dans une boucle dans la logique !

Dave

<<
Veuillez voir les derniers résultats du backtest. Excusez le logo.htm - Impossible de s'en débarrasser.

avez-vous déjà essayé d'ajouter le violet ci-dessus ?

theif( OrderStopLoss() > Ask + Point * 15 || OrderStopLoss() == 0 )

et si( OrderStopLoss() < Bid - Point * 15 )