Como eu monto meu conselheiro por tentativa e erro - página 45

 
Vamos lá.
 

Um simples Conselheiro Especializado para os indicadores de teste

digite o nome do indicador

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

se a posição se abrir na direção errada, mudar a direção inversa

input bool   Revers           = false;        // Revers

nem todos os indicadores funcionam - normal, os indicadores de sinal funcionam

todas as configurações especializadas

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

Snapshot.PNG

Arquivos anexados:
 
Alexsandr San:

Um simples Conselheiro Especializado para os indicadores de teste

digite o nome do indicador

se a posição se abrir na direção errada, mudar a direção inversa

nem todos os indicadores funcionam - normal, os indicadores de sinal funcionam

todas as configurações especializadas

se o indicador estiver localizado em outra pasta

escreva-o assim - Exemplos\\\i1 ZigzagColor

Exemplos

ziguezague

 

tentando fazer algo com o Indicador ( Heiken_Ashi.mq5 )

- até agora tenho, Musical ( quando cinza acima do azul, um som, quando abaixo, outro som )

EURSGDM1

Arquivos anexados:
03.mq5  12 kb
 
Alexsandr San:

tentando fazer algo com o Indicador ( Heiken_Ashi.mq5 )

- Até agora, musical (quando a linha cinza acima do azul soa, quando abaixo, outro som)


Não consigo, não entendo bem, como fazer a linha que atravessa a outra linha, o sinal se apagou e se calou ?

Eu fiz isso, mas o alarme dispara em todos os bares.

//--- 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);
  }
 
É um indicador interessante. Como funciona?
 
Alex potapenko:
É um indicador interessante. Como funciona?

Ainda não sei, não sou um programador - por isso, ao cutucar, quero que a linha atravesse outra linha e acione um sinal.

- Parece funcionar - mas não dessa forma.

 

O sinal do indicador Heiken_Ashi. ---- Indicador Heiken2_Ashi

E, Especialista para testar o Indicador

AUDCADH4

Arquivos anexados:
 
Alexsandr San:

O sinal do indicador Heiken_Ashi. ---- Indicador Heiken2_Ashi

E, um consultor especializado para testar o Indicador


No Indicador Heiken2_Ashi, você pode adicionar 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");

adicionando estes filtros aqui

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

aqui

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

como este

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

O indicador, há algo sobre ele, quando é melhor abrir uma posição

Entre as duas linhas horizontais, você pode abrir em qualquer cor que seja o ponto .

Foto por

Arquivos anexados:
LN_1.mq5  27 kb
Razão: