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

 

Der Indikator hat 4 horizontale Linien - 2 davon arbeiten mit dem Indikator Heiken_Ashi

2 Stufen, von denen aus Sie kaufen oder verkaufen können. Wenn sie sich rot kreuzen, erhalten Sie ein Signal -wenn sie sich blau kreuzen, erhalten Sie ein anderes Signal

EURJPYM1

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

wenn in der Mitte ist (zwischen den Linien (rot und blau) Signale nicht funktionieren - wird funktionieren, wie auf beiden Seiten herauskommen wird

Dateien:
LN_2.mq5  22 kb
 
Alexsandr San:

Der Indikator hat 4 horizontale Linien, von denen 2 vom Indikator Heiken_Ashi stammen

2 Stufen, von denen aus Sie kaufen oder verkaufen können. Wenn sie sich rot kreuzen, erhalten Sie ein Signal -wenn sie sich blau kreuzen, erhalten Sie ein anderes Signal

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

wenn in der Mitte (zwischen den Linien (rot und blau) Signale nicht funktionieren - wird funktionieren, wie in beide Richtungen gehen

Ich habe den Expert Advisor zu diesem Indikator hinzugefügt

Sie müssen den Indikator auf dem Chart installieren und dann den Expert Advisor auf demselben Chart installieren.

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

nach dem Öffnen einer Position wurde der Indikator gelöscht. nach einer Weile habe ich den Indikator wieder gesetzt (wie kann ich die Arbeit des Experten überprüfen)

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

wenn ein Signal ausgelöst wird, öffnet eine Position und löscht den Indikator zusammen mit den Linien


Dateien:
Exp_LN_2.mq5  20 kb
 

Kombinierte zwei Experten für den manuellen Handel

diesehttps://www.mql5.com/ru/code/24803

und diese hierhttps://www.mql5.com/ru/code/26353

AutoClose Line
AutoClose Line
  • www.mql5.com
Помощник закрытия позиции, если цена пересекла линию: Правило закрытия: цена Open и цена Close текущего бара должны оказаться по разные стороны от линии. Имя линии задаётся в параметре "Line name" - эту линию пользователь проводит сам. Тип линии может быть...
Dateien:
 
Alexsandr San:

Kombinierte zwei Experten für den manuellen Handel

diesehttps://www.mql5.com/ru/code/24803

und diese hierhttps://www.mql5.com/ru/code/26353

Eine weitere Zeile hinzugefügt

//+------------------------------------------------------------------+
//| Enum Lor or Risk                                                 |
//+------------------------------------------------------------------+
enum ENUM_TRADE_COMMAND
  {
   close_buys=0,     // Close All Buy's
   close_sells=1,    // Close All Sell's
   close_all=2,      // Close All Buy's and Sell's
   open_buy=3,       // Open Buy
   open_sell=4,      // Open Sell
   open_buy_sell=5,  // Open Buy and Sell
  };
//--- input parameters
input uint     maxLimits                    = 1;                 // Кол-во Позиции Открыть в одну сторону
input double   InpLots                      = 0.01;              // Lots
input ushort   InpSignalsFrequency          = 10;                // Search signals, in seconds (min value "10")
input string   InpNameR                     = "LineR";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = close_all;         // Trade command:
input bool     ObjRevers                    = false;             // Obj: Revers
input string   InpNameS                     = "LineS";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = close_all;         // Trade command:
input ulong    InpMagic                     = 78712995;          // Magic number
//---
Dateien:
 
Alexsandr San:

Eine weitere Zeile hinzugefügt.

Für einen vollwertigen Experten, der fehlt -

1 - Stop Loss , Take Profit in Pips (nicht sichtbar)

2 - Trailing Stop ab horizontaler Linie

3 - Signal des Anzeigers

Ich werde den Expert Advisor2_LineOpenClose.mq5 weiter modifizieren

//--- input parameters
input uint     maxLimits                    = 1;                 // Кол-во Позиции Открыть в одну сторону
input double   InpLots                      = 0.01;              // Lots
input ushort   InpSignalsFrequency          = 10;                // Search signals, in seconds (min value "10")
input string   InpNameR                     = "LineR";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = close_all;         // Trade command:
input bool     ObjRevers                    = false;             // Obj: Revers
input string   InpNameS                     = "LineS";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = close_all;         // Trade command:
input ulong    InpMagic                     = 78712995;          // Magic number
//---
 
Alexsandr San:

Für einen vollwertigen Experten, der fehlt -

1 - Stop Loss , Take Profit in Pips (nicht sichtbar)

2 - Trailing Stop von horizontalen Linien

3 - Das Signal des Indikators

Ich werde den Expert Advisor2_LineOpenClose.mq5 weiter modifizieren

Hinzugefügt - Signal von Indikator

auf diese Weise

//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
double iGetArray(const int handle,const int buffer,const int start_pos,const int count,double &arr_buffer[])
  {
   bool result=true;
   if(!ArrayIsDynamic(arr_buffer))
     {
      Print("This a no dynamic array!");
      return(false);
     }
   ArrayFree(arr_buffer);
//--- reset error code
   ResetLastError();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied=CopyBuffer(handle,buffer,start_pos,count,arr_buffer);
   if(copied!=count)
     {
      //--- if the copying fails, tell the error code
      PrintFormat("Failed to copy data from the indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated
      return(false);
     }
   return(result);
  }
//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool SearchTradingSignals(void)
  {
//--- we work only at the time of the birth of new bar
   datetime time_0=iTime(m_symbol.Name(),Period(),0);
   if(time_0==ExtPrevBarsY)
      return(true);
   ExtPrevBarsY=time_0;
   if(!m_symbol.RefreshRates())
     {
      ExtPrevBarsY=0;
      return(false);
     }
//---
   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)
     {
      switch(InpTradeCommandY)
        {
         case  close_buys:
            ExtNeedCloseBuy=true;
            if(LongObjClosed())
               break;
         case  close_sells:
            ExtNeedCloseSell=true;
            if(ShortObjClosed())
               break;
         case close_all:
            ExtNeedCloseAll=true;
            if(LongShortObjClosed())
               break;
         case open_buy:
            ExtNeedOpenBuy=true;
            if(LongObjOpened())
               break;
         case open_sell:
            ExtNeedOpenSell=true;
            if(ShortObjOpened())
               break;
         default:
            ExtNeedOpenBuySell=true;
            if(LongShortObjOpened())
               break;
        }
     }
   if(SellBuffer[1]!=0.0)
     {
      switch(InpTradeCommandU)
        {
         case  close_buys:
            ExtNeedCloseBuy=true;
            if(LongObjClosed())
               break;
         case  close_sells:
            ExtNeedCloseSell=true;
            if(ShortObjClosed())
               break;
         case close_all:
            ExtNeedCloseAll=true;
            if(LongShortObjClosed())
               break;
         case open_buy:
            ExtNeedOpenBuy=true;
            if(LongObjOpened())
               break;
         case open_sell:
            ExtNeedOpenSell=true;
            if(ShortObjOpened())
               break;
         default:
            ExtNeedOpenBuySell=true;
            if(LongShortObjOpened())
               break;
        }
     }
//---
   return(true);
  }
//+------------------------------------------------------------------+

Jetzt in den Einstellungen

//--- input parameters
input uint     maxLimits                    = 1;                 // Кол-во Позиции Открыть в одну сторону
input double   InpLots                      = 0.01;              // Lots
input ushort   InpSignalsFrequency          = 10;                // Search signals, in seconds (min value "10")
input string   InpNameR                     = "LineR";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandR   = open_buy;          // Trade command:
input string   InpNameS                     = "LineS";           // Line name (Horizontal Line or Trend Line)
input ENUM_TRADE_COMMAND InpTradeCommandS   = open_sell;         // Trade command:
input string   short_name             = "Examples\\ZigzagColor"; // Name Indicators
input ENUM_TRADE_COMMAND InpTradeCommandY   = open_buy;          // Trade command: (BuyBuffer Indicators)
input ENUM_TRADE_COMMAND InpTradeCommandU   = open_sell;         // Trade command: (SellBuffer Indicators)
input bool     ObjRevers                    = false;             // Obj: Revers
//---

Überprüfung eines Blinkersignals

par

graf

Dateien:
XXX_Ind.mq5  52 kb
 
Alexsandr San:

Für einen vollwertigen Experten, der fehlt -

1 - Stop Loss , Take Profit in Pips (nicht sichtbar)

2 - Trailing Stop von horizontalen Linien

3 - Das Signal des Indikators

Ich werde die Feinabstimmung des Expert Advisor2_LineOpenClose.mq5

Ich habe auchTrailing Stop von der horizontalen Linie hinzugefügt. Ich habe sozusagen alles hinzugefügt und überprüfe jetzt die Funktionsfähigkeit.

Hier 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:        -----";              //
input string   short_name                   = "Examples\\ZigzagColor"; // Name Indicators
input bool     InpIndicators                = false;             // Indicators: Start (true)
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
//---


Dateien:
 
Alexsandr San:

Trailing Stop auch bei horizontalen Linien hinzugefügt. Ich glaube, ich habe alles hinzugefügt, jetzt muss ich nur noch überprüfen, ob es funktioniert.

Hier sind die Einstellungen

Das Prinzip der Arbeit, hier diese Parameter.

Wenn die Fonds ein bestimmtes Ziel erreichen, werden alle Positionen für alle offenen Paare geschlossen, und alle Charts wechseln in das "ADX"-Muster .

(Es ist wichtig - es ist obligatorisch, dass Zahlen über Ihrem Saldo in den Einstellungen geschrieben werden) und Expert Advisor wird alle geöffneten Positionen schließen und die Charts der Vorlage ändern

//+------------------------------------------------------------------+
input string   t="-----  Parameters         -----";              //
input string   Template                     = "ADX";             // Имя шаблона(without '.tpl')
input double   TargetProfit                 = 999999.99;         // Цель Баланса(Ваш Баланс + сумма)

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

Losparameter.

können Sie eine Position als 0,06 oder eine Anzahl von Positionen als 6 bei 0,01 einstellen

input uint     maxLimits                    = 1;                 // Кол-во Позиции Открыть в одну сторону
input double   InpLots                      = 0.01;              // Lots

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

Parameter mit Take ProfitT.

Es wird durch die Anzahl der Pips ausgelöst (wenn es "0" ist, wird die Position geschlossen), ist es notwendig, den Abstand anzugeben.

input int      InpTakeProfit                = 50;                // Take Profit ("0"-No. 5<100)

XXX_Schleppende Linie.mq5

 
Alexsandr San:

Hinzugefügt - Signal von Indikator

wie diese.

In den Einstellungen sieht es jetzt so aus

Prüfen des Signals vom Indikator

Der Indikator öffnet nur Positionen zu schließen, nahm ich es aus dem Expert Advisor im Terminal (Moving Average)

Ich habe ein wenig Umkehrung bestraft

//+------------------------------------------------------------------+
//| Check for close position conditions                              |
//+------------------------------------------------------------------+
void CheckForClose(void)
  {
//---
   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))
     {
      return;
     }
//--- positions already selected before
   bool signal=false;
   long type=PositionGetInteger(POSITION_TYPE);
   if(ObjRevers)
     {
      if(type==(long)POSITION_TYPE_BUY && BuyBuffer[1]!=0.0)
         signal=true;
      if(type==(long)POSITION_TYPE_SELL && SellBuffer[1]!=0.0)
         signal=true;
     }
   if(!ObjRevers)
     {
      if(type==(long)POSITION_TYPE_BUY && SellBuffer[1]!=0.0)
         signal=true;
      if(type==(long)POSITION_TYPE_SELL && BuyBuffer[1]!=0.0)
         signal=true;
     }
//--- additional checking
   if(signal)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         m_trade.PositionClose(_Symbol,3);
     }
//---
  }
//+------------------------------------------------------------------+

Foto von

Das einfachste Handelssystem mit Semaphor-Indikatoren

Januar 13, 2012, 13:27



Beispiele für typische Semaphoren, Signalanzeiger

In der Code Base gibt es derzeit eine Vielzahl ähnlicher Indikatoren, für die Zwecke dieses Artikels werde ich nur einige Links zu den Quellressourcen angeben:


Dateien:
 
Alexsandr San:

Aus dem Indikator, öffnet nur Positionen, zu schließen, nahm ich den Weg von der Expert Advisor im Terminal (Moving Average)

Ich habe den Rückwärtsgang ein wenig verbessert

Ich mag es nicht, wenn ich eine Position schließe. Ich suche nach einer Möglichkeit, die Funktion zum Schließen einer Position aus einem Indikator zu korrigieren

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

Ich habe das Problem behoben und den Indikator Gleitender Durchschnitt hinzugefügt.

//+------------------------------------------------------------------+
//| Position select depending on netting or hedging                  |
//+------------------------------------------------------------------+
bool SelectPosition()
  {
   bool res=false;
//--- check position in Hedging mode
   if(ExtHedging)
     {
      uint total=PositionsTotal();
      for(uint i=0; i<total; i++)
        {
         string position_symbol=PositionGetSymbol(i);
         if(_Symbol==position_symbol && InpMagic==PositionGetInteger(POSITION_MAGIC))
           {
            res=true;
            break;
           }
        }
     }
//--- check position in Netting mode
   else
     {
      if(!PositionSelect(_Symbol))
         return(false);
      else
         return(PositionGetInteger(POSITION_MAGIC)==InpMagic); //---check Magic number
     }
//--- result for Hedging mode
   return(res);
  }
//+------------------------------------------------------------------+

und in OnTick()

      if(InpCloseOpposite && InpIndicators)
        {
         //---
         if(SelectPosition())
            CheckForClose();
         else
            SearchTradingSignals();
        }
      if(!InpCloseOpposite && InpIndicators)
        {
         SearchTradingSignals();
        }

es stellt sich heraus, dassSelectPosition() durch sie hindurchgehen sollte

Dateien: