mql5 - 自上一次交易后一定时间内的垂直线 - 页 4

 
renatmt5:
顺便说一下,关于你添加的保护,还有一件事。由于我在计算正确的值之前有1-2分钟的延迟,在此期间变量等于零,我将当前的时间框架切换到另一个时间框架进行快速更新--数值立即被重新计算。也许,有可能根据这一原则制作一些软件的拐杖?

我讨厌 "拐杖 "这个词。


我已经事先想好了一切,你问得非常好。我们需要把LastProfitForPeriod从void变成bool。如果有一个错误--例如,没有找到日期或其他东西,我们就返回false,依此类推。

因此,不会有分钟的损失。

 

如果你得到的是 "false",请重置时间

   double profit_last_day=0.0,profit_last_deal=0.0;
   if(!LastProfitForPeriod(profit_last_day,profit_last_deal))
     {
      ExtLastMove=0;
      return(rates_total);
     }

   Comment("Profit last day: ",DoubleToString(profit_last_day,2),"\n",
           "Profit last deal: ",DoubleToString(profit_last_deal,2));


1.003版

附加的文件:
 
Vladimir Karputov:

我讨厌 "拐杖 "这个词。


我已经事先想好了一切,你问得非常好。我们需要把LastProfitForPeriod从void变成bool。如果有一个错误--例如,没有找到日期或其他东西,我们就返回false,依此类推。

因此,不会有分钟的损失。

关于 "拐杖"--是的,这个词里有一些对编程的漫不经心的态度:)

是的,在剧本的第3版中,丢失的一分钟效果已经消失了。

 
renatmt5:

至于 "拐杖"--是的,这个词中有一些粗心的编程态度 :)

是的,在剧本的第3版中, 丢失的一分钟效果已经消失了。

这是一个指标:)

 
Vladimir Karputov:

这是一个指标:)

是的,没错--仍旧被搞糊涂了。

 

我添加了一个块来计算与最后一笔交易的结束有关的时间偏移。当后来试图使用last_time和n进行行偏移时,我得到一个编译时错误:(

.....

                    {

                     last_time=deal_time;

                     profit_last_deal=full_profit;

                    }

                 }

        }

     }

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

// MY CODE     //   

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

if (profit_last_day<=0 && profit_last_deal<=0){uint n=60*60*24;}

else if (profit_last_day>0 && profit_last_deal<=0){uint n=60*60*2;}

else {uint n=60*60*1;}

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

// MY CODE END //   

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

   return(true);

  }

.......
 
不知何故,我没有正确插入代码片断 :)
 
当创建ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0)时,我需要将时间从TimeCurrent()改为last_time,并向未来偏移一个等于n的周期。
或者,也许有一个函数可以将一个物体向前/向后移动指定的条数?什么是更好的?我承认,到目前为止,我的独立努力是不成功的。
 
renatmt5:
当创建ObjectCreate(chart_ID,name,OBJ_VLINE,sub_window,time,0)时,我想改变时间值,这样它就不是TimeCurrent(),而是last_time,其偏移量等于n。
或者,也许有一个函数可以将一个物体向前/向后移动指定的条数?什么是更好的?我承认,到目前为止,我的独立努力是不成功的。

该行被创建一次 - 在OnInit()中。

那么它只是被移动 -VLineMove

 

我的理解是否正确,我需要在代码片断的最后一行进行修改(特别是时间=0)?

//+------------------------------------------------------------------+ 
//| Move the vertical line                                           | 
//+------------------------------------------------------------------+ 
bool VLineMove(const long   chart_ID=0,   // chart's ID 
               const string name="VLine", // line name 
               datetime     time=0)       // line time 


或者VLineMove是一个函数,它仍然需要在某个地方启动(例如在OnCalculate),并将传入的参数传递给它?
我完全糊涂了 :)