给MQL专家的一个问题 - 页 14

 

续的问题。

这种情况下的算法实现如下,这里是过滤器本身。

//================фильтр   - начало схождения ===================
 if (FILTER_ ) { //если выключатель   фильтра включен
//------------------------------------------------ 
//задаем вычисление ценовых линий на втором   баре
double  MA_11= (iMA(Symbol_1,Period(),per2,0,ma_method,Price,2)-
                iMA(Symbol_1,Period(),per1,0,ma_method,Price,2)) ;  
double  MA_21= (iMA(Symbol_2,Period(),per2,0,ma_method,Price,2)-
                iMA(Symbol_2,Period(),per1,0,ma_method,Price,2))  ;    
double ДЕЛЬТА_MA_2 = MathAbs(MA_11 - MA_21);//разность между ценовыми линиями на 2 баре
//
if (ДЕЛЬТА_MA_2 >=  ДЕЛЬТА_MA) // если линии начинают сходится, разрешаем вход
       Trade_Filter2=true;       else Trade_Filter2=false; 
//-------------------------------------------------                 
         }  // выключатель   фильтра включен
//================== конец блока 2-го фильтра ======================

而这里是参赛条件本身。

if  ( TradeDOWN==true  && .... ) {            //если условия соответствуют заданным 
if (Trade_Filter2==true || ! FILTER_ ) {       //  фильтр включен/выключен  
 ..... открвываем позиции: продаем первый инструмент и покупаем второй    

但是,专家顾问似乎没有看到过滤条件!它像以前一样开仓,没有注意到

如果(Trade_Filter2==true || ! FILTER_ ) { .....

我不明白为什么。反复监测网上开仓情况。但是,过滤器不起作用!专家顾问没有看到它。请告诉我哪里错了?

还有一个问题。在全局变量 中设置的正确方法是什么(目前是第一个选项)?

bool Trade_Filter2=0; 或者只是boolTrade_Filter2

 
Rita:

的延续性问题。

...

在Coment()中输出MA_11, MA_21, DELTA_MA_2,看看有什么。在双倍DELTA_MA_2之后插入评论()...

MACD正在从两个不同的角色进行比较,它们可以有非常不同的尺寸。

 

有一个评论。评论被设置为 "过滤器允许(或拒绝)进入"),像这样。

这样做的。

string on_off=StringConcatenate  (on_off,
"1-й(текущий)инстр.=",Symbol_1," 2-й инстр.=",Symbol_2," ",.....
"ДельтаТекущая/ДельтаЗаданная = ", ДЕЛЬТА_MA," / ",ДЕЛЬТА, "\n", 
 "MA_1 ",Symbol_1, "= ", MA_1 , "\n",
 "MA_2 ",Symbol_2, "= ", MA_2 , "\n",

 //--------------------------------------------------------------------------------

if (Trade_Filter2==true && FILTER_==true )  
        string  on_off4 = StringConcatenate (on_off4, "Фильтр Разрешает вход", "\n");
if (Trade_Filter2==false && FILTER_==true )  
        string  on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход", "\n");
if (FILTER_==false   )  
        string  on_off42 = StringConcatenate (on_off42, "Фильтр Отключен", "\
我直观地观察到,线条仍在发散,并且注释显示 "过滤器禁止输入"!这说明什么?但进场还是实施了--EA并没有注意到过滤器。

工具的维度是相同的,或者(有不同的维度)--通过编程使用系数减少到相同(这在上面的代码中没有显示,不是为了杂乱无章))。这很好!

 

但是双倍DELTA_MA_2, MA_11, MA_21-被声明在f-i Comment()下面。

但是Trade_Filter2 是在全局变量 中声明的!所以,我认为评论中的一切都做得很正确

 
禁用你的评论一段时间,并尝试从不同的地方输出。从你检查过滤条件的地方到你使用它的地方。这样你就能找到发生扭曲的那条线。
 
好的,谢谢,迪米特里!我将在周末后尝试使用你的建议。
 
在 "打印"中打印所有参数的值,并将其紧跟在开单操作员之后。
 

下午好。在今天的mt4更新后,我无法编译EA代码。有30个奇怪的错误从编译器中传出。

你能告诉我为什么在以下几行突然出现错误吗?
代码。

if (Trade_Filter2==true && FILTER_==true )  
        string  on_off4 = StringConcatenate ( on_off4, "Фильтр Разрешает вход", "\n");
if (Trade_Filter2==false && FILTER_==true )  
        string  on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход", "\n");
if (FILTER_==false   )  
        string  on_off42 = StringConcatenate (on_off42, "Фильтр Отключен", "\n");       
'on_off' - 未声明的标识符 Exp_ARBITR_2Line_Spread_002Mod.mq4 125 35

'on_off4' - 未声明的标识符 Exp_ARBITR_2Line_Spread_002Mod.mq4 140 47

'on_off41' - 未声明的标识符 Exp_ARBITR_2Line_Spread_002Mod.mq4 142 47

以及如何纠正它们?

 
if (Trade_Filter2==true && FILTER_==true )  
 {
  string on_off4;
  on_off4 = StringConcatenate ( on_off4, "Фильтр Разрешает вход", "\n");
 }
if (Trade_Filter2==false && FILTER_==true )  
 {
  string on_off41;
  on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход", "\n");
 }
if (FILTER_== false)  
 {
  string on_off42;
  on_off42 = StringConcatenate (on_off42, "Фильтр Отключен", "\n");
 }

它是这样编译的吗?

但这样做更好。

string on_off4;
string on_off41;
string on_off42;
if (Trade_Filter2 == true && FILTER_ == true) on_off4 = "Фильтр Разрешает вход\n";
if (Trade_Filter2 == false && FILTER_ == true) on_off41 = "фильтр Запрещает вход\n";
if (FILTER_ == false) on_off42 = "Фильтр Отключен\n";
 
string on_off4, on_off41, on_off42;
if (Trade_Filter2==true && FILTER_==true )  
        on_off4 = StringConcatenate ( on_off4, "Фильтр Разрешает вход", "\n");
if (Trade_Filter2==false && FILTER_==true )  
        on_off41 = StringConcatenate (on_off41, "фильтр Запрещает вход", "\n");
if (FILTER_==false   )  
        on_off42 = StringConcatenate (on_off42, "Фильтр Отключен", "\n");       

如果我的心灵感应正确,这应该是可行的