Comment j'ai assemblé mon conseiller par essais et erreurs - page 45

 
Allez.
 

Un conseiller expert simple pour tester les indicateurs

saisissez le nom de l'indicateur

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

si la position s'ouvre dans le mauvais sens, inversez la marche arrière

input bool   Revers           = false;        // Revers

tous les indicateurs ne fonctionnent pas - ok, les indicateurs de signaux fonctionnent

tous les paramètres experts

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

Instantané.PNG

Dossiers :
 
Alexsandr San:

Un conseiller expert simple pour tester les indicateurs

saisissez le nom de l'indicateur

si la position s'ouvre dans le mauvais sens, inversez la marche arrière

tous les indicateurs ne fonctionnent pas - normal, les indicateurs de signaux fonctionnent

tous les paramètres experts

si l'indicateur est situé dans un autre dossier

écrivez-le comme ceci - Exemples\\NZigzagColor

Exemples

zigzag

 

essayer de faire quelque chose de l'indicateur (Heiken_Ashi.mq5)

- Jusqu'à présent, j'ai obtenu un son musical (quand le gris est au-dessus du bleu, un son, quand il est en dessous, un autre son).

EURSGDM1

Dossiers :
03.mq5  12 kb
 
Alexsandr San:

essayer de faire quelque chose de l'indicateur (Heiken_Ashi.mq5)

- Je l'ai eu jusqu'ici, musical (quand la ligne grise au-dessus du bleu un son, quand en dessous, un autre son)


Je ne peux pas, je ne comprends pas, comment faire pour que la ligne qui croise l'autre ligne, le signal s'éteigne et se ferme ?

Je l'ai fait, mais l'alarme se déclenche à chaque barre.

//--- 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);
  }
 
C'est un indicateur intéressant. Comment cela fonctionne-t-il ?
 
Alex potapenko:
C'est un indicateur intéressant. Comment cela fonctionne-t-il ?

Je ne sais pas encore, je ne suis pas un programmeur - donc, en piquant, je veux que la ligne croise une autre ligne et déclenche un signal.

- Cela semble fonctionner - mais pas comme ça.

 

Le signal de l'indicateur Heiken_Ashi. ---- Indicateur Heiken2_Ashi

Et, Expert pour tester l'Indicateur

AUDCADH4

Dossiers :
 
Alexsandr San:

Le signal de l'indicateur Heiken_Ashi. ---- Indicateur Heiken2_Ashi

Et un conseiller expert pour tester l'indicateur.


Dans l'indicateur Heiken2_Ashi, vous pouvez ajouter des filtres

//---- получение хендла индикатора 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");

en ajoutant ces filtres ici

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

ici

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

comme ceci

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

L'indicateur, il y a quelque chose à propos de lui, quand il est préférable d'ouvrir une position.

Entre les deux lignes horizontales, vous pouvez ouvrir dans n'importe quelle couleur du point .

Photo par

Dossiers :
LN_1.mq5  27 kb
Raison: