编码帮助 - 页 658

 

亲爱的mladen

如果我想知道最后关闭的订单类型,以及它是否在EA中获利,下面的函数可以完成这个工作吗?

int OrdersProfit()
  {
   int Profit;
   for (int i=OrdersHistoryTotal(); i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit ="1" ;
      if (OrderType()==OP_SELL && OrderProfit()> 0) Profit ="2" ;
     }    
   return(Profit);
  }


最好。

 
IXI:

亲爱的mladen

如果我想知道最后关闭的订单类型,以及它是否在EA中获利,下面的函数可以完成这个工作。


最好。

不,不能(只是因为平仓的订单不是按收盘时间排序的--至少手册上是这么说的:不能保证订单是按收盘时间排序的)。它必须像这样做。

int OrdersProfit()
{
   int      profit    = 0;
   datetime CloseTime = 0;
       for(int i=OrdersHistoryTotal()-1;i>=0;i--)
       {
           if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
           {
              CloseTime = OrderCloseTime();
              if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit =1 ;
              if (OrderType()==OP_SELL && OrderProfit()> 0) Profit =2 ;
           } 
       }
       return(Profit);
}  
 

亲爱的mladen

非常感谢您的完美回答。

最好的。

 

亲爱的朋友们。

你能为最新的mt4版本更新所附的指标吗?

特别是, "123PatternsV6 " 在mt4上冻结了,不能工作了

附加的文件:
 
oguz:

亲爱的朋友们。

你能为最新的mt4版本更新所附的指标吗?

特别是, "123PatternsV6 " 在mt4上冻结了,不能工作了

我认为123需要 "之 "字形指标,以便在不冻结终端的情况下工作。
 
mntiwana:
我认为123需要Zigzag指标,以便在不冻结终端的情况下工作。

在MT4中已经有了Zigzag指标

 
oguz:

Zigzag指标在mt4中已经可用。

新的Zigzag不象以前的版本那样工作。如果在iCustom()调用中使用了某些参数,它将挂起终端。
 

你好。

最近,我开始对MQL4进行编程,以获得经验,这样我就能事先对自己的想法进行编码测试。

现在我正在为绘画的时间问题而苦恼。

比方说,我有一个随机指标 的if语句,想等到MA高于或低于价格时再画,我该怎么做呢?

我试着做了些什么,我唯一想到的是。

if(iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i) > 80
      && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80

 while High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1) //Candlestick High < Moving Average
            (
               1+1
            )
       
      )

{
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High
         if(i == 0 && Time[0] != time_alert) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
        }
      else
        {
         Buffer1[i] = 0;

1+1只是为了填充while循环,我想做的是等待画出箭头,直到价格的高点低于MA,但我不希望这是一个语句,因为交叉发生了,我只想等待利用我的画。

然而,这并不成功,因此我请求社区中的专业编码人员。

 
NWFstudent:

你好。

最近,我开始对MQL4进行编程,以获得经验,这样我就能事先对自己的想法进行编码测试。

现在我正在为绘画的时间问题而苦恼。

比方说,我有一个随机指标的if语句,想等到MA高于或低于价格时再画,我该怎么做呢?

我试着做了些什么,我唯一想到的是。

1+1只是为了填充while循环,我想做的是等待画出箭头,直到价格的高点低于MA,但我不希望这是一个语句,因为交叉发生了,我只想等待利用我的画。

然而,这并不成功,因此我请求社区中的专业编码人员。

试着这样做。

Buffer1[i] = 0;
if(   iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i)   > 80
   && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80 
   && High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1)) //Candlestick High < Moving Average
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High

if(i == 0 && Time[0] != time_alert && Buffer1[i]!=0) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
 
mladen:

试着像这样。

这将给我一个 "信号,只有当交叉点发生在MA之上时,我希望它在MA之下,但我也希望信号,如果我有一个交叉点在MA之上,几条柱子之后,价格移动到MA之下。

这就是我所尝试的while循环,所以代码将循环,直到参数变成假的,然后开始绘制信号。

我画了一张示意图,也许你会更明白。

谢谢你的回答。

附加的文件:
illust.png  24 kb