Comment coder ? - page 276

 

Bonjour.

Je commence à écrire et à comprendre du code. Jusqu'à présent, je suis débordé.

J'aimerais commencer à écrire un ea en utilisant l'histogramme MACD et lorsque la ligne de trigonométrie croise au-dessus et au-dessous de l'histogramme.

J'ai besoin d'un programme simple pour commencer à comprendre le code et le laisser fonctionner pour voir comment il fonctionne.

Merci à vous

daniel

 

Importation de lignes de tendance depuis Excel/CSV= ?

Bonjour, j'ai écrit quelques scripts simples ces derniers jours, en particulier ObjectCreate (OBJ_TREND avec Ray=1) c'est vraiment bien comment cela fonctionne mais comment puis-je dessiner des objets à partir d'un fichier csv prêt, où j'ai un historique des données de fermeture pour mes lignes de fermeture, parce que je veux être en mesure de supprimer mon modèle et importer les données chaque fois que j'en ai besoin avec un script,

Quelqu'un a-t-il une idée de comment cela pourrait fonctionner ?

Le CSV contient une date (sans heure) et une valeur de clôture (je n'ai pas besoin de plus de données pour les lignes).

et le script doit dessiner une ligne à partir de cette date avec Ray=1 et une couleur personnalisée.

Peut-être que le script pourrait aussi vérifier le graphique ouvert (symbole) et prendre le bon fichier CSV, si j'en ai plusieurs ;-)

Quelqu'un peut-il m'aider ?

 

Erreur pour OrderDelete(OrderTicket())

Bonjour à tous !

Je suis nouveau dans la programmation MQL4 mais d'un autre côté je connais le C++.

Mais j'ai quelques problèmes avec les fonctions de trading.

Voici mon problème :

Je crée un ordre en attente avec :

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slippage,0,0,"",0,0,0,Green) ;

et dans un autre point du programme je veux le supprimer :

if (OrderSelect(ticket,SELECT_BY_TICKET)) OrderDelete(OrderTicket()) ;

ERROR 4108 ! Pourquoi ? Le numéro du ticket est correct, je l'imprime.

Mais si j'utilise :

si (OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket()) ;

c'est OK !

Pourquoi ?

Merci pour votre aide et pour le forum.

 

Code pour terminer l'EA ?

Bonjour à tous,

Je suis à la recherche d'un code permettant de terminer un EA. J'ai posté une petite martingale que j'ai écrite. J'ai fait en sorte qu'elle ferme tous les ordres en attente et ouverts lorsqu'elle atteint un certain pourcentage de l'épuisement du compte. J'ai également réussi à faire en sorte qu'il arrête de trader lorsqu'un objectif de profit quotidien est atteint. Il recommence à trader le jour suivant. (Merci à celui qui a écrit SWB Grid, puisque j'ai utilisé son code).

Cependant, j'aimerais que l'EA s'arrête lorsqu'il atteint une certaine condition. Disons qu'il atteint le pourcentage maximum de Drawdown et ferme tous les ordres en attente et les positions ouvertes. À ce moment-là, je veux que l'EA s'arrête d'elle-même pour qu'elle ne recommence pas à trader jusqu'à ce que je la retire du graphique et la remette en place.

Voici l'EA. Toute suggestion ou aide est grandement appréciée !

Merci,

Joe

Dossiers :
 

Besoin d'aide sur "'\end_of_program' - parenthèse gauche déséquilibrée".

Bonjour, j'ai travaillé sur un EA et je continue à avoir un message d'erreur lors de la compilation : "'\end_of_program' - unbalanced left parenthesis". Habituellement, ce message d'erreur est lié à un nombre inégal de parenthèses gauche et droite. Cependant, j'ai vérifié mes codes de haut en bas et j'ai constaté que j'ai un nombre égal de parenthèses gauche et droite. Cela me rend vraiment fou de ne pas pouvoir déterminer où le problème est survenu. Quelqu'un peut-il vérifier mes codes et me dire comment les réparer ? Merci beaucoup. Mes codes sont affichés ci-dessous :

//+------------------------------------------------------------------+

//| Breakout.mq4 |

//| Pooh |

//| |

//+------------------------------------------------------------------+

#property copyright "Pooh"

#property link ""

//--- paramètres d'entrée

extern int LengthI=23;//pour entrer sur le marché

extern int LengthO=7;//pour sortir du marché

extern double Lots=0.1 ; //pour la taille de l'ordre

extern int N1=14 ; //période pour ATR

extern int NLots=1 ; //nombre de lots de l'ordre augmenté

//+------------------------------------------------------------------+

//| fonction d' initialisation de l'expert

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0) ;

}

//+------------------------------------------------------------------+

//| fonction de désinitialisation experte |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0) ;

}

//+------------------------------------------------------------------+

//| fonction de démarrage expert |

//+------------------------------------------------------------------+

int start()

{

//----

double HLong,LLong,HShort,LShort ;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2)) ;

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2)) ;

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2)) ;

HShort=iHighest(NULL,0,iHighest(NULL,0,2,LengthO,2)) ;

int cnt, cot,ticket, total ;

total=OrdersTotal() ;

si (total<1)

{

si (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green) ;

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre long ouvert : ",OrderOpenPrice()) ;

}

sinon

Print("Erreur lors de l'ouverture d'un ordre long : ",GetLastError()) ;

return(0) ;

}

si (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red) ;

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre court ouvert :",OrderOpenPrice()) ;

}

else Print("Erreur lors de l'ouverture d'un ordre SHORT :",GetLastError()) ;

return(0) ;

}

return(0) ;

}

for(cnt=0;cnt<total;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

si(OrderType()==OP_BUY) // une position longue est ouverte

{

// doit-elle être fermée ?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//clôture la position

retour(0) ;

}

//modifier le stop suiveur

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green) ;

return(0) ;

}

else

{

si(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//clôture la position

return(0) ;

}

//modifier le stop suiveur

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red) ;

return(0) ;

}

}

}

//obtient le total des lots d'ordres longs et courts

double LOrderLots=0 ;

double SOrderLots=0 ;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots() ;

si(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots() ;

}

//augmenter l'ordre ouvert

for(cot=0,cot<=total,cot++)

{ //1

//ajoute une position pour l'ordre long

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //s'il y a des ordres ouverts

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- si l'ordre ouvert a été ouvert par EA pooh abd type est Long

{ //3

for(int i=1;i<=15;i++)

{si(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green) ; //5

if (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre long ouvert : ",OrderOpenPrice()) ;

} //6

sinon

Print("Erreur lors de l'ouverture d'un ordre long : ",GetLastError()) ;

pause ;

} //5

} //4

return(0) ;

//ajoute une position pour un ordre court

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL))

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red) ; //9

if (ticket>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre court ouvert : ",OrderOpenPrice()) ;

} // 10

sinon

Print("Erreur lors de l'ouverture d'un ordre court : ",GetLastError()) ;

pause ;

} //9

} //8

retour(0) ;

} //7

} //3

} //2

} //1

retour(0)

}

 

BESOIN d'un codeur pour coder un indicateur simple

J'ai besoin de quelqu'un pour coder un indicateur qui fait ceci :

Sur un simple Fibonacci en utilisant seulement les lignes 0,50,100. Lorsqu'une barre clôture au-dessus de 50% ou en dessous de 50%, mais en ayant la possibilité de choisir si je recherche une clôture au-dessus ou en dessous, pas les deux. Ainsi, si je recherche une clôture inférieure à 50 %, je ne veux pas que l'alerte se déclenche chaque fois que la clôture est supérieure à 50 %. Je veux qu'il m'alerte par un son et qu'il m'envoie un email et/ou un texte. Est-ce possible ? Merci !

IMAGE : http://tinypic.com/r/dhbu6v/5

 

Essayer de coder une logique simple, impossible !

Bonjour Forum,

Je crois que c'est une chose très simple à coder pour vous qui êtes assez bon à MQL4, mais je suis débutant et j'ai des problèmes, j'ai lu toutes les leçons ici mais je n'ai toujours pas réussi à le comprendre.

Je veux donc faire du trading automatisé

taille du lot 0.1

stoploss = 30 pips

objectif de profit 50 pips

paire AUDUSD

Si (prix haut - prix bas) < 60 pips entre 02:00 GMT et 10:00 GMT alors vendre AUDUSD au prix bas - 5 pips ou acheter AUDUSD au prix haut + 5 pips, sinon pas de transaction.

 
Avasys:
Bonjour Forum,

Je crois que c'est une chose très simple à coder pour ceux qui sont assez bons en MQL4, mais je suis débutant et j'ai des problèmes, j'ai lu toutes les leçons ici mais je n'ai toujours pas réussi à le comprendre.

Je veux donc faire du trading automatisé

taille du lot 0.1

stoploss = 30 pips

objectif de profit 50 pips

paire AUDUSD

Si (prix haut - prix bas) < 60 pips entre 02:00 GMT et 10:00 GMT alors vendez AUDUSD au prix bas - 5pips ou achetez AUDUSD au prix haut + 5pips, sinon pas de transaction.

[Bonjour, je pense qu'il n'y a aucun problème pour coder cet EA mais j'ai une question.

Quand voulez-vous acheter/vendre ? Avez-vous besoin d'ordres en attente sur les niveaux bas-5-haut+5 ?

Salutations,

Grzesiek[/lang]

 
g.pociejewski:
[Je pense que ce n'est pas un problème de coder cet EA mais j'ai une question.

Quand voulez-vous acheter/vendre ? Avez-vous besoin d'ordres en attente sur les niveaux bas-5-haut+5 ?

salutations,

Grzesiek[/lang]

Bonjour,

merci de votre aide

Oui, donc plus précisément la fourchette de négociation AUDUSD (différence entre le prix haut et le prix bas) entre 02:00 GMT et 10:00 GMT (ceci est très important dans le code) est inférieure à 60 pips donc c'est un signal tradable. Donc vous vendez si le prix atteint le prix bas (entre 02:00 et 10:00) - 5 pips et vous achetez si le prix atteint le prix haut + 5 pips.

exemple

entre 02:00 et 10:00 GBPUSD le prix bas était de 1.6000, le prix haut de 1.6050, donc si le prix atteint 1.5995 vendez automatiquement et si le prix atteint 1.6055 achetez automatiquement en plaçant un ordre stop de 30 pips et un ordre take profit de 50 pips.

Si vous n'avez pas le temps, donnez-moi juste une indication sur la façon de commencer, j'ai lu les leçons mais je n'ai pas la pratique pour faire le travail.

merci

 
pooh123:
Bonjour, j'ai travaillé sur un EA et je continue à avoir un message d'erreur lors de la compilation : "'\end_of_program' - parenthèse gauche déséquilibrée". Habituellement, ce message d'erreur est lié à un nombre inégal de parenthèses gauche et droite. Cependant, j'ai vérifié mes codes de haut en bas et j'ai constaté que j'ai un nombre égal de parenthèses gauche et droite. Cela me rend vraiment fou de ne pas pouvoir déterminer où le problème est survenu. Quelqu'un peut-il vérifier mes codes et me dire comment les réparer ? Merci beaucoup. Mes codes sont affichés ci-dessous :

//+------------------------------------------------------------------+

//| Breakout.mq4 |

//| Pooh |

//| |

//+------------------------------------------------------------------+

#property copyright "Pooh"

#property link ""

//--- paramètres d'entrée

extern int LengthI=23;//pour entrer sur le marché

extern int LengthO=7;//pour sortir du marché

extern double Lots=0.1 ; //pour la taille de l'ordre

extern int N1=14 ; //période pour ATR

extern int NLots=1 ; //nombre de lots de l'ordre augmenté

//+------------------------------------------------------------------+

//| fonction d'initialisation de l'expert

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0) ;

}

//+------------------------------------------------------------------+

//| fonction de désinitialisation experte |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0) ;

}

//+------------------------------------------------------------------+

//| fonction de démarrage expert |

//+------------------------------------------------------------------+

int start()

{

//----

double HLong,LLong,HShort,LShort ;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2)) ;

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2)) ;

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2)) ;

HShort=iHighest(NULL,0,iHighest(NULL,0,2,LengthO,2)) ;

int cnt, cot,ticket, total ;

total=OrdersTotal() ;

si (total<1)

{

si (iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green) ;

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre long ouvert : ",OrderOpenPrice()) ;

}

sinon

Print("Erreur lors de l'ouverture d'un ordre long : ",GetLastError()) ;

return(0) ;

}

si (iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red) ;

si (ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre court ouvert :",OrderOpenPrice()) ;

}

else Print("Erreur lors de l'ouverture d'un ordre SHORT :",GetLastError()) ;

return(0) ;

}

return(0) ;

}

for(cnt=0;cnt<total;cnt++)

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())

{

si(OrderType()==OP_BUY) // une position longue est ouverte

{

// doit-elle être fermée ?

if(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//clôture la position

retour(0) ;

}

//modifier le stop suiveur

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green) ;

return(0) ;

}

else

{

si(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//clôture la position

return(0) ;

}

//modifier le stop suiveur

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red) ;

return(0) ;

}

}

}

//obtient le total des lots d'ordres longs et courts

double LOrderLots=0 ;

double SOrderLots=0 ;

for(cnt=0,cnt<=total,cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots() ;

si(OrderSymbol()==Symbol()&&OrderType()==OP_SELL)

SOrderLots=LOrderLots+OrderLots() ;

}

//augmenter l'ordre ouvert

for(cot=0,cot<=total,cot++)

{ //1

//ajoute une position pour l'ordre long

if(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //s'il y a des ordres ouverts

{ if(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- si l'ordre ouvert a été ouvert par EA pooh abd type est Long

{ //3

for(int i=1;i<=15;i++)

{si(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green) ; //5

if (ticket>0)

{ //6

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre long ouvert : ",OrderOpenPrice()) ;

} //6

sinon

Print("Erreur lors de l'ouverture d'un ordre long : ",GetLastError()) ;

pause ;

} //5

} //4

return(0) ;

//ajoute une position pour un ordre court

if(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL))

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1)) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red) ; //9

if (ticket>0)

{ // 10

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordre court ouvert : ",OrderOpenPrice()) ;

} // 10

sinon

Print("Erreur lors de l'ouverture d'un ordre court : ",GetLastError()) ;

pause ;

} //9

} //8

retour(0) ;

} //7

} //3

} //2

} //1

return(0)

}

[Bonjour, il y a quelques erreurs, deux ") " non équilibrés dans la fonction OrderMagicNumer, vous devez utiliser () à la fin. Dans la boucle for, vous devriez utiliser " ;" au lieu de ",".

Si vous avez besoin de trouver des parenthèses non équilibrées, je vous recommande Notepad ++ [/lang].

Dossiers :
eamod.mq4  5 kb