ICustom-Funktion - Seite 7

 

Ich möchte einen EA schreiben, der diesen Advanced ADX-Indikator verwendet... Wie kann ich den Wert und die Farbe aus dem Indikator extrahieren...

Kaufen

ADX Farbe grün und (ADX diese Stunde> ADX vorherige Stunde)

Verkaufen

ADX Farbe rot und (ADX diese Stunde< ADX vorherige Stunde)

Ich habe abit in Kodierung auf meinem eigenen ausprobiert. Stimmt die Kodierung mit meiner Regel???

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}

}
Dateien:
 

ICustom Indikator EA

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

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

}

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

hallo

dies ist meine Strategie

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);

ich möchte, dass wenn mein benutzerdefinierter Indikator die obv-Linie überschreitet, der Markt verkauft oder gekauft wird

aber

es funktioniert nicht

was ist falsch in dem Code ?_

 

2-farbig indi

Hallo zusammen,

Das indi am unteren Rand (Complex_Pairs1) hat nur eine Farbe. Könnte mir jemand helfen und es stattdessen in 2 Farben ändern. Blau für aufwärts, und Rot für abwärts. Genau wie die Indi auf dem Chart (Execute Line).

Ich habe mich sehr bemüht, den Code selbst zu ändern, aber ohne Erfolg.

Nach dem Kompilieren gab es keine Fehler, aber es passiert nichts, wenn ich versuche, das indi zu öffnen.

Dies ist wahrscheinlich ein Kinderspiel für alle erfahrenen Programmierer, und hoffentlich kann ich daraus lernen.

Ich danke euch!

Klondyke

Dateien:
 

Suche nach einem Dokument oder einem Forumsthread?

Hallo, ich habe versucht, für ein Benutzerhandbuch oder ein Forum-Thread in Google auf, wie man einen benutzerdefinierten Indikator in einem Experten Plotten suchen. Ich möchte eigentlich eine Info, wie man die iCustom Funktion besser nutzen kann und ein paar Beispiele .... Vielen Dank im Voraus!

 

Ich habe Ihr Thema in den iCustom Funktionsthread verschoben.

Ich hoffe, Sie werden alles finden.

Sehen Sie sich auch diesen Beitrag an https://www.mql5.com/en/forum

 

Ich habe den Punkt verstanden, danke Leute!

 

weiß jemand, wie man zu mQL ea hinzufügen

den Zickzack-Indikator mit der icustom-Funktion hinzufügen kann.

Ich habe versucht

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

aber ich erhalte eine Vielzahl von Zahlen in meiner Druckfunktion.

Ich habe auch eine Reihe von Zahlen ausprobiert.

Für jede Hilfe bin ich dankbar.

Dateien:
zigzag.mq4  7 kb
 
ajk:
Weiß jemand, wie man mQL ea hinzufügen kann?

den Zickzack-Indikator mit der Funktion icustom.

Ich habe versucht

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

aber ich erhalte eine Vielzahl von Zahlen in meiner Druckfunktion.

Ich habe auch eine Vielzahl von Zahlen ausprobiert.

jede Hilfe ist willkommen.

Eine Möglichkeit ist: iCustom(NULL,0, "ZigZag",depth,deviation,backstep,0,1)

 

zigzag

hey ajk....... zigzag unterscheidet sich von den meisten Indikatoren dadurch, dass sein Wert in den meisten Fällen 0 ist und nur gelegentlich eine Zahl ungleich Null....., was ihn in der Standardform von iCustom fast unbrauchbar macht.....

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

Um nützlich zu sein, müssen Sie fast sicher ein Array erstellen, um alle "Nicht-Null"-Zahlen zu speichern..... wie;

if(zig>0)

{

zag[n] = zig;

}

dann können Sie das Übliche tun

if(zag[1] > zag[2]) // dies tun

sonst // oder

if(zag[1] < zag[2]) // dies tun

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

Es gibt noch ein bisschen mehr, aber das ist die Grundidee.....h

 

Brauche Hilfe

Hallo..

ich habe den Univeral MA Cross EA gefunden..

es ist ein schöner EA..

Dateien: