初学者的问题 MQL5 MT5 MetaTrader 5 - 页 798

 

你好!我需要你的帮助,论坛成员。我正在写一个指标。我需要处理的是酒吧的开放时间。看起来这个时间应该存储在time[]中,但有一些无稽之谈。

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---check for rates total


   if(rates_total<2)
      return(0);
//--- starting work
   int start=prev_calculated-1;
//--- correct position
   if(start<1) start=1;
//--- main cycle

CalculateVolume(start,rates_total,time);


//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateVolume(const int nPosition,
                     const int nRatesCount,
                     const long &tim[],
                     )
  {
  
MqlDateTime dat1;


for(int j=nPosition;j<nRatesCount && !IsStopped();j++)
{
    TimeToStruct(tim[j],dat1);

    Print("год ",dat1.year," ",dat1.day," ",dat1.hour," ",dat1.min)


 }
} 

2017.11.20 17:48:01.590 (RTS-12.17,M1) year 2016 29 15 26

2017.11.20 17:48:01.734 (RTS-12.17,M1) year 2016 29 15 27

2017.11.20 17:48:01.878 (RTS-12.17,M1) year 2016 29 15 29

2017.11.20 17:48:02.022 (RTS-12.17,M1) year 2016 29 15 33

2017.11.20 17:48:02.165 (RTS-12.17,M1) year 2016 29 15 45

2017.11.20 17:48:02.310 (RTS-12.17,M1) year 2016 29 21 12

2017.11.20 17:48:02.454 (RTS-12.17,M1) year 2016 1 20 54

2017.11.20 17:48:02.599 (RTS-12.17,M1) year 2016 2 12 52

2017.11.20 17:48:02.743 (RTS-12.17,M1) year 2016 2 22 28

2017.11.20 17:48:02.887 (RTS-12.17,M1) year 2016 2 23 20

2017.11.20 17:48:03.031 (RTS-12.17,M1) year 2016 3 11 47

2017.11.20 17:48:03.175 (RTS-12.17,M1) year 2016 3 22 34

2017.11.20 17:48:03.320 (RTS-12.17,M1) year 2016 3 22 35

2017.11.20 17:48:03.463 (RTS-12.17,M1) year 2016 4 21 56

2017.11.20 17:48:03.609 (RTS-12.17,M1) year 2016 4 23 32

感觉每天只有几条。你能给我一个提示吗,我的大脑已经被搞乱了。

 
fxsaber:

是的,但是歪打正着。

pivomoe:
乍一看,CopyTick在测试器中工作。在测试器中,CopyTicks操作有任何已知的错误吗?CopyTicksRange在现实生活中的工作没有漏洞?

在下一个版本中,开发人员将在测试器中正确显示贸易旗帜。

fxsaber:

在测试器中,有一个滴答时间的错误。我们每次都要减去一定的数值。SD意识到了这个问题。

你能详细说明一下吗?
 
我正在研究不同变体的交易请求(MqlTradeRequest)的结构。我从https://www.mql5.com/ru/articles/100,取了现成的my_first_ea.mq5专家顾问,并尝试在源代码中改变条件,在SAR交叉点开仓--它成功了。然后我通过MqlTradeRequest结构 从MQL5添加了尾部代码(通过SAR改变/修改头寸)。 但它产生了错误[无效止损]。我认为这个请求有问题。简而言之,我陷入了研究职位修改的困境。我真的不明白我做错了什么。
附加的文件:
SAR_SAR.mq5  27 kb
 
Alexey Kozitsyn:

你能详细说明一下吗?

void OnTick()
{
  MqlTick Ticks[];
  
  if (CopyTicksRange(_Symbol, Ticks) != -1)
  {
    ArrayPrint(Ticks);              
    
    ExpertRemove();
  }
}
 
谢谢你的帮助,这么多人愿意帮忙!!!!!!!!!!!!我已经厌倦了阅读我的代码的评论..............
 
DCodec:
谢谢你的帮助,这么多人愿意帮忙!!!!!!!!!!!!我已经厌倦了阅读我的代码的评论..............
没有代码,没有评论。
 

请告知如何找出价格步骤(在 "柚木尺寸 "规格中)?

 
Aleksey Vyazmikin:

请告知如何找出价格步骤(在 "柚木尺寸 "规格中)?

ht

 
Vladislav Andruschenko:
ht


谢谢你!我搜索了一下,没有找到...

那么下一个问题,假设步骤是25,那么如何安排四舍五入到一个能被25整除的数字,也许有一个函数?

 
Aleksey Vyazmikin:

谢谢你!我搜索了一下,没有找到...

那么下一个问题,假设步骤是25,那么如何安排四舍五入到一个能被25整除的数字,也许有一个函数?


我做了一个函数,它似乎可以工作

//+------------------------------------------------------------------+
//|Функция округления числа до кратного целого                       |
//+------------------------------------------------------------------+
double Okr(double cifra)
  {
     double TickSize=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
     double Okruglenie=NormalizeDouble(cifra/TickSize,_Digits)*TickSize;
     Print ("До кратного округления=",DoubleToString(cifra,_Digits), " После кратного округления=",DoubleToString(Okruglenie,_Digits));
     return(Okruglenie);
  }