Wie ich meinen Berater durch Versuch und Irrtum zusammenstelle - Seite 47

 

Dennoch gibt es einen Unterschied im Code, das Signal des Indikators ist anders

Wenn ja, sind weniger Indikatoren geeignet

//---
   double BuyBuffer[];
   double SellBuffer[];
   ArraySetAsSeries(BuyBuffer,true);
   ArraySetAsSeries(SellBuffer,true);
   if(!iGetArray(handle_iCustom,1,0,2,BuyBuffer) || !iGetArray(handle_iCustom,0,0,2,SellBuffer))
     {
      ExtPrevBarsY=0;
      return(false);
     }
//---
   if(BuyBuffer[1]!=0.0)
     {

Das ist besser.

//---
   double main[],signal[];
   ArraySetAsSeries(main,true);
   ArraySetAsSeries(signal,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iCustom,MAIN_LINE,start_pos,count,main) ||
      !iGetArray(handle_iCustom,SIGNAL_LINE,start_pos,count,signal))
     {
      ExtPrevBarsY=0;
      return(false);
     }

   if(main[1]>signal[1])
     {

Ich habe es zu diesem geändert! Ich prüfe immer noch den Expert Advisor auf Verfügbarkeit, alles scheint zu funktionieren.

es funktioniert gut mit einem Indikator dieser Art (die Datei unten)

Dateien:
2.mq5  17 kb
 

Um Verwechslungen mit dem Öffnen und Schließen von Positionen zu vermeiden, ist es besser, alle Linien und den Indikator in die richtige Richtung zu setzen und nicht umgekehrt zu verwenden.

Andernfalls kann man durcheinander kommen - zumal es eine Option in den Einstellungen gibt (die Umkehrung gilt für alle Zeilen und den Indikator)

input string   t3="----- Indicators:        -----";              //
input string   short_name                   = "Examples\\MACD";  // Name Indicators
input bool     InpIndicators                = false;             // Indicators: Start (true)
input bool     InpCloseOpposite             = false;             // Close opposite
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_buy;          // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = open_sell;         // Trade command: (SellBuffer Indicators)
input string   t4="----- Revers Buy><Sell   -----";              //
input bool     ObjRevers                    = false;             //  Revers

können Sie einfachdie Eingabe im Code selbst
wie folgt löschen

string   t4="----- Revers Buy><Sell   -----";              //
bool     ObjRevers                    = false;             //  Revers
 
Alexsandr San:

Um Verwechslungen mit dem Öffnen und Schließen von Positionen zu vermeiden, ist es besser, alle Linien und den Indikator in die richtige Richtung zu setzen und nicht umgekehrt zu verwenden.

Andernfalls kann man durcheinander kommen - zumal es eine Option in den Einstellungen gibt (die Umkehrung gilt für alle Zeilen und den Indikator)

können Sie einfachdie Eingabe im Code selbst
wie folgt löschen

nein! der blinker muss umgedreht werden

 

Ich versuche, einige neue Funktionen aus dem Indikator herauszuholen, und ich versuche, das alles zu tun.

input string   t3="----- Indicators: SELL   -----";              //
input string   short_name                   = "2";               // Name Indicators "SELL"
input bool     InpIndicators                = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_sell;         // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_sells;       // Trade command: (SellBuffer Indicators)
input string   t4="----- Indicators: BUY    -----";              //
input string   short_name1                  = "2";               // Name Indicators "BUY"
input bool     InpIndicators1               = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = close_buys;        // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_buy;          // Trade command: (SellBuffer Indicators)

Ich kann mit einem oder zwei Indikatoren phantasieren.

Sie müssen nur den Indikator aufheben - wie hier (Foto)

https://www.mql5.com/ru/code/392

Foto von

Ich habe einen Indikator mit dem Namen ( 2 ) erstellt.

Dateien:
2.mq5  17 kb
 
Alexsandr San:

Ich versuche, einige neue Funktionen aus dem Indikator herauszuholen, und ich versuche, das alles zu tun.

Ich kann mit einem oder zwei Indikatoren phantasieren.

Sie müssen nur den Indikator aufheben - wie hier (Foto)

https://www.mql5.com/ru/code/392

Ich habe den Indikator betrogen, der ( 2 ) genannt wird.

Ich prüfe, wie es 1 Minute lang funktioniert - es funktioniert gut

Schnappschuss2

 
Alexsandr San:

1 Minute lang prüfen, wie es funktioniert - funktioniert gut


expertWWWW_Trailing_Line.mq596 kb funktioniert einwandfrei, keine Fehler.

nur, müssen ein Panel zur Information und zum Testen hinzufügen, im Tester in der manuellen Version

Panel

 
Alexsandr San:

expert funktioniert gutWWWWW_Trailing_Line.mq596 kb, keine Fehler.

Sie müssen nur eine Tafel zur Information und zum Testen hinzufügen, im Tester in der manuellen Version

Ich habe ein Panel hinzugefügt - jetzt können Sie einige manuelle Tests im Tester durchführen.

Befehl_Schleppende Linie

wie sind die Einstellungen

//+------------------------------------------------------------------+
input string   t="-----  Parameters         -----";              //
input string   Template                     = "ADX";             // Имя шаблона(without '.tpl')
input double   TargetProfit                 = 999999.99;         // Цель Баланса(Ваш Баланс + сумма)
input uint     maxLimits                    = 1;                 // Кол-во Позиции Открыть в одну сторону
input double   InpLots                      = 0.01;              // Lots
input int      InpTakeProfit                = 50;                // Take Profit ("0"-No. 5<100)
input string   t0="----- Trailing Line      -----";              //
input string   InpObjUpName                 = "TOP";             // Obj: TOP (Horizontal Line)
input ENUM_TRADE_COMMAND InpTradeCommand    = close_sells;       // Obj:  command:
input string   InpObjDownName               = "LOWER";           // Obj: LOWER (Horizontal Line)
input ENUM_TRADE_COMMAND InTradeCommand     = close_buys;        // Obj:  command:
input ushort   InpObjTrailingStop           = 30;                // Obj: Trailing Stop (distance from price to object, in pips)
input ushort   InpObjTrailingStep           = 5;                 // Obj: Trailing Step, in pips (1.00045-1.00055=1 pips)
input string   t1="----- Line name: 1       -----";              //
input string   InpNameR                     = "LineR";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = open_buy;          // Trade command:
input string   t2="----- Line name: 2       -----";              //
input string   InpNameS                     = "LineS";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = open_sell;         // Trade command:
input string   t3="----- Indicators: SELL   -----";              //
input string   short_name                   = "2";               // Name Indicators "SELL"
input bool     InpIndicators                = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_sell;         // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = close_sells;       // Trade command: (SellBuffer Indicators)
input string   t4="----- Indicators: BUY    -----";              //
input string   short_name1                  = "2";               // Name Indicators "BUY"
input bool     InpIndicators1               = false;             // Indicators: Start (true)
input ENUM_TRADE_COMMAND InpTradeCommandY1  = close_buys;        // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU1  = open_buy;          // Trade command: (SellBuffer Indicators)
input string   t5="----- Button:            -----";              //
input ENUM_TRADE_COMMAND InpTradeCommandBut = open_buy;          // Obj(BUY):  command:Button: BUY
input ENUM_TRADE_COMMAND InTradeCommandBut  = open_sell;         // Obj(SELL):  command:Button: SELL
input int      TrailingStop_STOP_LEVEL      = 36;                // Button: Trailing Stop LEVEL
Dateien:
 
Alexsandr San:

ein Panel hinzugefügt - jetzt können Sie noch im Tester, Ihre Hände auf sie zu bekommen.

welche Einstellungen hat es

Verdammt! Ich habe die Einfügung in OnDeinit übersehen.

wenn Sie den Expert Advisor aus dem Diagramm entfernen - das Panel wird nicht ohne ihn entfernt

der Code ist offen, Sie können ihn selbst kopieren und einfügen

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   for(int i=0; i<ArraySize(_name); i++)
     {
      ObjectDelete(0,Symbol()+_name[i]);
     };
   EventKillTimer();
//---
   Print(TimeCurrent(),": ",__FUNCTION__," reason code = ",reason);
   Comment("");
  }
//+------------------------------------------------------------------+
 
Alexsandr San:

ein Panel hinzugefügt - jetzt können Sie noch im Tester, Ihre Hände auf sie zu bekommen.

welche Einstellungen es hat.

Ich muss eine weitere Funktion hinzufügen.

Zum Beispiel - ein Signal für SELL wird ausgelöst, nicht um eine Position zu eröffnen - sondern um eine horizontale Linie N Punkte zurück zu ziehen und wenn der Preis zurückgeht und von dieser Linie - um eine Position zu eröffnen.

EURUSDH1

 
Alexsandr San:

müssen wir eine weitere Funktion hinzufügen.

Zum Beispiel - ein Signal für SELL wird ausgelöst, nicht um eine Position zu eröffnen, sondern um eine horizontale Linie N Punkte zurück zu ziehen und wenn der Preis zurück geht und von dieser Linie - um eine Position zu eröffnen.


Ich habe versucht, es einfach zu halten. Wenn jemand Interesse hat, fragen Sie uns, wir werden versuchen, es gemeinsam herauszufinden.

Foto von

Schnappschuss2