Wie programmiert man? - Seite 60

 

danke Kalenzo,

Ich habe es mit OP_BUYLIMIT versucht, aber es funktioniert nicht.

Ich werde es mit OP_BUYSTOP versuchen.

 

Kurze Frage zur Codierung

Wie kann man eine horizontale Linie auf dem Bildschirm beim Durchschnittswert (aller Schlusskurse) einfügen? Gibt es dafür einen speziellen Code?

 

einfacher Breakout EA

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

//| SimpleBreakoutEA.mq4 |

//| |

//| |

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

#property copyright "jjk2"

#property link ""

//---- input parameters

extern int ____TIME_RANGE____;

extern int TimeRange = 1; // # of Hours to look back from TimeEnd. ex) if breakout is @ 22:00 GMT to 23:00 GMT. Total TimeRange to lookback is 8 hrs.

extern int TimeBegin = 22;

extern int TimeEnd = 23;

extern int CancelTime = 20; // ALL REMAINING ORDERS WILL BE CANCELED AT THIS INDICATED TIME.

extern int ______FILTERS______;

extern int TriggerFilter = 0;

extern bool AllowBreakEven = True;

extern int ______ORDERS______;

extern double Lots = 0.1;

extern int StopLoss = 50;

extern int TakeProfit = 100;

extern int Slippage = 2;

extern int MagicNumber = 23423;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

// OPEN ORDERS @ HIGH/LOW from TIMEBEGIN to TimeEND

if (Hour() >= TimeBegin-1 && Hour() >= TimeEnd)

{

int HH = iHighest(NULL, 0, MODE_HIGH,TimeRange,0);

int LL = iLowest(NULL, 0, MODE_LOW,TimeRange,0);

}

double SL_High = Ask - (StopLoss * Point);

double SL_Low = Bid + (StopLoss*Point);

double TP_High = Ask + (TakeProfit*Point);

double TP_Low = Bid - (TakeProfit*Point);

if ( Ask > HH + TriggerFilter) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL_High, TP_High, "Breakout Buy", MagicNumber, NULL, Blue);

if ( Bid < LL + TriggerFilter) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL_Low, TP_Low, "Breakout Sell", MagicNumber, NULL, Red);

// MOVE SL @ BreakEven if allowed. MarketPrice distance Open Price > stop*point, then stop must equal to MarketPrice - Stop*point as new stoploss.

int total = 0;

if ( AllowBreakEven == True )

{

for(total = OrdersTotal() - 1; total >= 0; total--)

{

OrderSelect(total, SELECT_BY_POS);

if ( Bid - OrderOpenPrice() > SL_High*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - SL_High*Point, OrderTakeProfit(),0, CLR_NONE);

if ( OrderOpenPrice() - Ask > SL_Low*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + SL_Low*Point , OrderTakeProfit(),0, CLR_NONE);

}

}

return(0);

}

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

aus irgendeinem Grund seine nicht arbeiten....jemand wissen, warum?

 
 

Wie kann man einen Indikator in einen EA umwandeln?

Hallo, kann ich wissen, wie man einen Indikator in einen EA verwandelt?

Viele Indikatoren haben das Pfeilzeichen, wenn es zu bestimmten Bedingungen kommt, und ich würde sie gerne mit EA testen.

Ich möchte, dass der EA den Handel entsprechend der Pfeilform übernimmt.

Kann mir jemand helfen? Vielen Dank!

 

Dieser ist laut Pfeilzeichen

https://www.mql5.com/en/forum/173249/page51

 

Wie kann ich den beigefügten Indikator in EA umwandeln?

Kann jemand helfen? Danke!

 
Dateien:
envelopes.mq4  3 kb
 

Code-Struktur

Hallo!

Ich bin neu in Metatrader, aber sehr erfahren in der Programmierung. Ich habe einige Beispiele für Expert Advisors und einige etwas komplizierte Indikatoren in MT erstellt. Was nicht klar ist, ist, wie man einen ziemlich komplizierten EA strukturiert. Ich möchte, dass der EA einige "Signal"-Funktionen aufruft, um verschiedene Setup-Bedingungen zu prüfen.

Wie sollte ich diese Funktionen codieren?

1. Als "Inline"-Funktionen im EA

2. Als "separate" Indikatoren, die einen Wert zurückgeben, anstatt auf den Bildschirm zu schreiben?

3. eine andere "separate" Funktion aufrufen, wie z.B. iMA

Wenn ich mich für Alternative 1 entscheide, kann die Inline-Funktion im EA die letzten 200 Bars mit Close durchlaufen und iMA aufrufen?

Ist Alternative 2 OK? Bei der Kodierung eines Indikators werden alle "verfügbaren" Balken verarbeitet, was für den EA natürlich nicht erforderlich ist.

Alternative 3 scheint mir die logische Wahl zu sein, aber ich bin mir nicht sicher, wie ich sie strukturieren muss, damit sie im Backtesting funktioniert, und was ich ihr übergeben muss und worauf die Funktion standardmäßig zugreift, wie zum Beispiel Close

Ein Beispiel dafür, was ich in der Funktion "Signal" feststellen muss, ist der aktuelle Trend und wann er begonnen hat. Ich habe es in einem Indikator kodiert, so dass ich weiß, wie der eigentliche Code zu tun.

Ich bin für jeden Ratschlag dankbar.

Ingvar

 
ingvar_e:
Hallo!

Ich bin neu in Metatrader, aber sehr erfahren in der Programmierung. Ich habe einige Beispiele für Expert Advisors und einige etwas komplizierte Indikatoren in MT erstellt. Was nicht klar ist, ist, wie man einen ziemlich komplizierten EA strukturiert. Ich möchte, dass der EA einige "Signal"-Funktionen aufruft, um verschiedene Setup-Bedingungen zu prüfen.

Wie sollte ich diese Funktionen codieren?

1. Als "Inline"-Funktionen im EA

2. Als "separate" Indikatoren, die einen Wert zurückgeben, anstatt auf den Bildschirm zu schreiben?

3. eine andere "separate" Funktion aufrufen, wie z.B. iMA

Wenn ich mich für Alternative 1 entscheide, kann die Inline-Funktion im EA die letzten 200 Bars mit Close durchlaufen und iMA aufrufen?

Ist Alternative 2 OK? Bei der Kodierung eines Indikators werden alle "verfügbaren" Balken verarbeitet, was für den EA natürlich nicht erforderlich ist.

Alternative 3 scheint mir die logische Wahl zu sein, aber ich bin mir nicht sicher, wie ich sie strukturieren muss, damit sie im Backtesting funktioniert, und was ich ihr übergeben muss und worauf die Funktion standardmäßig zugreift, wie zum Beispiel Close

Ein Beispiel dafür, was ich in der Funktion "Signal" feststellen muss, ist der aktuelle Trend und wann er begonnen hat. Ich habe es in einem Indikator kodiert, so dass ich weiß, wie der eigentliche Code zu tun.

Ich bin für jeden Ratschlag dankbar.

Ingvar

Wahrscheinlich wissen Sie bereits, wie man das macht, also tut es mir leid, wenn Sie das tun.

Gleitender Durchschnitt des aktuellen Balkens:

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

Gleitender Durchschnitt von vor 200 Bars.

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,200);

Sie können den gleitenden Durchschnitt von einem beliebigen Balken aus aufrufen, vom aktuellen bis zu einem beliebigen Balken in der Vergangenheit.