Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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 )