Comment coder ? - page 167

 
 

J'essaie toujours d'ajouter une alerte sonore à cet indicateur....... Quelqu'un peut-il vérifier le code pour moi car il ne fonctionne pas ?

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

//|

//|

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

#property copyright "niva"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 Red

extern bool Email_Enabled = false;

extern bool Alert_Enabled = true;

//---- input parameters

int CountBars=10000;

//---- buffers

double uptrend[];

double downtrend[];

bool AlertSent,EmailSent;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicator line

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,217);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,218);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

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

//| AltrTrend_Signal_v2_2 |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

int i,shift,counted_bars=IndicatorCounted();

int uptrend, downtrend;

for (shift = CountBars; shift>=0; shift--)

{

if(High[shift-1]>High[shift]&&Low[shift-1]>Low[shift]&&uptrend!=3){

uptrend = uptrend+1;

downtrend=0;

}else if(High[shift-1]<High[shift]&&Low[shift-1]<Low[shift]&&downtrend!=3){

downtrend=downtrend+1;

uptrend=0;

}

else{

uptrend=0;

downtrend=0;

}

if (uptrend==3)

{

val1[shift]=Low[shift];

}

if (downtrend==3)

{

val2[shift]=High[shift];

}

}

return(0);

}

//----

if (Alert_Enabled && (uptrend[0] != 0 || uptrend[0] !=0) && !AlertSent)

{

Alert(Symbol() + "HiLow+3");

AlertSent=true;

}

if (Email_Enabled && (downtrend[0] != 0 || downtrend[0] !=0) && !EmailSent)

{

SendMail(Symbol() + "HiLow+3","HiLow+3 indicator triggered");

EmailSent=true;

}

if(downtrend[0] == 0 && uptrend[0] == 0 )

{

EmailSent=false;

AlertSent=false;

}

return(0);

}

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

Merci

mrwobbles:
Quelque part dans le code, les parenthèses sont déséquilibrées. On dirait qu'il manque un } et un ) dans le code. Vous devez regarder et compter le nombre de parenthèses ouvertes et fermées (+1 pour ouvert et -1 pour fermé), ce qui devrait vous indiquer le nombre de parenthèses manquantes (disons qu'un compte de +2 signifie deux parenthèses droites '}' ou vice versa). S'il a indenté correctement, vous devriez être capable de trouver où mettre le bon }. Bonne chasse Le

J'ai réussi à changer quelques paramètres et finalement je crois que j'y suis presque ! Maintenant, après le codage suivant, il dit :

shortSL' - variable non définie

'longSL' - variable non définie

Voici à quoi cela ressemble :

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

//| Salgado.mq4 |

//| salgadoguilherme@hotmail.com|

//| |

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

#property copyright ""

#property link "salgadoguilherme@hotmail.com"

extern bool trade=true ;

extern int barstocount=50 ;

extern double lots=0.01 ;

extern int StopLoss =40 ;

extern int TakeProfit =10 ;

extern int slippage=3 ;

extern int magicnumber=816 ;

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

//| 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()

{

//----

if(trade==true)

{

//M15

double M15_resistance=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,0) ;

double M15_resistance_p=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,2,barstocount-1) ;

double M15_line=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,0,0) ;

double M15_support=iCustom(NULL,PERIOD_M15,"!LinRegrBuf", "true",barstocount,1,0) ;

double slopeM15=((M15_resistance-M15_resistance_p)/barstocount)/Point ;

//Alert(DoubleToStr(slopeM15,2) ;

Commentaire(

"\n", "Pente M15 | ",penteM15,

//SHORT ENTRY

if(slopeM15<0 && IsTradeAllowed()==true)

{

bool shortopen=false ;

int ord_cnt1=OrdersTotal() ;

for (int start1=0;start1<ord_cnt1;start1++)

{

OrderSelect(start1, SELECT_BY_POS, MODE_TRADES) ;

if(OrderMagicNumber()==magicnumber && OrderType()==OP_SELL)

{shortopen=true;}

}

si(shortopen==false)

{

double M15High=iHigh(Symbol(),PERIOD_M15,0) ;

si(M15High>=M15_resistance)

int shortticket=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,Bid+shortSL,M15_line,DoubleToStr(slopeM15,2) ;

si(shortticket<0)

{

//LONG ENTRY

if(slopeM15>0 && IsTradeAllowed()==true)

{

bool longopen=false ;

int ord_cnt=OrdersTotal() ;

for (int start=0;start<ord_cnt;start++)

{

OrderSelect(start, SELECT_BY_POS, MODE_TRADES) ;

if(OrderMagicNumber()==magicnumber && OrderType()==OP_BUY)

{longopen=true;}

}

si(longopen==false)

{

double M15Low=iLow(Symbol(),PERIOD_M15,0) ;

si(M15Low<=M15_support)

int longticket=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,Ask-longSL,M15_line,DoubleToStr(slopeM15,2) ;

si(longticket<0)

{

//----

return(0) ;

}

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

 

Bougie type Indy

Bonjour,

J'ai vraiment besoin de tutoriels MQL sur la façon de coder des indicateurs de type bougie tels que le graphique ci-joint. Les liens vers un site dans ou en dehors de ce forum sont les bienvenus. Merci beaucoup.

Piper.

Dossiers :
ma_candles.gif  15 kb
 

Quelqu'un pourrait-il me dire comment coder ce qui suit ;

Compter le nombre de barres depuis qu'une MA à court terme a traversé une MA à long terme.

Merci !

 

Code EA pour reprendre les transactions après un arrêt.

Bonjour,

Existe-t-il un exemple de code pour un EA, qui peut reprendre la gestion des trades après son arrêt et qui revient ensuite ?

Merci,

JForex

 

Comment coder ?

darvasboxes:
Quelqu'un pourrait-il me dire comment coder ce qui suit ?

Comptez le nombre de barres depuis qu'une MA à court terme a croisé une MA à long terme.

Merci !

Oui !

Comptez les barres depuis leur croisement :

int i ;

bool shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,0) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,0)) ;

bool sgLast ;

for(i=0;i<iBars(NULL,0);i++) {

sgLast = shortGreater ;

shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,i) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,i)) ;

if(shortGreater !== sgLast) {

break ;

}

}

La variable i contiendra le nombre de barres depuis leur croisement.

N'hésitez pas à m'envoyer de l'argent si vous avez trouvé cela utile. Je vous en serais reconnaissant.

 

Et voilà.

Guilhermesalgado:
J'ai réussi à modifier certains paramètres et finalement je crois être presque arrivé ! Maintenant, après le codage suivant, il dit :

shortSL" - Variable non définie

longSL' - variable non définie

Et voilà. J'ai pris ce que tu as fait et je l'ai modifié pour que ça compile. Attention, ta logique est mauvaise, elle semble incomplète, et elle ne fera probablement pas ce que tu veux.

Mais voilà.

- ChazzMoney

P.S. 170 $ est EXTRÊMEMENT bon marché pour un programme. Une ou deux fois par an, j'écris des logiciels d'investissement personnalisés pour un montant à cinq chiffres. Les programmeurs qui acceptent ce genre de travail doivent se méfier - vous devez TOUT vérifier pour être sûr de ne pas manquer un cas. Un bug est aussi bon qu'un trader aléatoire.

N'hésitez pas à m'envoyer de l'argent si vous avez trouvé cela utile. J'apprécie la réflexion.

Dossiers :
 

Code du ZigZag standard

Bonjour

Ce code provient du fichier standard "ZigZag.mq4".

"if (counted_bars==0 && downloadhistory) // l'historique a été téléchargé"

counted_bars==0 : vérification si la valeur est égale à zéro........ c'est ok.

downloadhistory : il n'y a pas de vérification de la condition, pourquoi ?

Merci.

 

Ouverture de 2 ORDRES et Fermeture de 2 ORDRES...CONSTAMMENT.

J'ai essayé et essayé pendant longtemps de faire en sorte que mon EA ouvre toujours deux ordres pour un achat ou une vente. Un avec TP et l'autre avec NONE. Après avoir ouvert 2 ordres, je n'en ouvre plus jusqu'à ce qu'il soit temps de négocier dans la direction opposée.

Pour une raison ou une autre, je regarde l'historique du compte et je vois 1 ordre, puis 3 ordres, puis 4 ordres, puis 2 ordres et cela fonctionne comme un déchet.

Est-ce qu'un maître du codage peut jeter un coup d'œil et me donner son avis ?

Merci !!!!!!!!!!!!!!!!

ORDRES OUVERTS

-------

BuyTicket1 = False ;

BuyTicket2 = False ;

while (!BuyTicket1) {

BuyTicket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, Ask + TakeProfit * Point, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) ;

Sleep(PausebetweenOrders * 1000);}

//if (BuyTicket1 && SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open 1st Buy") ;

Sleep(1000) ;

while (!BuyTicket2) {

BuyTicket2 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, 0, "2nd Buy(#" + MagicNumber + ")", MagicNumber, 0, BlueViolet) ;

Sleep(PausebetweenOrders * 1000);}

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

FERMER LES ORDRES

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

if(OrdersTotal() > 0) {

OrderSelect(0, SELECT_BY_POS, MODE_TRADES) ;

if(OrderType() == OP_SELL){

for (int j = OrdertotalCloseSell-1 ; j >= 0 ; j --) {

PositionClosedSell = Faux ;

AttemptsTriedCloseSell = 0 ;

OrderSelect(j, SELECT_BY_POS, MODE_TRADES) ;

while (!PositionClosedSell && AttemptsTriedCloseSell < CloseposnAttempts) {

AttemptsTriedCloseSell = AttemptsTriedCloseSell + 1 ;

OrderCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, MediumSeaGreen) ;

Sleep(PausebetweenOrders * 1000) ;

if( OrderCloseSell == True ) { // Position fermée avec succès.