我如何通过试验和错误组装我的顾问 - 页 45

[删除]  
来吧。
[删除]  

用于测试指标的简单专家顾问

输入指标的名称

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

如果在错误的方向上打开位置,请切换到相反的方向。

input bool   Revers           = false;        // Revers

不是所有的指标都工作 - 正常,信号指标工作

所有专家设置

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

快照.PNG

附加的文件:
[删除]  
Alexsandr San:

用于测试指标的简单专家顾问

输入指标的名称

如果在错误的方向上打开位置,请切换到相反的方向。

不是所有的指标都有效 - 好吧,信号指标有效

所有专家设置

如果该指标位于另一个文件夹中

像这样写 - Examples/ZigzagColor

实例

之字形

[删除]  

试图从指标中获得一些东西 ( Heiken_Ashi.mq5 )

- 到目前为止,我得到了,音乐(当灰色高于蓝色时,有一种声音,当低于蓝色时,有另一种声音)。

EURSGDM1

附加的文件:
03.mq5  12 kb
[删除]  
Alexsandr San:

试图从指标中获得一些东西 ( Heiken_Ashi.mq5 )

- 到目前为止,我得到了它,音乐(当灰色的线在蓝色的上面时,有一个声音,当在下面时,有另一个声音)。


我不能,也不明白,如何使与另一条线相交的线,信号熄灭并闭嘴?

我这么做了,但警报器每条都会响起

//--- 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);
  }
 
这是一个有趣的指标。它是如何工作的?
[删除]  
Alex potapenko:
这是一个有趣的指标。它是如何工作的?

我还不知道,我不是一个程序员--所以,通过戳,我想让这条线穿过另一条线并触发一个信号。

- 它似乎在工作--但不是这样的。

[删除]  

来自Heiken_Ashi指标的信号。---- Heiken2_Ashi指标

而且,专家要测试该指标

AUDCADH4

附加的文件:
[删除]  
Alexsandr San:

来自Heiken_Ashi指标的信号。---- Heiken2_Ashi指标

还有,一个用于测试指标的专家顾问


Heiken2_Ashi指标 你可以添加过滤器

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

通过在这里添加这些过滤器

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

这里

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

像这样

      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);
  }
[删除]  

指标,有关于它的东西,当它是最好的打开一个位置

在两条横线之间,你可以用任何颜色的点打开。

图片来源

附加的文件:
LN_1.mq5  27 kb