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

 
LookingFor:
   for(bars=start; bars<rates_total; bars++)



同事们,请帮助我

我不明白这个循环有什么问题,来自手柄的数据没有进入数组psa1。


在OnInit()中做如下工作。

  ArraySetAsSeries(pca1,true);

之后,相应地改变你的循环。

   for(bars=start; bars<rates_total; bars++)

考虑到现在你的指标的最右边的柱子的索引是 "0"。

 

如何通过按任意键或特定键来终止一个脚本?

 
弗拉基米尔,谢谢你,在不改变索引的 情况下,你是否没有办法?
 
LookingFor:
弗拉基米尔,谢谢你,你不能在不改变索引的 情况下做任何事情吗?

如果你不想做什么,那么就开始用历史数据进行调试测试。一步一步来。请看复制到哪里的数据。

 
LookingFor:

同事们,请帮助我

我不明白这个循环有什么问题,来自手柄的数据没有进入数组psa1。


LookingFor:
Vladimir,谢谢你,但你不改变索引 就不能做什么?

首先,你需要使代码具有可读性(Styler - 使用源代码 - 程序开发 - MetaEditor)

//+------------------------------------------------------------------+ 
//| Custom indicator iteration function                              | 
//+------------------------------------------------------------------+ 
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[])
  {
   if(prev_calculated==0)
     {
      i=bars=start=1;
     }
   else
     {
      start=prev_calculated;
     }
   for(bars=start; bars<rates_total; bars++)
     {
      CopyBuffer(pulse_Handle,0,start,1,pca1);

      if(pca1[bars]!=pca1[bars-1])
        {
         pca2[i]=pca1[bars]; i++;
         string s="";
         s=IntegerToString(pca1[bars])+"  ";
         Print(s); continue;
        }
      else
         continue;
     }
//--- return value of prev_calculated for next call 
   return(rates_total);
  }

你必须同时检查 - 但CopyBuffer函数返回的是什么?请参考CopyBuffer

返回的值

复制的数组元素的数量,如果出错则为-1。

此外,我们设置断点并对历史数据进行调试

在历史数据上运行调试

并控制一些变量。

time[rates_total-1]
time[0]
bars
pca1[???]

df

Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Данная функция предназначена для оформления исходного кода в соответствии с рекомендуемым стандартом. Это позволяет сделать код более читаемым...
 

帮助转化为A

double GetExtremumZZPrice(string symb="0",ENUM_TIMEFRAMES tf=0,int ne=0,int dp=12,int dv=5,int bs=3) {
 if(symb=="0") symb=Symbol();
  double zz;
  int ke=0;
   for(int i=0; i<Bars(symb, tf)-1; i++) {
    zz=iCustom(symb, tf, "ZigZag", dp, dv, bs, 0, i);
    if(zz!=0) {
      ke++;
      if(ke>ne) return(zz);
  }}
  return(0);
 }
 
Vitaly Muzichenko:

帮助转化为A

读取指标缓冲区,并在生成的数组中寻找ZZ。

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

帮助转化为A

首先得到指示器手柄!然后使用CopyBuffer 得到一个所需值的数组,然后循环浏览它们。
 

谢谢大家!

另一个问题:我翻遍了论坛和kodobase,我找不到任何关于 "Trend.mqh "的应用,它似乎都在那里。如果有一个应用程序的链接,请发到这里,或者通过代码给我一个例子。

我已经发现许多 使用Rsi、Ma、Adh和其他EA的EA,但没有一个使用SB。它是如此糟糕,还是我没有找到代码,谁在使用它?


我需要:有一个代码,在其中我得到了几个时间框架的MA

_ma1 = iMA(Symbol,PERIOD_M15,MAFast,0,MAMethod,MAPrice,i)
_ma2 = iMA(Symbol,PERIOD_M30,MAFast,0,MAMethod,MAPrice,i)
_ma3 = iMA(Symbol,PERIOD_H1, MAFast,0,MAMethod,MAPrice,i)

不在OnInit的mql5中创建几十个手柄,希望SB能解决我的问题。

 
Vitaly Muzichenko:

谢谢大家!

另一个问题:我翻遍了论坛和kodobase,我找不到任何关于 "Trend.mqh "的应用,它似乎都在那里。如果有一个应用程序的链接,请发到这里,或者通过代码给我一个例子。

我已经发现许多使用Rsi、Ma、Adh和其他EA的EA,但没有一个使用SB。它真的那么糟糕吗?还是我没有找到代码,谁在使用它?


我需要:有一个代码,在其中我得到了几个时间框架的MA

在OnInit中不要在mql5中创建几十个手柄,我希望SB能解决我的问题。


我必须创建所有的手柄或 "Trend.mqh::CiMA "类的对象