//+------------------------------------------------------------------+bool IsReadyForCalculate(constint rates_total,constint prev_calculated,constdatetime &time[])
{
//--- подключение терминала и синхронизация данныхif(TerminalInfoInteger(TERMINAL_CONNECTED))
if(!SymbolIsSynchronized(_Symbol) ||
!SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) return(false);
//--- некорректное значение prev_calculatedif(prev_calculated<0) return(false);
//---if(prev_calculated==0) prev_time = time[rates_total-1];
//--- произошли изменения в данных, но prev_calculated не сброшен в 0//--- или изменение времени не соответствует одному баруif( (rates_total!=prev_calculated+1 &&
rates_total!=prev_calculated &&
prev_calculated!=0) ||
(time[rates_total-1]>prev_time &&
time[rates_total-2]!=prev_time))
{
loc_prev_calculated = 0; // чтобы индикатор не висел "голым" до следующей котировки, вычисляю индикатор из того, что естьreturn(true);
}
//--- корректный сценарийif( (rates_total==prev_calculated || rates_total==prev_calculated+1 || prev_calculated==0) &&
(time[rates_total-1]==prev_time || time[rates_total-2]==prev_time))
{
loc_prev_calculated = prev_calculated;
return(true);
}
//--- return(false); // верну false, пока не знаю, какие варианты ещё могут быть
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,constint prev_calculated,constdatetime &time[],constdouble &open[],constdouble &high[],constdouble &low[],constdouble &close[],constlong &tick_volume[],constlong &volume[],constint &spread[])
{
if(!IsReadyForCalculate(rates_total,prev_calculated,time)) return(0);
//---// вызов функции зигзага//--- return value of prev_calculated for next call
prev_time = time[rates_total-1];
return(rates_total);
}
//+------------------------------------------------------------------+
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
MT4
这个项目是什么,它有什么作用,我在任何地方都找不到描述?
我如何在默认情况下禁用它?
我试图运行手册中的加密例子,但我用 CRYPT_AES256 而不是CRYPT_DES 方法。结果在CryptEncode 方法后出现了错误4029
我试图运行手册中的加密例子,但我用 CRYPT_AES256 而不是CRYPT_DES 方法。结果,在CryptEncode 方法之后出现了错误4029
弄明白了。他需要更小心的钥匙))。
你好!
我很笨,自己想不出来,请告知问题可能是什么,或者至少给我指出正确的方向。
不同的指标开始同步显示不同的历史片段。这种情况有时会发生,不是每天都有。
我以为原因是指标没有正确处理动态加载的历史。我尝试了所有与更新历史上的指标正确更新有关的方法,我不知道还应该做什么来防止这种情况。
Alpari经纪人。MT5 build 2363 from 13.03.2020.
截图首先显示的是 "失败 "的版本。
然后是手动更新后的正确版本。
你好。
我在MQL5中遇到这个问题。我怎样才能强制OnChartEvent()函数 启动?是否有任何标准的方法来做?
为此,我使用ChartNavigate()函数并从OnChartEvent()中运行它。但它的工作不稳定--当有很多刻度线进来时,往往在调用ChartNavigate()后,OnChartEvent()由于某种原因而不能重新启动。我不明白它是如何连接的--ChartNavigate()和tick arrival rate,但它还是发生了。
你好!
我很笨,自己想不出来,请告知问题可能是什么,或者至少给我指出正确的方向。
也许我最近白加了这个......。
已删除取而代之的是...
return(false);
观察。
请告诉我关于MT5附带的标准指标,它们是如何工作的?它们是否像我在上面的截图中那样翻转?
大家好!
我正在掌握双OnTester()函数和TesterStatistics( )函数。我在MT4中为我的测试器写了一个简单的代码,每天在10:00、16:00、20:00和01:00开一个订单。在测试结束时,TesterStatistics( )函数 返回最小的余额值(即相对缩水)。
问题
TesterStatistics( )返回所有未结订单的最小余额值。
问题
我如何使用语言结构使TesterStatistics()只 返回在某个特定时间开仓的订单 的最小余额值,例如在16:00。在这一点上,代码中指定的所有订单应同时进行测试。这意味着,TesterStatistics应该只跟踪16:00开出的一个订单的余额动态,在测试结束时,只显示16:00开出的订单的最低余额值。
如果你能在我的代码中插入所需的语言结构,我将非常感激。这将使我能够迅速了解我的问题的解决算法。
以下是我的代码。
大家好!
我已经掌握了双OnTester()和TesterStatistics()。我为我的MT4测试器写了一个简单的代码,每天在10:00、16:00、20:00和01:00开一个订单。在测试结束时,函数TesterStatistics返回最小的余额值(即相对缩减)。
问题
TesterStatistics( )返回所有未结订单的最低余额值。
问题
可以用什么语言结构使TesterStatistics()只 返回在某个特定时间开仓的订单 的最小余额值,例如在16:00。在这一点上,代码中指定的所有订单应同时进行测试。也就是说,TesterStatistics( )应该只跟踪16:00开的一个订单的余额动态,在测试结束时,只返回16:00开的订单的余额最小值。
如果你能在我的代码中插入所需语言,我将非常感激。这将使我能够非常迅速地了解解决我的问题的算法。
以下是我的代码。
它是什么?
这就是它吗?
谢谢你的反馈。谢谢你,我意识到,指定TesterStatistics(); 函数与全局变量 H的声明一起...。是我的错误。我把它修好了。