Comment coder ? - page 74

 

Vous voulez dire :

if ( ( CloseSell1_1 CloseSell2_2 ) || ( CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

[/PHP]or do you mean:

[PHP]if ( ( CloseSell1_1 CloseSell2_2 || CloseSell3_1 > CloseSell3_2 ) ) Order = SIGNAL_CLOSESELL;

 

Merci.

Maintenant que j'y pense, c'était évident. Cela a fait l'affaire. Le backtest initial n'est pas si bon. Il est temps d'affiner.

 
Big Be:
J'ai besoin de savoir comment changer le Stop pour la MOITIÉ de mon ordre ouvert. Si je comprends bien, cela signifie qu'il faut ouvrir deux ordres, par exemple .2 lots et .2 lots.

Mon EA base le nombre de lots sur un calcul de Money Management.

Une fois que le stop d'un ordre est modifié (en fonction de l'atteinte d'un niveau de prix), je laisse mon code de sortie fermer les deux ordres, à moins que leurs stops (désormais différents) ne soient atteints.

L'autre ordre conserve son arrêt initial ou le déplace éventuellement jusqu'au seuil de rentabilité.

Si la quantité initiale de lots (de la fonction MM) est impaire, au lieu d'arrondir à la baisse pour un nombre impair de lots ou un dixième de lots, je voudrais les répartir de manière inégale entre les deux ordres.

Je crois que cela implique des nombres magiques, et quelques lignes de code ici et là. Peut-être y a-t-il un EA avec tout cela que je pourrais copier.

Merci pour toute aide.

Big Be

Bonjour, vous m'avez posé une question explicite à ce sujet ailleurs, mais il y a eu quelques réponses, et je ne sais pas quelles parties de vos problèmes pourraient subsister. Il faudra un tour où vous demanderez à nouveau ....

 

Bonjour Ralph,

ralph.ronnquist:
Bonjour ; vous m'avez posé une question explicite à ce sujet ailleurs, mais il y a eu quelques réponses, et je ne sais pas quelles parties de vos problèmes pourraient subsister. Il faudra un tour où vous poserez à nouveau la question....

Eh bien, aucune des réponses n'a réellement répondu à l'une de mes questions - certaines concernaient mes réponses aux questions des autres.

Donc toutes les parties restent. (Voir le message précédent pour la citation de la question que j'ai postée dans ce fil).

Merci,

Big Be

 

Problème de mise en place d'un ordre à cours limité

Salut les gars et les filles,

J'essaie de configurer le code de mon EA pour entrer une transaction à un niveau de prix spécifique (un ordre limite). Voici le code pour l'ordre limite :

ticket=OrderSend(Symbol(),OP_BUYLIMIT,lots,Ask+10*Point,3,BuyStopLoss,0, "xx Buy",16384,0,Red) ;

lots & BuyStopLoss sont des valeurs calculées prédéterminées, et elles fonctionnent avec la fonction "OP_BUY" d'un marché normal lorsque je la commute sur cette fonction. Ask+10*Point est juste une valeur arbitraire que j'ai trouvé au-dessus du prix actuel, j'utilise en fait normalement BuyEntry qui est également prédéterminé.

L'erreur que j'obtiens lorsque j'essaie d'exécuter le code dans le testeur de stratégie est la suivante :

"2008.02.24 16:00:08 2004.06.17 15:15 xxEA EURUSD,M15 : OrderSend error 130" (qui est une erreur liée au stoploss).

Une idée de la cause de cette erreur ? Je pense qu'il doit y avoir un problème avec la façon dont je configure l'ordre limite, ou bien il ne peut pas exécuter les ordres limites dans le testeur de stratégie ( ?) car il semble fonctionner correctement avec un ordre au marché. Merci pour toute aide.

 

Expert Advisor Builder ?

Lonestar:
Je suis relativement nouveau dans le monde de Metatrader, mais pas dans celui du trading, et j'ai créé quelques EAs en utilisant Expert Adviser Builder. La plupart fonctionnent bien mais j'ai des problèmes lorsque j'utilise des sorties multiples. Logique de fermeture (achat) et logique de fermeture (vente) avec la fonction OR. Les sorties multiples avec AND fonctionnent bien, mais il ne reconnaît pas celles que je crée avec OR. Voici le code de sortie.

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

//| Signal Begin(Exit Sell) |

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

if (CloseSell1_1 CloseSell2_2 || CloseSell3_1 > CloseSell3_2) Order = SIGNAL_CLOSESELL ;

La partie en gras est le signal qu'il ignore. J'ai des idées. C'est la seule chose qui m'empêche de faire un backtesting correct. Si quelqu'un peut m'aider et que le backtest est correct, je vous le laisse. En filtrant manuellement les transactions qui devraient être fermées, cela semble prometteur.

Merci.

Qu'est-ce que Expert Advisor Builder ?

 
nondisclosure007:
Qu'est-ce qu'Expert Advisor Builder ?

Quelque chose comme Gordago ou celui-ci

 

Taille de lot variable.

Bonjour,

Puis-je obtenir le code pour faire varier la taille du lot pour un EA ?

Par exemple, pour le premier ordre de vente 0.2, le second 0.1.

Merci,

SIDDESH

 
Linuxser:
Quelque chose comme Gordago ou celui-ci

Merci. J'aime Gordago pour les tests de stratégie (sans avoir à écrire un code). J'ai besoin de m'amuser avec les modèles qu'il utilise pour mon EA. Je me retrouve à faire quelques modifications sur ce qu'il crée pour répondre à mes propres styles de codage. Mais dans l'ensemble, je suis impressionné.

Je pensais que Gordago était un produit commercial ? Je ne vois nulle part combien il coûte.

 

ERR_COMMON_ERROR #2 lors de l'ouverture d'une transaction

Bonjour à tous,

Après l'aide merveilleuse de l'autre jour avec les problèmes de NewBar que j'avais, j'ai appris énormément et j'ai progressé énormément avec mon EA d'apprentissage que je programme. (Principalement comme un exercice d'apprentissage et un système très basique que je veux tester (ne sera certainement pas rentable, mais c'est un bon exercice d'apprentissage !)

J'ai écrit un script, à chaque nouvelle barre, il ferme toutes les transactions précédentes sur la paire actuelle, puis prend la valeur ATR sur 20 périodes et entre un stop d'achat et un stop de vente pour entrer sur le marché quand il se déplace à la moitié de la valeur ATR depuis l'ouverture du marché. Le Take Profit est alors fixé à la valeur ATR (à mon avis, si la paire a parcouru la moitié du chemin, il est probable que, d'après le mouvement moyen de la journée, elle continuera à atteindre le Take Profit. Je me trompe probablement complètement, mais je veux quand même le programmer pour essayer des valeurs - sur un compte de démonstration plutôt que sur le Strategy Tester).

J'ai programmé tout cela et j'ai finalement trouvé comment supprimer les chiffres supplémentaires après la décimale en utilisant NormalizeDouble, mais maintenant, lorsque l'EA essaie d'ouvrir un stop d'achat au début de la barre, j'ai ERR_COMMON_ERROR ou Error #2.

C'est vraiment inutile. J'ai vérifié les valeurs qu'il définit pour Open, Take Profit et Stop Loss et elles semblent toutes raisonnables et je ne vois pas ce que cela pourrait être d'autre. C'est ma frustration de la soirée car je n'ai pas eu plus de retour de la GetLastError que cela ! Merci de m'aider.

ATR_Value = iATR(NULL,0,ATR_Period,0); //Get current ATR Value from chart

if (ATR_Value < (ATR_Minimum*Point)) //Check current ATR_Value to ensure it is no less than the ATR_Minimum set

{

Print("Too little range for trading. ATR_Minimum ",(ATR_Minimum*Point)," ATR_Value ",ATR_Value);

return(0);

}

double buyopen,nbuyopen,buysl,nbuysl,buytp,nbuytp,sellopen,nsellopen,sellsl,nsellsl,selltp,nselltp;

buyopen=((iOpen(NULL,0,0))+(ATR_Value*Open_Multiplier)+Open_Offset);

nbuyopen=NormalizeDouble(buyopen,Digits);

buysl=((iOpen(NULL,0,0))+(ATR_Value*SL_Multiplier)+SL_Offset);

nbuysl=NormalizeDouble(buysl,Digits);

buytp=((iOpen(NULL,0,0))+(ATR_Value*TP_Multiplier)+TP_Offset);

nbuytp=NormalizeDouble(buytp,Digits);

sellopen=((iOpen(NULL,0,0))-(ATR_Value*Open_Multiplier)-Open_Offset);

nsellopen=NormalizeDouble(sellopen,Digits);

sellsl=((iOpen(NULL,0,0))-(ATR_Value*SL_Multiplier)-SL_Offset);

nsellsl=NormalizeDouble(sellsl,Digits);

selltp=((iOpen(NULL,0,0))-(ATR_Value*TP_Multiplier)-TP_Offset);

nselltp=NormalizeDouble(sellsl,Digits);

Print("Open:",nbuyopen," TP:",nbuytp," SL:",nbuysl);

int ticketbuy;

ticketbuy=OrderSend(Symbol(),OP_BUYSTOP,Lots,nbuyopen,Max_Slippage,nbuysl,nbuytp,"Buy Order",12345,(Bar_Period-Bar_Offset),Green);

if(ticketbuy<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

int ticketsell;

ticketsell=OrderSend(Symbol(),OP_SELLSTOP,Lots,nsellopen,Max_Slippage,nsellsl,nselltp,"Buy Order",54321,(Bar_Period-Bar_Offset),Red);

if(ticketsell<0)

{

Print("Buy Order failed with error #",GetLastError());

return(0);

}

Merci beaucoup pour toute aide, j'ai également joint le mt4 si quelqu'un veut bien y jeter un coup d'œil. Il contient également des parties de scripts d'autres personnes qui, désolé je n'ai pas crédité, mais ils ont tous été affichés autour de ce site. (Je les créditerai bien sûr si jamais je publie EA, je poste ceci juste pour essayer de résoudre ce problème car c'est ma frustration du soir).

Howard

Dossiers :
atr.mq4  6 kb
Raison: