Fonction ICustom - page 7

 

Je veux écrire un EA utilisant cet indicateur Advanced ADX... Comment puis-je extraire la valeur et la couleur de l'indicateur...

Acheter

ADX couleur verte et (ADX cette heure> ADX heure précédente)

Vendez

ADX couleur rouge et (ADX cette heure< ADX heure précédente)

J'ai essayé de coder un peu par moi-même. Le codage est correct avec ma règle ? aidez-moi ici ?

thx

sonic

for (i = Bars - 205; i >= 0; i --)

{

double adx1 =iCustom(NULL, 0, "Advanced_ADX",13,0,i);

double adx2 =iCustom(NULL, 0, "Advanced_ADX",13,1,i);

if ((adx1>adx2)&&(adx1 > adx1) // BUY

{ BUY routine}

if ((adx1<adx2)&&(adx1 < adx1) // SELL

{ SELL routine}

}
Dossiers :
 

Indicateur EApersonnalisé

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

//| This MQL is generated by Expert Advisor Builder |

//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |

//| |

//| In no event will author be liable for any damages whatsoever. |

//| |

//| |

//+------------------- DO NOT REMOVE THIS HEADER --------------------+

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

#property copyright "Expert Advisor Builder"

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

extern double Lots = 0.2;

extern int Slippage = 3;

extern bool UseStopLoss = True;

extern int StopLoss = 27;

extern bool UseTakeProfit = True;

extern int TakeProfit = 34;

extern bool UseTrailingStop = False;

extern int TrailingStop = 30;

int BarCount;

int Current;

bool TickCheck = False;

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

//| expert initialization function |

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

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

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

//| expert deinitialization function |

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

int deinit() {

return(0);

}

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

//| expert start function |

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

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

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

//| Variable Begin |

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

double Buy1_1 = iOBV(NULL, 0, PRICE_LOW, Current + 0);

double Buy1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);

double Sell1_1 = iOBV(NULL, 0, PRICE_HIGH, Current + 0);

double Sell1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0);

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

//| Variable End |

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

//Check position

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

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

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

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

//| Signal Begin(Exit Buy) |

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

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

//| Signal End(Exit Buy) |

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

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

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

//| Signal Begin(Exit Sell) |

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

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

//| Signal End(Exit Sell) |

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

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

if (Buy1_1 != Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 != Sell1_2) Order = SIGNAL_SELL;

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

//| Signal End |

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

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

//Sell

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("SELL order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("Error opening SELL order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

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

Bonjour

Voici ma stratégie

double Buy1_1 = iOBV(NULL, 0, PRICE_LOW, Current + 0) ;

double Buy1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0) ;

double Sell1_1 = iOBV(NULL, 0, PRICE_HIGH, Current + 0) ;

double Sell1_2 = iCustom(NULL, 0, "synthetic_", 22, 0, Current + 0) ;

Je veux que lorsque mon indicateur personnalisé traverse la ligne obv, il vende ou achète le marché.

mais

cela ne fonctionne pas

Qu'est-ce qui ne va pas dans ce code ?

 

Indi bicolore

Bonjour à tous,

L'indi du bas (Complex_Pairs1) n'a qu'une seule couleur. Quelqu'un pourrait-il m'aider, et le changer en 2 couleurs à la place. Bleu pour la hausse, et Rouge pour la baisse. Tout comme l'indicateur sur le graphique (Execute Line).

J'ai essayé très fort de modifier le code moi-même, mais sans succès.

Après la compilation, il n'y a pas d'erreurs, mais rien ne se passe quand j'essaie d'ouvrir l'indi.

C'est probablement un jeu d'enfant pour tous les codeurs expérimentés, et j'espère que je pourrai en tirer des leçons.

Merci !

Klondyke

Dossiers :
 

Recherche d'un document ou d'un fil de forum ?

Bonjour, j'ai essayé de chercher un guide d'utilisateur ou un fil de discussion dans google sur la façon de tracer un indicateur personnalisé dans un expert. En fait, je veux une info sur comment mieux utiliser la fonction iCustom et quelques exemples ..... Merci d'avance !

 

J'ai déplacé votre fil de discussion vers le fil de discussion sur les fonctions iCustom.

J'espère que vous y trouverez tout.

Consultez également ce message https://www.mql5.com/en/forum

 

J'ai compris, merci les gars !

 

quelqu'un sait-il comment ajouter à l'ea mQL

l'indicateur zig zag en utilisant la fonction icustom.

J'ai essayé

double x = iCustom(NULL,PERIOD_M5, "ZigZag",3,0,0) ;

mais j'obtiens une variété de chiffres dans ma fonction d'impression.

J'ai également essayé une variété de chiffres.

Toute aide est appréciée.

Dossiers :
zigzag.mq4  7 kb
 
ajk:
Est-ce que quelqu'un sait comment ajouter une fonction à mQL ea ?

l'indicateur zig zag en utilisant la fonction icustom.

J'ai essayé

double x = iCustom(NULL,PERIOD_M5, "ZigZag",3,0,0) ;

mais j'obtiens une variété de chiffres dans ma fonction d'impression.

J'ai également essayé une variété de chiffres.

Toute aide est appréciée.

L'une des façons est : iCustom(NULL,0, "ZigZag",depth,deviation,backstep,0,1)

 

zigzag

hey ajk....... zigzag diffère de la plupart des indicateurs en ce que, dans la grande majorité des cas, sa valeur est égale à 0, avec seulement un nombre non nul occasionnel..... ce qui le rend presque inutilisable dans la forme standard iCustom.....

// ---> zig = iCustom(NULL,0, "ZigZag",15,5,3, 0, i) ;

pour être utile, vous devrez certainement créer un tableau pour stocker tous les nombres "non-zéro"..... comme ;

si(zig>0)

{

zag[n] = zig ;

}

alors vous pouvez faire le classique

if(zag[1] > zag[2]) // faire ceci

else // ou

if(zag[1] < zag[2]) // faire ceci sinon

//------------

il y a un peu plus que cela, mais c'est l'idée de base //.....h

 

Besoin d'aide

hi..

j'ai trouvé l'EA Univeral MA Cross...

c'est un bon EA...

Dossiers :