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

 
Na los!
 

Ein einfacher Expert Advisor zum Testen von Indikatoren

den Namen des Indikators eingeben

input string short_name       = "LeM 2 Macd"; // name indicator

wenn die Position in die falsche Richtung öffnet, schalten Sie den Rückwärtsgang ein

input bool   Revers           = false;        // Revers

nicht alle Indikatoren funktionieren - ok, Signalindikatoren funktionieren

alle Experteneinstellungen

//---
input double InpLots          = 0.01;         // Lots
input int    InpTrailingStop  = 0;            // Trailing Stop Level (in pips)
input bool   Revers           = false;        // Revers
input string short_name       = "LeM 2 Macd"; // name indicator
//---

Schnappschuss.PNG

Dateien:
 
Alexsandr San:

Ein einfacher Expert Advisor zum Testen von Indikatoren

den Namen des Indikators eingeben

wenn die Position in die falsche Richtung öffnet, schalten Sie den Rückwärtsgang ein

nicht alle Indikatoren funktionieren - ok, Signalindikatoren funktionieren

alle Experteneinstellungen

wenn sich der Indikator in einem anderen Ordner befindet

schreiben Sie es so - Beispiele\\ZigzagColor

Beispiele

Zickzack

 

versuchen, etwas aus dem Indikator zu machen ( Heiken_Ashi.mq5 )

- bis jetzt habe ich, Musical ( wenn grau über blau, ein Ton, wenn unten, ein anderer Ton )

EURSGDM1

Dateien:
03.mq5  12 kb
 
Alexsandr San:

versuchen, etwas aus dem Indikator zu machen ( Heiken_Ashi.mq5 )

- Ich habe es so weit, musikalisch (wenn die graue Linie oberhalb der blauen ein Ton, wenn unter, ein anderer Ton)


Ich kann nicht, nicht bekommen, es richtig, wie man die Linie, die die andere Linie kreuzt, das Signal ging aus und still zu machen?

Das habe ich getan, aber der Alarm geht bei jedem Takt los.

//--- we work only at the time of the birth of new bar
   datetime time_0=iTime(Symbol(),Period(),0);
   if(time_0==m_prev_bars)
      return(rates_total);
   m_prev_bars=time_0;
//---
   int find_buy_level=ObjectFind(0,InpFont2);
   int find_sell_level=ObjectFind(0,InpFont1);

   if(find_buy_level==0)
     {
      double price=ObjectGetDouble(0,InpFont2,OBJPROP_PRICE);
      if(ObjectGetDouble(0,InpFont1,OBJPROP_PRICE)<price)
        {
         PlaySound("tick.wav");
         //---
         return(rates_total);
        }
     }
   if(find_sell_level==0)
     {
      double price=ObjectGetDouble(0,InpFont2,OBJPROP_PRICE);
      if(ObjectGetDouble(0,InpFont1,OBJPROP_PRICE)>price)
        {
         PlaySound("stops.wav");
         //---
         return(rates_total);
        }
     }
//--- done
   return(rates_total);
  }
 
Das ist ein interessanter Indikator. Wie funktioniert das?
 
Alex potapenko:
Dies ist ein interessanter Indikator. Wie funktioniert das?

Ich weiß es noch nicht, ich bin kein Programmierer - ich möchte also, dass die Linie beim Stoßen eine andere Linie kreuzt und ein Signal auslöst.

- Es scheint zu funktionieren - aber nicht auf diese Weise.

 

Das Signal des Heiken_Ashi-Indikators. ---- Heiken2_Ashi Indikator

Und, Experte zum Testen des Indikators

AUDCADH4

Dateien:
 
Alexsandr San:

Das Signal des Heiken_Ashi-Indikators. ---- Heiken2_Ashi Indikator

Und, ein Expert Advisor zum Testen des Indikators


Im Heiken2_Ashi-Indikator können Sie Filter hinzufügen

//---- получение хендла индикатора RSI
   RSI_Handle=iRSI(NULL,0,int(ParmMult*9),PRICE_CLOSE);
   if(RSI_Handle==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора iRSI");
//---- получение хендла индикатора Stochastic
   STO_Handle=iStochastic(NULL,0,int(21*ParmMult),int(3*ParmMult),int(2*ParmMult),MODE_LWMA,STO_LOWHIGH);
   if(STO_Handle==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора iStochastic");
//---- получение хендла индикатора MACD
   MACD_Handle=iMACD(NULL,0,int(10*ParmMult),int(15*ParmMult),int(13*ParmMult),PRICE_CLOSE);
   if(MACD_Handle==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора iMACD");
//---- получение хендла индикатора hHeiken_Ashi
   hHeiken_Ashi=iCustom(NULL,0,"Examples\\Heiken_Ashi");
   if(hHeiken_Ashi==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора hHeiken_Ashi");

indem Sie diese Filter hier hinzufügen

      RsiDn=RSI[bar]<=x2;
      StochDn=STO[bar]<STOS[bar];
      MacdDn=MACD[bar]<MACDS[bar];
      haClDn=haOpen[bar]>haClose[bar];

      RsiUp=RSI[bar]>=x1;
      StochUp=STO[bar]>STOS[bar];
      MacdUp=MACD[bar]>MACDS[bar];
      haOpUp=haOpen[bar]<haClose[bar];

hier

      if(haClDn)
         p = 1;
      if(haOpUp)
         p = 2;
      if(haClDn && (p==1 || p==0))
        {
         if(OldTrend>0)
            SellBuffer[bar]=high[bar];
         if(bar!=0)
            OldTrend=-1;
        }
      if(haOpUp && (p==2 || p==0))
        {
         if(OldTrend<0)
            BuyBuffer[bar]=low[bar];
         if(bar!=0)
            OldTrend=+1;
        }
     }

wie diese

      if(StochDn && RsiDn && MacdDn && haClDn)
         p = 1;
      if(StochUp && RsiUp && MacdUp && haOpUp)
         p = 2;
      if(StochDn && RsiDn && MacdDn && haClDn && (p==1 || p==0))
        {
         if(OldTrend>0)
            SellBuffer[bar]=high[bar];
         if(bar!=0)
            OldTrend=-1;
        }
      if(StochUp && RsiUp && MacdUp && haOpUp && (p==2 || p==0))
        {
         if(OldTrend<0)
            BuyBuffer[bar]=low[bar];
         if(bar!=0)
            OldTrend=+1;
        }
     }
//----
   return(rates_total);
  }
 

Der Indikator, da ist etwas dran, wann es am besten ist, eine Position zu eröffnen

Zwischen den beiden horizontalen Linien können Sie in der Farbe des Punktes öffnen.

Foto von

Dateien:
LN_1.mq5  27 kb