Cómo armo mi asesor por ensayo y error - página 45

 
Vamos.
 

Un simple Asesor Experto para probar Indicadores

introduzca el nombre del indicador

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

si la posición se abre en la dirección equivocada, cambie la marcha atrás

input bool   Revers           = false;        // Revers

no todos los indicadores funcionan - ok, los indicadores de señales funcionan

todos los ajustes de los expertos

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

Instantánea.PNG

Archivos adjuntos:
 
Alexsandr San:

Un simple Asesor Experto para probar Indicadores

introduzca el nombre del indicador

si la posición se abre en la dirección equivocada, cambie la marcha atrás

no todos los indicadores funcionan - ok, los indicadores de señales funcionan

todos los ajustes de los expertos

si el indicador se encuentra en otra carpeta

escríbelo así - Examples\ZigzagColor

Ejemplos

zigzag

 

tratando de hacer algo con el Indicador ( Heiken_Ashi.mq5 )

- hasta ahora tengo, Musical ( cuando gris por encima de azul, un sonido, cuando por debajo, otro sonido )

EURSGDM1

Archivos adjuntos:
03.mq5  12 kb
 
Alexsandr San:

tratando de hacer algo con el Indicador ( Heiken_Ashi.mq5 )

- Lo tengo hasta ahora, musical (cuando la línea gris por encima de la azul suena, cuando por debajo, otro sonido)


No puedo, no lo entiendo bien, ¿cómo hacer que la línea que cruza la otra línea, la señal se apagó y se calló?

Lo hice, pero la alarma se dispara en cada barra

//--- 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);
  }
 
Es un indicador interesante. ¿Cómo funciona?
 
Alex potapenko:
Es un indicador interesante. ¿Cómo funciona?

Todavía no lo sé, no soy programador - así que, al pinchar, quiero que la línea cruce otra línea y active una señal.

- Parece que funciona, pero no así.

 

La señal del indicador Heiken_Ashi. ---- Indicador Heiken2_Ashi

Y, Experto para probar el Indicador

AUDCADH4

Archivos adjuntos:
 
Alexsandr San:

La señal del indicador Heiken_Ashi. ---- Indicador Heiken2_Ashi

Y, un Asesor Experto para probar el Indicador


En el indicador Heiken2_Ashi, puede añadir filtros

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

añadiendo estos filtros aquí

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

aquí

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

así

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

El indicador, hay algo en él, cuando es mejor abrir una posición

Entre las dos líneas horizontales, se puede abrir en el color que tenga el punto .

Foto de

Archivos adjuntos:
LN_1.mq5  27 kb