Comment coder ? - page 274

 

Malheureusement, il n'y a aucun moyen de modifier le commentaire une fois que vous avez ouvert un ordre. Il semble que metatrader ait été en mesure de fournir un retour en arrière en cas de fermeture partielle à certains courtiers uniquement par le biais du champ de commentaire et qu'ils aient ensuite décidé de ne plus le modifier pour nous (simples mortels).

JohnCrawdford:
bonjour,

Existe-t-il un moyen de modifier l'OrderComment, après la création de l'ordre ?

J'ai un EA qui crée des ordres en attente sur des points clés susceptibles d'être atteints, mais parfois ces ordres doivent être annulés/supprimés en raison de mouvements rapides indésirables sur les graphiques, il n'est donc pas possible d'utiliser le numéro de ticket pour identifier chaque ordre, car chaque ordre sur un point clé peut être ouvert et annulé/supprimé plusieurs fois, L'EA utilise donc un OrderComment unique pour identifier chaque ordre, mais de temps en temps, l'ordinateur qui exécute l'EA tombe en panne ou la connexion Internet est interrompue, ce qui perturbe l'identification de l'ordre clé et il serait donc utile de modifier l'OrderComment pour éviter les erreurs causées par le désordre qui se crée après que l'EA redémarre sans avoir terminé l'exécution précédente.

Très déroutant, non ?

P.S. Le numéro magique est utilisé pour identifier les ordres créés par l'EA, je ne peux donc pas utiliser ce numéro pour identifier chaque ordre individuellement.

Si quelqu'un peut me dire s'il existe un moyen de modifier les OrderComments, j'apprécierais,

Je vous remercie d'avance.
 

Comment avoir une compilation dynamique sur un EA ?

Bonjour à tous !

Je veux savoir comment créer un EA avec une compilation dynamique (F5) par exemple toutes les 20 secondes.

J'ai vu que la fonction F5 était définie par VK_F5 (Merci Coders Guru !). Mais comment l'exécuter ?

Voici mon EA

**********************************

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

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

#property copyright "Copyright © 2008, Systematic-Forex"

#property link "http://www.systematic-forex.com"

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 LightGray // Jaune

extern int TimeFrame = 5 ;

/*

extern string help_magic_number = "Définissez-le si vous utilisez l'option de fermeture 3 - fermeture par numéro magique" ;

extern int magic_number = 0 ; // à définir si vous utilisez l'option de fermeture 3 - fermeture par numéro magique

extern string help_comment_text = "à définir si vous utilisez l'option de fermeture 4 - fermeture par commentaire" ;

extern string comment_text = "" ;

extern bool HotKeyOn = true ;

extern bool CtrlOn = true ;

extern bool ShiftOn = false ;

extern bool AltOn = false ;

extern string HotKey = "A" ;

*/

#importation de "user32.dll".

bool GetAsyncKeyState(int nVirtKey) ;

#import

#include //for MessageBoxA

//---- Drapeaux de MessageBox()

#define MB_OK 0x00000000

#define MB_OKCANCEL 0x00000001

#define MB_ABORTRETRYIGNORE 0x00000002

#define MB_YESNOCANCEL 0x00000003

#define MB_YESNO 0x00000004

#define MB_RETRYCANCEL 0x00000005

#define MB_ICONHAND 0x00000010

#define MB_ICONQUESTION 0x00000020

#define MB_ICONEXCLAMATION 0x00000030

#define MB_ICONASTERISK 0x00000040

#define MB_USERICON 0x00000080

#define MB_ICONWARNING MB_ICONEXCLAMATION

#define MB_ICONERROR MB_ICONHAND

#define MB_ICONINFORMATION MB_ICONASTERISK

#define MB_ICONSTOP MB_ICONHAND

#define MB_DEFBUTTON1 0x00000000

#define MB_DEFBUTTON2 0x00000100

#define MB_DEFBUTTON3 0x00000200

#define MB_DEFBUTTON4 0x00000300

#define MB_APPLMODAL 0x00000000

#define MB_SYSTEMMODAL 0x00001000

#define MB_TASKMODAL 0x00002000

#define MB_HELP 0x00004000 // Bouton d'aide

#define MB_NOFOCUS 0x00008000

#define MB_SETFOREGROUND 0x00010000

#define MB_DEFAULT_DESKTOP_ONLY 0x00020000

#define MB_TOPMOST 0x00040000

#define MB_RIGHT 0x00080000

#define MB_RTLREADING 0x00100000

#define KEYEVENTF_EXTENDEDKEY 0x0001

#define KEYEVENTF_KEYUP 0x0002

#define VK_0 48

#define VK_1 49

#define VK_2 50

#define VK_3 51

#define VK_4 52

#define VK_5 53

#define VK_6 54

#define VK_7 55

#define VK_8 56

#define VK_9 57

#define VK_A 65

#define VK_B 66

#define VK_C 67

#define VK_D 68

#define VK_E 69

#define VK_F 70

#define VK_G 71

#define VK_H 72

#define VK_I 73

#define VK_J 74

#define VK_K 75

#define VK_L 76

#define VK_M 77

#define VK_N 78

#define VK_O 79

#define VK_P 80

#define VK_Q 81

#define VK_R 82

#define VK_S 83

#define VK_T 84

#define VK_U 85

#define VK_V 86

#define VK_W 87

#define VK_X 88

#define VK_Y 89

#define VK_Z 90

#define VK_LBUTTON 1 //Bouton gauche de la souris

#define VK_RBUTTON 2 //Bouton droit de la souris

#define VK_CANCEL 3 //Traitement de la rupture de contrôle

#define VK_MBUTTON 4 //Bouton central de la souris (souris à trois boutons)

#define VK_BACK 8 //Touche BACKSPACE

#define VK_TAB 9 //Touche TAB

#define VK_CLEAR 12 //Touche d'effacement

#define VK_RETURN 13 //Touche ENTREE

#define VK_SHIFT 16 //Touche SHIFT

#define VK_CONTROL 17 //Touche CTRL

#define VK_MENU 18 //Touche ALT

#define VK_PAUSE 19 //Touche PAUSE

#define VK_CAPITAL 20 //Touche de verrouillage des majuscules et des minuscules

#define VK_ESCAPE 27 //Touche ESC

#define VK_SPACE 32 //Barre d'espacement

#define VK_PRIOR 33 / Touche PAGE UP

#define VK_NEXT 34 //Touche PAGE DOWN

#define VK_END 35 //Touche de fin de page

#define VK_HOME 36 //Touche HOME

#define VK_LEFT 37 //Touche FLECHE GAUCHE

#define VK_UP 38 //Flèche du haut

#define VK_RIGHT 39 //Touche fléchée droite

#define VK_DOWN 40 //Touche fléchée BASSE

#define VK_PRINT 42 //Touche d'impression

#define VK_SNAPSHOT 44 //Touche d'impression d'écran

#define VK_INSERT 45 / Touche INS

#define VK_DELETE 46 /Touche DEL

#define VK_HELP 47 //Touche HELP

#define VK_LWIN 91 //Touche Windows gauche (clavier Microsoft® Natural®)

#define VK_RWIN 92 //Touche Windows droite (clavier naturel)

#define VK_APPS 93 //Touche Applications (clavier naturel)

#define VK_SLEEP 95 //Touche de veille de l'ordinateur

#define VK_NUMPAD0 96 /Touche 0 du clavier numérique

#define VK_NUMPAD1 97 //Touche de clavier numérique 1

#define VK_NUMPAD2 98 //Touche du clavier numérique 2

#define VK_NUMPAD3 99 //Touche du pavé numérique 3

#define VK_NUMPAD4 100 //Touche du pavé numérique 4

#define VK_NUMPAD5 101 //Touche 5 du clavier numérique

#define VK_NUMPAD6 102 //Touche du clavier numérique 6

#define VK_NUMPAD7 103 //Touche du pavé numérique 7

#define VK_NUMPAD8 104 //Touche du pavé numérique 8

#define VK_NUMPAD9 105 //Touche du pavé numérique 9

#define VK_MULTIPLY 106 //Touche de multiplication

#define VK_ADD 107 //Touche d'addition

#define VK_SEPARATOR 108 //Touche de séparation

#define VK_SUBTRACT 109 //Touche de soustraction

#define VK_DECIMAL 110 //Touche décimale

#define VK_DIVIDE 111 //Touche de division

#define VK_F1 112 /Touche F1

#define VK_F2 113 /Touche F2

#define VK_F3 114 /Touche F3

#Définir VK_F4 115 //F4 clé

#Définir VK_F5 116 //F5 clé

#Define VK_F6 117 //F6 clé

#Définir VK_F7 118 //F7 clé

#Define VK_F8 119 //F8 clé

#Définir VK_F9 120 //F9 clé

#Définition de la clé VK_F10 121 //F10

#define VK_F11 122 //F11 clé

#define VK_F12 123 //F12 clé

#define VK_F13 124 //F13 clé

#define VK_NUMLOCK 144 / Touche NUM LOCK

#define VK_SCROLL 145 //Touche LOCKSCROLL

#define VK_LSHIFT 160 //Touche SHIFT gauche

#define VK_RSHIFT 161 //Touche SHIFT droite

#define VK_LCONTROL 162 //Touche CONTROL gauche

#define VK_RCONTROL 163 //Touche CONTROL droite

#define VK_LMENU 164 //Touche MENU gauche

#define VK_RMENU 165 //Touche MENU droite

//---- tampons

double Buffer[] ;

int i,j ;

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

//| Fonction d'initialisation de l'indicateur personnalisé |

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

int init()

{

//---- indicateurs

SetIndexStyle(0,DRAW_LINE) ;

//SetIndexStyle(0,DRAW_SECTION) ;

//SetIndexStyle(0,DRAW_ARROW) ;

//SetIndexStyle(0,DRAW_HISTOGRAM) ;

//SetIndexStyle(0,DRAW_ZIGZAG) ;

//SetIndexStyle(0,DRAW_NONE) ;

SetIndexBuffer(0,Buffer) ;

SetIndexEmptyValue(0,EMPTY_VALUE) ;

Comment("\n"+"test_A_sar");

//----

return(0) ;

}

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

//| Fonction de désinitialisation de l'indicateur de garde |

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

int deinit()

{

Comment("") ;

retour(0) ;

}

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

//| Fonction d'itération de l'indicateur personnalisée |

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

int start()

{

int limite ;

int counted_bars=IndicatorCounted() ;

if(counted_bars>0) counted_bars-- ;

limit=Bars-counted_bars ;

for(int i=0 ; i<limit ; i++)

{

datetime i_Time = iTime(NULL, 0, i) ;

int j = iBarShift(NULL, TimeFrame, i_Time, bool false) ;

double sar_m5 = iSAR(NULL, PERIOD_M5 , 0.02, 0.2, j + 0) ;

double var_indicateur = sar_m5 ;

/*

//

if(Seconds()== 20)

{

Compilé ou VK_F5

}

if(Seconds()== 40)

{

Compilé ou VK_F5

}

*/

Buffer= sar_m5 ;

}

return(0) ;

}

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

**********************************

Meilleures salutations test_a_sar_m5.mq4test_a_sar_m5.mq4

Dossiers :
 

Aide

je suis confronté à un problème à cause du stop loss, si quelqu'un peut me donner une réponse à ce sujet. le problème est que dans certains graphiques metatrader la valeur des barres de prix montre en cinq chiffres (1.4545) mais dans mon metatrader il montre une valeur à six chiffres (1.45456). ainsi, quand il essaie de mettre le stop loss selon votre système, la valeur du stop loss devient 200 pips à 400 pips. je ne sais pas comment le réparer. je m'expose beaucoup. j'ai fait sauter mon compte deux fois à cause de ce problème.

Merci d'avance.

 

stratégie kelly en martingale gestion de l'argent

N'importe qui peut modifier ceci en stratégie kelly ou divisé par 10.

ma taille de lot est de 0,10 lorsque l'équité de départ est de 250 $, cela devrait passer à 0,11 lorsque l'équité augmente à 500 $.

-------------------------------------------------------------------

if(Gestion de l'argent)

{

switch(AccountType)

{

case 0 : lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1) ; break ;

cas 1 : lotsi=NormalizeDouble((risk*AccountEquity())/100000,2) ; break ;

cas 2 : lotsi=NormalizeDouble((risk*AccountEquity())/1000,2) ; break ;

par défaut : lotsi=NormalizeDouble(MathCeil((risk*AccountEquity())/10000)/10,1) ; break ;

}

-------------------------------------------------------------------

Merci

 

Question sur les coutumes

Je sais que j'ai posté sur le fil icustom mais...

selon le code guru code

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

comment puis-je obtenir un autre cadre temporel avec le même tampon ?

Je note que la même mémoire tampon peut avoir une valeur différente pour 2 périodes différentes.

Comment faire pour contourner ce problème ?

 
khatrisushil:
je suis confronté à un problème à cause du stop loss, si quelqu'un peut me donner une réponse à ce sujet. le problème est que dans certains graphiques metatrader la valeur des barres de prix montre en cinq chiffres (1.4545) mais dans mon metatrader il montre une valeur à six chiffres (1.45456). donc, quand il essaie de mettre le stop loss selon votre système, la valeur du stop loss devient 200 pips à 400 pips. je ne sais pas comment le réparer. je m'expose beaucoup. j'ai fait sauter mon compte deux fois à cause de ce problème. merci d'avance.

il faut détecter le courtier quel chiffre

dans le code vous devez être capable de détecter le type de chiffre, il y a assez d'exemple sur le codage d'EA de chiffre.

Par conséquent, vous pouvez vouloir étudier certains EA qui sont capables de gérer les courtiers à 4 ou 5 chiffres.

 

Aidez-moi à modifier mon EA sur le broker Market Execution !

Bonjour à tous, je suis novice en matière d'EA, j'ai réalisé un EA avec un signal de trahison :

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1) ;

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0) ;

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1) ;

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0) ;

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1) ;

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0) ;

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1) ;

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0) ;

si (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Ordre = SIGNAL_BUY ;

si (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL ;

Mais je ne comprends pas pourquoi mon EA peut fonctionner correctement en exécution instantanée (je pense que oui) mais en exécution de marché il ne fait rien, je suis trader chez easy-forex, leur compte de démonstration est en exécution instantanée, mon EA fonctionne bien, mais sur un compte réel en exécution de marché mon EA ne fait rien, je veux dire qu'il ne peut pas analyser le graphique sur ce MT4, pas d'erreur, rien.

J'ai contacté le support easy-forex et ils m'ont dit que l'exécution instantanée et l'exécution de marché étaient différentes. Je cherche donc quelqu'un qui a de l'expérience en matière d'EA et de trading. S'il vous plaît ! aidez-moi à modifier mon EA.

Merci beaucoup !

 
alvintran:
Bonjour tout le monde, je suis un nouveau dans le domaine des EA, j'ai créé un EA avec un signal d'erreur :

double Buy1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Buy1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Buy2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Buy2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Buy3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1) ;

double Buy3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0) ;

double Buy4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1) ;

double Buy4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0) ;

double Sell1_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Sell1_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 1) ;

double Sell2_1 = iMA(NULL, 0, 55, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Sell2_2 = iMA(NULL, 0, 200, 0, MODE_EMA, PRICE_CLOSE, Current + 0) ;

double Sell3_1 = iSAR(NULL, 0, 0.005, 0.05, Current + 1) ;

double Sell3_2 = iSAR(NULL, 0, 0.005, 0.05, Current + 0) ;

double Sell4_1 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 1) ;

double Sell4_2 = iMACD(NULL, 0, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, Current + 0) ;

si (Buy1_1 = Buy2_2 && Buy3_1 < Buy3_2 && Buy4_1 < Buy4_2) Ordre = SIGNAL_BUY ;

si (Sell1_1 > Sell1_2 && Sell2_1 Sell3_2 && Sell4_1 > Sell4_2) Order = SIGNAL_SELL ;

Mais je ne comprends pas pourquoi mon EA peut fonctionner correctement en exécution instantanée (je pense que oui) mais en exécution de marché il ne fait rien, je suis trader chez easy-forex, leur compte de démonstration est en exécution instantanée, mon EA fonctionne bien, mais sur un compte réel en exécution de marché mon EA ne fait rien, je veux dire qu'il ne peut pas analyser le graphique sur ce MT4, pas d'erreur, rien.

J'ai contacté le support easy-forex et ils m'ont dit que l'exécution instantanée et l'exécution de marché étaient différentes. Je cherche donc quelqu'un qui a de l'expérience en matière d'EA et de trading. S'il vous plaît ! aidez-moi à modifier mon EA.

Merci beaucoup !

[Je pense que cela peut être un problème avec SL/TP. Veuillez me montrer votre code, ou la partie

où vous envoyez les ordres.

Merci,

Grzesiek[/lang]

 
g.pociejewski:
[Je pense que cela peut être un problème avec SL/TP. S'il vous plaît montrez-moi votre code, ou une partie

où vous envoyez vos commandes.

A la vôtre,

Grzesiek[/lang]

Non non, ce n'est pas un problème de SL/TP, je connais ce problème, j'ai dit qu'il ne fait rien, cela signifie que sur un compte de démonstration ( exécution instantanée ou quelque chose que je ne connais pas) il fonctionne bien, mais sur un compte réel il ne fonctionne pas, pas de problème, il ne fait rien.

Cet EA est écrit par moi, pas acheté, pas en version d'essai, pas limité.

S'il vous plaît !

 

Ajout d'intervalles de temps et obtention de tampons

mtuppers:

double clr = iCustom(NULL,0,"LSMA in Color",14,1500,5,0);

string sclr;

if(clr==1) sclr="Red";

if(clr==2) sclr="Green";

if(clr==3) sclr="Yellow";

Comment puis-je obtenir un autre intervalle de temps avec le même tampon ?

Notez que le même tampon peut avoir une valeur différente pour deux périodes différentes.

comment le contourner ?

Salut Mtuppers,

Original Current Time Frame :

double clr = iCustom(NULL,0, "LSMA in Color",14,1500,5,0) ;

Ajoutez la période de temps que vous voulez et changez le nom de la variable pour la rendre différente (clr et clr2) :

double clr2 = iCustom(NULL,Period_H1, "LSMA in Color",14,1500,5,0) ; // Période_H1 Time Frame

Dans l'indicateur "LSMA in Color" - Il y a 3 tampons pour les couleurs, pas seulement un, donc vous pouvez utiliser 3 instructions iCustom pour les obtenir tous.

Voici les numéros des tampons :

SetIndexBuffer(2,ExtMapBuffer1) ;

SetIndexBuffer(1,ExtMapBuffer2) ;

SetIndexBuffer(0,ExtMapBuffer3) ;

SetIndexBuffer(3,sum) ;

SetIndexBuffer(4,wt) ;

SetIndexBuffer(5,clr) ;

* Remarquez que dans votre exemple, vous utilisez le tampon 0, donc vous n'obtenez en fait qu'une seule couleur dans ExtMapBuffer3. Le tampon "clr" est le tampon 5.

Voici les affectations des tampons de couleur dans l'indicateur :

ExtMapBuffer3[shift] = wt[shift] ; //rouge

ExtMapBuffer2[shift] = wt[shift] ; //vert

ExtMapBuffer1[shift] = wt[shift] ; //jaune

J'espère que cela vous aidera,

Robert

Raison: