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
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.
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) ;
}
}
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
<<
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
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
Comment et où coder un indicateur pour que l'onglet de saisie ne s'affiche plus lorsqu'il est attaché au graphique ?
Merci,
solarispourquoi 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 !
Dave
<<Veuillez consulter les derniers résultats du backtest. Excusez le logo.htm - Je n'arrive pas à m'en débarrasser.
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 !
Dave
<<avez-vous déjà essayé d'ajouter le violet ci-dessus ?
theif( OrderStopLoss() > Ask + Point * 15 || OrderStopLoss() == 0 )
et si( OrderStopLoss() < Bid - Point * 15 )