Est-ce que quelqu'un peut m'aider à affiner un EA, s'il vous plaît ?
il peut faire mieux - tout ce que je vois, c'est acheter et vendre aux mauvais endroits.
Voulez-vous expliquer votre stratégie ? Nous devons vérifier si elle est codée conformément à la stratégie indiquée avant de pouvoir l'affiner.
Si les codes sont corrects et que nous obtenons de mauvaises transactions de la part de l'EA, alors la stratégie est en cause ? La stratégie fonctionne-t-elle bien en trading manuel ?
Voulez-vous expliquer votre stratégie ? Nous devons vérifier si elle est codée conformément à la stratégie indiquée avant de pouvoir l'affiner.
Si les codes sont corrects et que nous obtenons de mauvais trades de l'EA, alors la stratégie est en cause ? La stratégie fonctionne-t-elle bien en trading manuel ?
merci d'être revenu
la stratégie est - elle ne doit acheter ou vendre que lorsque les ema se croisent. il y a un paramètre qui fonctionne bien et si elle n'achète et ne vend que sur les croisements, elle prendra des bénéfices.
J'ai attaché la stratégie telle qu'elle est mais elle n'achète pas au croisement des 2 emas.
il doit fermer l'ordre ouvert et acheter lorsque l'ema courte croise l'ema longue et vice-versa. à ce stade, je veux qu'il ne fasse que cela.
Je suis novice en programmation mais je veux en apprendre davantage.
Pouvez-vous m'aider ?
en l'état actuel des choses, il fait le travail sur l'eur/usd 15 et le 1h tf - mais pas assez.
merci d'être revenu
La stratégie est la suivante : elle ne doit acheter ou vendre que lorsque les ema se croisent. Il existe un paramètre qui fonctionne bien et s'il n'achète et ne vend que sur les croisements, il prend des bénéfices.
J'ai attaché la stratégie telle qu'elle est mais elle n'achète pas au croisement des 2 emas.
il doit fermer l'ordre ouvert et acheter lorsque l'ema courte croise l'ema longue et vice-versa. à ce stade, je veux qu'il ne fasse que cela.
Je suis novice en programmation mais je veux en apprendre davantage.
Pouvez-vous m'aider ?
en l'état actuel des choses, il fait le travail sur l'eur/usd 15 et le tf 1 h - mais pas assez.
je le soupçonne ; pour les croisements d'EMA votre code est incorrect
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0) ;
vous avez besoin de deux iMA pour le longema et le shortma.
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
et pour vérifier le croisement
si (SEMA1>LEMA1 && SEMA2<LEMA2) envoyer un ordre d'achat
et pour la vente
si (SEMA1<LEMA1 && SEMA2>LEMA2) envoyer un ordre de vente
Je le soupçonne ; pour les croisements EMA votre code est incorrect
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0) ;
vous avez besoin de deux iMA pour le longema et le shortma
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
et pour vérifier le croisement
si (SEMA1>LEMA1 && SEMA2<LEMA2) envoyer un ordre d'achat
et pour la vente
si (SEMA1<LEMA1 && SEMA2>LEMA2) envoyer un ordre de vente
ok alors le
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
doit être placé dans les conditions de "vérification des ordres ouverts" - sous "obtenir la moyenne mobile".
et le "
if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order" où ?
Je dois également définir les LEMA1 et LEMA2 en haut de la page.
encore nouveau dans ce
mon skype est delcor59 si vous voulez me skypez
merci pour votre aide
ok alors
SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
doit être placé dans les conditions de "vérification des ordres ouverts" - sous "obtenir la moyenne mobile".
et le "
if (SEMA1>LEMA1 && SEMA2<LEMA2) send buy order" où ?
De plus, les LEMA1 et LEMA2 doivent être définis en haut de la page.
Je suis encore novice dans ce domaine.
mon skype est delcor59 si vous voulez me skypez
merci pour votre aide
quelque chose comme ceci en modifiant vos propres codes....
void CheckForOpen()
{
double Ema ;
int res ;
//---- trading seulement pour les premiers tiks de la nouvelle barre
if(Volume[0]>1) return ;
//---- obtenir la moyenne mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0) ;
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
//---- conditions de vente
// if(Open[1]>Ema && Close[1]<Ema)
si (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red) ;
retour ;
}
//---- conditions d'achat
// if(Open[1]<Ema && Close[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue) ;
retour ;
}
//----
}
void CheckForClose()
{
double Ema ;
//---- trading seulement pour les premiers tiks de la nouvelle barre
if(Volume[0]>1) return ;
//---- obtenir la moyenne mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0) ;
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue ;
//---- vérifier le type d'ordre
if(OrderType()==OP_BUY))
{
// si(Open[1]>Ema && Close[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White) ;
pause ;
}
si(OrderType()==OP_SELL))
{
// si(Open[1]<Ema && Close[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White) ;
break ;
}
}
//----
}
quelque chose comme cela en modifiant vos propres codes....
void CheckForOpen()
{
double Ema ;
int res ;
//---- aller trader seulement pour les premiers tiks de la nouvelle barre
if(Volume[0]>1) return ;
//---- obtenir la moyenne mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0) ;
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
//---- conditions de vente
// if(Open[1]>Ema && Close[1]<Ema)
si (SEMA1<LEMA1 && SEMA2>LEMA2)
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red) ;
retour ;
}
//---- conditions d'achat
// if(Open[1]<Ema && Close[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue) ;
retour ;
}
//----
}
void CheckForClose()
{
double Ema ;
//---- trading seulement pour les premiers tiks de la nouvelle barre
if(Volume[0]>1) return ;
//---- obtenir la moyenne mobile
Ema=iMA(NULL,0,ShortEma,LongEma,MODE_EMA,PRICE_CLOSE,0) ;
double SEMA1=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double LEMA1=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,1) ;
double SEMA2=iMA(NULL,0,ShortEma,0,MODE_EMA,PRICE_CLOSE,2) ;
double LEMA2=iMA(NULL,0,LongEma,0,MODE_EMA,PRICE_CLOSE,2) ;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue ;
//---- vérifier le type d'ordre
if(OrderType()==OP_BUY))
{
// si(Open[1]>Ema && Close[1]<Ema)
if (SEMA1<LEMA1 && SEMA2>LEMA2) OrderClose(OrderTicket(),OrderLots(),Bid,3,White) ;
pause ;
}
si(OrderType()==OP_SELL))
{
// si(Open[1]<Ema && Close[1]>Ema)
if (SEMA1>LEMA1 && SEMA2<LEMA2) OrderClose(OrderTicket(),OrderLots(),Ask,3,White) ;
break ;
}
}
//----
}
merci encore
Il y a quelque chose qui ne va pas. Quand je fais un back test de l'Ea, il n'y a que des achats et pas de ventes.
merci encore
Il y a quelque chose qui ne va pas. Quand je fais un back test de l'Ea, il n'y a que des achats et pas de ventes.
j'ai remarqué que selon l'ordre qui est lancé en premier, c'est à dire achat ou vente, lorsque le croisement commence, vous lancez un ordre et lorsque le croisement opposé commence, vous fermez l'ordre ; dans votre start(), lorsque vous vérifiez l'existence d'un ordre de marché, vous empêchez celui du type d'ordre de ne jamais être lancé, c'est à dire que lorsque vous commencez par un achat, il sera toujours un achat ; lorsque vous commencez par un ordre de vente, il sera toujours un ordre de vente.
j'ai remarqué que selon l'ordre qui est lancé en premier, c'est à dire achat ou vente, lorsque le croisement commence, vous lancez un ordre et lorsque le croisement opposé commence, vous fermez l'ordre ; dans votre start(), lorsque vous vérifiez l'existence d'un ordre de marché, vous empêchez celui du type d'ordre de ne jamais être lancé, c'est à dire que lorsque vous lancez un ordre d'achat, il sera toujours un ordre d'achat ; lorsque vous lancez un ordre de vente, il sera toujours un ordre de vente ; supprimez cette condition de vérification.
Faites-vous référence à la condition de contrôle en bas de l'EA ?
//+------------------------------------------------------------------+//| Start function |
//+------------------------------------------------------------------+
void start()
{
//---- check for history and trading
if(Bars<100 || IsTradeAllowed()==false) return ;
//---- calculate open orders by current symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen() ;
else CheckForClose() ;
//----
}
car il y a aussi
void CheckForOpen()
void CheckForClose()
Faites-vous référence à la condition de vérification au bas de l'EA ?
//+------------------------------------------------------------------+//| Fonction de démarrage |
//+------------------------------------------------------------------+
void start()
{
//---- vérifier l'historique et les transactions
if(Bars<100 || IsTradeAllowed()==false) return ;
//---- calculer les ordres ouverts par symbole actuel
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen() ;
sinon CheckForClose() ;
//----
}
car il y a aussi
void CheckForOpen()
void CheckForClose()
Dites-moi s'il y a un système de test sur la programmation de l'EA pour vous montrer pas à pas ce qui se passe lorsque cette EA est exécutée.
Faites-vous référence à la condition de vérification au bas de l'EA ?
//+------------------------------------------------------------------+//| Démarrer la fonction |
//+------------------------------------------------------------------+
void start()
{
//---- vérifier l'historique et les transactions
if(Bars<100 || IsTradeAllowed()==false) return ;
//---- calculer les ordres ouverts par symbole actuel
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen() ;
sinon CheckForClose() ;
//----
}
car il y a aussi
void CheckForOpen()
void CheckForClose()
if(Bars<100 || IsTradeAllowed()==false) return ;
//---- calculer les ordres ouverts par le symbole courant
CheckForOpen() ;
CheckForClose() ;
//----
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Est-ce que quelqu'un peut m'aider à affiner un EA, s'il vous plaît ?
il peut faire mieux - tout ce que je vois c'est acheter et vendre aux mauvais endroits