Comment coder ? - page 198

 
arshadFX:
1, ajoutez le drapeau bool après le déclenchement des critères de négociation.

2, vérifier le drapeau bool avant de passer la commande

3, après avoir passé la commande, le drapeau bool doit être réinitialisé.

4, réinitialiser le drapeau dans init() aussi

Merci

 

Guide MQL nécessaire =^_^=

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 White

extern int Fast.MA.Period = 5 ;

extern int Slow.MA.Period = 34 ;

extern int Signal.period = 5 ;

//---- tampons

double Buffer1[],

Buffer2[],

b2[],

b3[] ;

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

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

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

int init()

{

//---- indicateurs

// deux tampons supplémentaires utilisés pour le comptage

IndicatorBuffers(4) ;

IndicateurShortName("MA3_54") ;

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3) ;

SetIndexArrow(0,242) ; // vers le bas 226 234 242

SetIndexBuffer(0,b2) ;

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3) ;

SetIndexArrow(1,241) ; //HAUT 225 233 241

SetIndexBuffer(1,b3) ;

// Ces tampons ne sont pas tracés, ils sont juste utilisés pour déterminer les flèches.

SetIndexBuffer (2,Buffer1) ;

SetIndexBuffer (3,Buffer2) ;

//----

return(0) ;

}

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

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

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

int deinit()

{

//----

return(0) ;

}

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

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

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

int start()

{

int i, counted_bars=IndicatorCounted() ;

double MA5,MA34 ;

int limit=Bars_comptées ;

Print(" print limit = ", limit) ;

if(counted_bars>0) limit++ ;

// Ligne principale

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

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i) ;

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i) ;

Tampon1=MA5-MA34 ;

}

// Ligne de signal

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

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i) ;

}

// Flèches

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

{

if(Buffer1 > Buffer2 && Buffer1 < Buffer2)

b2 = Haut+10*Point ;

si(Buffer1 Buffer2)

b3 = Bas-10*Point ;

}

//----

return(0) ;

}

Pouvez-vous m'apprendre comment créer un EA basé sur cet indis ? Quand la flèche apparaît sur l'écran et que l'EA entre automatiquement en position, est-ce possible ? S'il vous plaît, guidez-moi car j'aime apprendre =^_^=.

 

Bonne référence

liew_stanley:
#property indicator_chart_window

#Propriété indicator_buffers 2

............guidez-moi car j'ai envie d'apprendre =^_^=

Voir ce guide très bon matériel Tutoriel MQL4

 

L'indis ressemble à ceci

Voici le signal de la flèche mentionné ci-dessus, j'ai besoin de quelqu'un pour me guider dans le codage de l'EA.

Merci à tous =^_^=

Dossiers :
untitled.jpg  80 kb
 

Quelqu'un peut-il m'aider à coder cet indis dans un EA simple ?

Bonjour les gars, quelqu'un peut-il m'aider à coder cet indis dans un EA ? Seulement un simple EA qui entre en position quand les flèches apparaissent sur l'écran, j'apprécierais beaucoup si quelqu'un pouvait m'aider sur un EA simple. =^_^= Merci.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 White

extern int Fast.MA.Period = 5 ;

extern int Slow.MA.Period = 34 ;

extern int Signal.period = 5 ;

//---- tampons

double Buffer1[],

Buffer2[],

b2[],

b3[] ;

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

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

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

int init()

{

//---- indicateurs

// deux tampons supplémentaires utilisés pour le comptage

IndicatorBuffers(4) ;

IndicatorShortName("Elliott Wave Oscillator") ;

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3) ;

SetIndexArrow(0,242) ; // vers le bas 226 234 242

SetIndexBuffer(0,b2) ;

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3) ;

SetIndexArrow(1,241) ; //HAUT 225 233 241

SetIndexBuffer(1,b3) ;

//

SetIndexBuffer (2,Buffer1) ;

SetIndexBuffer (3,Buffer2) ;

//----

return(0) ;

}

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

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

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

int deinit()

{

//

//----

return(0) ;

}

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

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

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

int start()

{

int i, counted_bars=IndicatorCounted() ;

double MA5,MA34 ;

int limit=Bars_comptées ;

Print(" print limit = ", limit) ;

if(counted_bars>0) limit++ ;

// Ligne principale

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

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i) ;

MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i) ;

Tampon1=MA5-MA34 ;

}

// Ligne de signal

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

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i) ;

}

// Flèches

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

{

if(Buffer1 > Buffer2 && Buffer1 < Buffer2)

b2 = Haut+10*Point ;

si(Buffer1 Buffer2)

b3 = Bas-10*Point ;

}

//----

return(0) ;

}

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

 

Code pour les ordres multiples ?

Est-ce que quelqu'un a un bon code pour négocier des ordres multiples lorsqu'on se heurte à la barrière du lot maximum ?

Par exemple, le courtier ne permet que des lots de 5, et vous voulez en négocier 10. La fonction négociera donc 2 ordres de 5 lots à la place.

Je cherche plus qu'une simple boucle ici. Le problème est qu'une simple boucle ne sera pas toujours complète, et vous pourriez vous retrouver avec seulement un ordre partiel ouvert.

 

Comment supprimer l'erreur 1 de OrderModify

Bonjour,

Je ne peux pas éviter l'erreur OrderModify 1 : elle apparaît toujours même en essayant de contrôler que les données avant de modifier sont différentes ! J'ai aussi essayé de doubler la normalisation... sans succès...

Voici le code :

if (Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit)

{

si (OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint)

{

Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,Green) ;

Des suggestions ?

Merci.

 
liew_stanley:
Bonjour, quelqu'un peut-il m'aider à coder cet indis dans un EA ? Seulement un EA simple qui entre en position //+------------+

Ces aérogrammes sont affichés sur 2 moyennes mobiles qui se croisent, c'est à dire 5-34, vous pouvez trouver beaucoup d'EAs "MA's Cross EA" et avec un peu de chance vous en trouverez un.

 

Comment puis-je régler la fréquence des alertes ?

Je suis nouveau sur mq4 et j'essaie de créer un affichage à l'écran lorsqu'il y a un croisement de MACD. Voici mon code mais les alertes s'affichent toutes les quelques minutes.

Comment puis-je le coder pour afficher des alertes seulement une fois par heure ? Ou une alerte par barre ?

int start()

{

string MACD1="" ;

couleur colt9 ;

double MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0) ;

double MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0) ;

double MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1) ;

double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1) ;

if ((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND" ; colt9=LimeGreen ; }

if ((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="IN DOWNTREND" ; colt9=Red ; }

if ((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="NOUVEAU CROISEMENT HAUT" ; colt9=LimeGreen ; }

if ((MACDM_S11 MACDS_S10)) { MACD1="NEW DOWN CROSSING" ; colt9=Red ; }

chaîne MACD2="" ;

couleur colt14 ;

double MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0) ;

double MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0) ;

double MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1) ;

double MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1) ;

if ((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND" ; colt14=LimeGreen ; }

if ((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="IN DOWNTREND" ; colt14=Red ; }

if ((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="NOUVEAU CROISEMENT HAUT" ; colt14=LimeGreen ; }

if ((MACDM_L11 MACDS_L10)) { MACD2="NEW DOWN CROSSING" ; colt14=Red ; }

if(MACD1=="NEW UP CROSSING"&&MACD2=="IN UPTREND")

Alert(Symbol()," - ", "H1 :"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)) ;

if(MACD1=="NEW DOWN CROSSING"&&MACD2=="IN DOWNTREND")

Alert(Symbol()," - ", "H1 :"," MACD MAIN DOWNTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)) ;

if(MACD2=="NEW UP CROSSING"&&MACD1=="IN UPTREND")

Alert(Symbol()," - ", "H1 :"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)) ;

if(MACD2=="NEW DOWN CROSSING"&&MACD1=="IN DOWNTREND")

Alert(Symbol()," - ", "H1 :"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)) ;

return(0) ;

}

 

dans quelles paires ?