[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 232

 
DhP:

double tmpNormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) 之间有什么区别

它们相乘的结果总是大于零。

我想是的))。

(-) * (-) = +

(+) * (+) = +


а....你说得很对... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - 这里我们应该放 "i "而不是0 - 我改变了它,但它仍然没有开始做交易....。

现在的代码看起来像这样。

 bool signal_MACD() 
  { 
    bool signal_MACD = false;
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          break; 
       }        
    } 
    return(signal_MACD);
  } 

但它仍然不工作

 
CLAIN:


а....你说得很对... NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - 我改变了它,但它从未开始做交易....。

现在的代码看起来像这样。

但它仍然不工作。

这是否会把真变成假?

该函数是否改变了输出值?

 
CLAIN:


а....你说得很对...NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0) - 这里我们应该放 "i "而不是0 - 我改变了它,但它仍然没有开始做交易....。

现在的代码看起来像这样。

但它仍然不工作


使用 "打印",阅读日志 并将 "现在的情况 "与 "预期的情况 "进行比较。
 

该功能不改变价值....至少这是我的判断,因为交易从未开始进行。

你如何使用打印?

 bool signal_MACD() 
  { 
    bool signal_MACD = false;
    double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); 
    for(int i=1;i<=5;i++) 
    { 
       if(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp,4)<0.0) 
       { 
          signal_MACD = true; 
          Print(NormalizeDouble(iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
          break; 
       }        
    } 
    return(signal_MACD);
  } 

我只有这个版本,但有些东西告诉我它也是错的....

 
CLAIN:

该功能不改变价值....至少这是我的判断,因为交易从未开始进行。

你如何使用打印?

我只有这个版本,但有些东西告诉我它也是错的....


Print("iMACD(",Symbol(),",",TF,",",fast_ema,",",slow_ema,",",signal_period,",",PRICE_CLOSE,",",MODE_MAIN,",",i,",",")*",tmp,"=",iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp);
 
MaxZ:

如果所有的变量都被声明,我没有看到MQL4语法中的任何错误...

有什么问题呢?

谢谢你。

为我的EA做一个回滚计算。我看到计算结果不准确,所以我翻阅了可能包含错误的块。

 


你好。

帮助我理解
,我正在写一个EA,但搞不清楚订单的问题。
我正在发出订单。
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,"",1,0,Red);
Alert (GetLastError())。

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_1,3,sl_sell,tp_sell_d_1,",2,0,Red);
Alert (GetLastError();

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_2,3,sl_sell,tp_sell_d_2,",3,0,Red);
Alert (GetLastError();

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,"",4,0,Red);
Alert(GetLastError());

如果第一个获利 点被触发,则删除其他订单。
如果第一个没有触发,而第二个获利点已经触发,那么改变地段_3和地段_4为第三个和第四个获利点。

 
sergey_r:


你好。

在这里帮我一下。
我在写一个EA,但搞不清楚订单的问题。
我在下订单。
OrderSend(Symbol(),OP_SELLLIMIT,lot,cena_sell,3,sl _sell,tp_sell,",1,0,Red)。
警告(GetLastError())。

OrderSend(Symbol(),OP_SELLLIMIT,lot_1,cena_sell_d_ 1,3,sl_sell,tp_sell_d_1,",2,0,Red)。
警告(GetLastError())。

OrderSend(Symbol(),OP_SELLLIMIT,lot_2,cena_sell_d_2,3,sl_sell,tp_sell_d_2,",3,0,Red)。
警告(GetLastError())。

OrderSend(Symbol(),OP_SELLLIMIT,lot_3,cena_sell_d_3,3,sl_sell,tp_sell_d_3,",4,0,Red)。
警告(GetLastError())。
我需要。
如果第一个获利点被触发,则删除剩余的订单。
如果第一个没有触发,而第二个获利点已经触发,则将lot_3和lot_4改为第三个和第四个。


首先是什么--使用论坛 一页的函数--它返回标志,在获利时关闭订单。在此之前,根据你的(不同的)订单量,你为每个订单设置不同的magic_number,即lot - magic 1,lot1 - magic 2等等。然后,你检查具有魔力1的订单是否被使用此功能的接单关闭,如果是,你就 "删除其他"。然后通过代码,你也要检查带有神奇数字2的第二个订单 - 如果它是好的,然后你修改第三和第四个订单(改变它们的数量)......而当挂单被设置和修改时,我们自然不会忘记检查 最小公差和所有其他方面......像这样...
 

我不明白如何使用这些功能。你能描述一下如何做到这一点吗?

我在这里下了这些订单。然后我插入该页的函数。或如何?描述一个如何做到这一点的例子。请。

 
sergey_r:

我不明白如何使用这些功能。你能描述一下如何做到这一点吗?

我在这里下了这些订单。然后我插入该页的函数。或如何?描述一个如何做到这一点的例子。请。



使用f-mi的工作顺序--这些是基本的东西,一切都围绕着它们。把它拆开,看看猫头鹰的例子(在一个合格的代码中),它们可以在代码库中找到 - 把这个 猫头鹰的例子拆开,把它作为你自己的基础...它是一个基础,你不能没有它。我自己把基于这个例子的猫头鹰 放在代码库中。

慢慢来,慢慢来--把它整理出来。