Come ho assemblato il mio consulente per tentativi ed errori - pagina 45

 
Andiamo.
 

Un semplice Expert Advisor per testare gli indicatori

inserire il nome dell'indicatore

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

se la posizione si apre nella direzione sbagliata, commutare l'inversione

input bool   Revers           = false;        // Revers

non tutti gli indicatori funzionano - ok, gli indicatori di segnale funzionano

tutte le impostazioni dell'esperto

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

Istantanea.PNG

File:
 
Alexsandr San:

Un semplice Expert Advisor per testare gli indicatori

inserire il nome dell'indicatore

se la posizione si apre nella direzione sbagliata, commutare l'inversione

non tutti gli indicatori funzionano - normale, gli indicatori di segnale funzionano

tutte le impostazioni dell'esperto

se l'indicatore si trova in un'altra cartella

scrivilo in questo modo - Examples\ZigzagColor

Esempi

zigzag

 

cercando di fare qualcosa con l'indicatore ( Heiken_Ashi.mq5 )

- finora ho ottenuto, Musical (quando grigio sopra blu, un suono, quando sotto, un altro suono)

EURSGDM1

File:
03.mq5  12 kb
 
Alexsandr San:

cercando di fare qualcosa con l'indicatore ( Heiken_Ashi.mq5 )

- Ho ottenuto finora, musicale (quando la linea grigia sopra il suono blu, quando sotto, un altro suono)


Non riesco, non capisco bene, come fare la linea che attraversa l'altra linea, il segnale si è spento e zitto?

L'ho fatto, ma l'allarme suona ogni 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);
  }
 
È un indicatore interessante. Come funziona?
 
Alex potapenko:
È un indicatore interessante. Come funziona?

Non lo so ancora, non sono un programmatore - quindi, punzecchiando, voglio che la linea attraversi un'altra linea e faccia scattare un segnale.

- Sembra funzionare - ma non così.

 

Il segnale dell'indicatore Heiken_Ashi. ---- Indicatore Heiken2_Ashi

E, Esperto per testare l'indicatore

AUDCADH4

File:
 
Alexsandr San:

Il segnale dell'indicatore Heiken_Ashi. ---- Indicatore Heiken2_Ashi

E un Expert Advisor per testare l'indicatore


Nell'indicatore Heiken2_Ashi, è possibile aggiungere filtri

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

aggiungendo questi filtri qui

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

qui

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

come questo

      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'indicatore, c'è qualcosa su di esso, quando è meglio aprire una posizione

Tra le due linee orizzontali, puoi aprire in qualsiasi colore sia il punto.

Foto di

File:
LN_1.mq5  27 kb