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

 
Nikita Bushuev:

Vladimir,我也是用MQL5向导生成的代码。我试过你的EA,当我在GBPUSD货币上运行时,它也不对我起作用。

日志显示如下。

阅读日志中的内容。有一个关于你的错误的描述。(如果是测试员,有一个日志,如果是终端,有两个日志)。


还要说明:你在什么符号和什么时间范围内开始。今天,心灵感应者们都在休假,没有人可以读懂你的心。

 
Vladimir Karputov:

阅读记录本上的内容。有一个关于你的错误的描述。(如果是测试器--有一条日志,如果是终端--有两条日志)。

测试员在创建一个指标句柄时在这个地方崩溃,即它=INVALID_HANDLE。在符号变量"EURUSD "中,周期也被设定。怎么会这样,错误4804是什么意思?

错误指示器不能应用

4804

指标不能应用于另一指标

m_handle=iAC(symbol,period);
bool CiAC::Create(const string symbol,const ENUM_TIMEFRAMES period)
  {
//--- check history
   if(!SetSymbolPeriod(symbol,period))
      return(false);
//--- create
   m_handle=iAC(symbol,period);
//--- check result
   if(m_handle==INVALID_HANDLE)
      return(false);
//--- idicator successfully created
   if(!Initialize(symbol,period))
     {
      //--- initialization failed
      IndicatorRelease(m_handle);
      m_handle=INVALID_HANDLE;
      return(false);
     }
//--- ok
   return(true);
  }
Документация по MQL5: Предопределенные переменные / _Symbol
Документация по MQL5: Предопределенные переменные / _Symbol
  • www.mql5.com
Предопределенные переменные / _Symbol - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Nikita Bushuev:

测试员在创建一个指标句柄时在此崩溃,即它=INVALID_HANDLE。在符号变量"EURUSD "中,周期也被设定。怎么会这样,错误4804是什么意思?

错误指示器不能应用

4804

该指标不能应用于另一指标

阅读日志--其中有关于你的错误的描述。你越早读,你就越早明白。

还要说明:你要在哪个符号和哪个时间框架上启动。心灵感应者今天放假了,没有人可以读心。
 
Vladimir Karputov:

阅读该杂志--其中有关于你的错误的描述。你越早读,你就越早明白。

还要说明:你是在哪个符号和哪个时间框架上推出的。今天心灵感应者们都在休假,没有人可以读懂你的心思

通过重新安装平台,问题得到了解决。

 
Vladimir Pastushak:

尊敬的开发者,市场上的产品不能被验证

所附代码

CopyRates导致挂起,导致市场写入

对欧元兑美元的测试,H1(净值)。

测试员花费的时间太长了

未找到策略测试员报告

而验证人已经正确地通过了截止日期。你可能没有想太多,当你想为终端的所有符号在每个TICK上要求1440个元素?你甚至没有想过:服务器可以轻松地有五千多个符号,一个符号可以有1440个条子。


总而言之,这是一个适合新手的话题。绝对的。

 
你好,请你告诉我为什么图表无法加载?14.08在MT5交易平台上注册,7个图表中的4个仍在挂着等待更新。虽然在之前注册的模拟账户上,所有的图表都会及时更新。
 
Vladimir Karputov:

例子

结果。


谢谢你,弗拉基米尔。我完全理解你的例子背后的逻辑。你相信吗?

 
Сергей Таболин:

谢谢你,弗拉基米尔。我完全理解你的例子背后的逻辑。你相信吗?

我不是弗拉基米尔,但我要问你:什么是不工作?一切都早已不复存在,我也没心情去找你的例子。请再重复一遍。

 
Artyom Trishkin:

我不是弗拉基米尔,但我要问:什么是不成功的?它早已不复存在,而我也不想寻找你的例子。请再重复一遍。

这是我的例子。

//+------------------------------------------------------------------+
//|                                                        cTest.mq5 |
//|                                     Copyright 2020, Tabolin S.N. |
//|                           https://www.mql5.com/ru/users/vip.avos |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, Tabolin S.N."
#property link      "https://www.mql5.com/ru/users/vip.avos"
#property version   "1.00"
//#property indicator_separate_window
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot bars
#property indicator_label1  "bars"
#property indicator_type1   DRAW_CANDLES
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- indicator buffers
double   barsBuffer1[];
double   barsBuffer2[];
double   barsBuffer3[];
double   barsBuffer4[];
//+------------------------------------------------------------------+
double   newCandles_Open[5]   = {106.785, 106.724, 106.760, 106.767, 106.769};
double   newCandles_High[5]   = {106.792, 106.765, 106.780, 106.781, 106.769};
double   newCandles_Low[5]    = {106.716, 106.719, 106.746, 106.758, 106.715};
double   newCandles_Close[5]  = {106.724, 106.760, 106.766, 106.769, 106.725};

int      tick_count           = 0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
   SetIndexBuffer(0, barsBuffer1, INDICATOR_DATA);
   SetIndexBuffer(1, barsBuffer2, INDICATOR_DATA);
   SetIndexBuffer(2, barsBuffer3, INDICATOR_DATA);
   SetIndexBuffer(3, barsBuffer4, INDICATOR_DATA);
   
   ArraySetAsSeries(barsBuffer1  ,true);
   ArraySetAsSeries(barsBuffer2  ,true);
   ArraySetAsSeries(barsBuffer3  ,true);
   ArraySetAsSeries(barsBuffer4  ,true);
   
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);
   PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0);
   
   ArrayInitialize(barsBuffer1   ,0);
   ArrayInitialize(barsBuffer2   ,0);
   ArrayInitialize(barsBuffer3   ,0);
   ArrayInitialize(barsBuffer4   ,0);
//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int  OnCalculate(
   const int        rates_total,       // размер входных таймсерий
   const int        prev_calculated,   // количество обработанных баров на предыдущем вызове
   const datetime&  time[],            // массив Time
   const double&    open[],            // массив Open
   const double&    high[],            // массив High
   const double&    low[],             // массив Low
   const double&    close[],           // массив Close
   const long&      tick_volume[],     // массив Tick Volume
   const long&      volume[],          // массив Real Volume
   const int&       spread[]           // массив Spread
   )
{
   if(rates_total - prev_calculated > 1)
   {
      if(prev_calculated == 0)
      {
         Print("~~~~ Предварительный расчёт индикатора.");
         for(int i = 0; i < 5; i++)
         {
            barsBuffer1[0] = newCandles_Open[i];
            barsBuffer2[0] = newCandles_High[i];
            barsBuffer3[0] = newCandles_Low[i];
            barsBuffer4[0] = newCandles_Close[i];
         }
         Print("~~~~ Предварительный расчёт индикатора закончен.");
      }
      else return(0);
   }
   else Print("tick_count = ",++tick_count);
//--- return value of prev_calculated for next call
   return(rates_total);
}
//+------------------------------------------------------------------+
如果我把barBuffer1[0]改为barBuffer1[i],它就被画出来了。但是,我怎样才能添加一个新的蜡烛 呢?
 
Сергей Таболин:

这是我的例子。

如果我把barBuffer1[0]改为barBuffer1[i],它就被画出来了。但随后如何添加新的蜡烛

并非所有的数组都有相同的焦点。