我将免费编写指标 - 页 19

 
Tango_X:

我用OnTimer()实现了它,但没有任何结果。不幸的是,onTimer()事件没有计算指标,延迟被保存,也许是一个响亮的声明,我做错了什么,请纠正。谢谢!

你所做的不是通过OnTimer()实现的。你只是在那里得到价值(所有的历史,而且是每一秒钟,更不用检查)。总之,我认为你不可能自己去实施它。等待支部作者的答复:)
 
Alexey Kozitsyn:
你所做的不是通过OnTimer()实现的。你只在那里得到价值(所有的历史,以及每一秒,没有任何检查)。一般来说,你不太可能自己实施。等待支部作者的答复:)
是的,谢谢!已经联系了支部的作者,他在那里承诺会提供帮助!我正在等待答复))
 
Tango_X:

我用OnTimer()实现了它,但没有任何结果。不幸的是,onTimer()事件没有计算指标,延迟被保存,也许是一个响亮的声明,我做错了什么,请纠正。谢谢!

//+------------------------------------------------------------------+
//|                                              TestCopyBuffer3.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot MA
#property indicator_label1  "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
bool               AsSeries=true;
int                period=15;
input ENUM_TIMEFRAMES    TimeFrame=PERIOD_CURRENT; //Период графика
ENUM_MA_METHOD     smootMode=MODE_EMA;
ENUM_APPLIED_PRICE price=PRICE_CLOSE;
int                shift=0;
//--- indicator buffers
double                   MABuffer[];
int                      ma_handle;
int to_copy;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
   Print("Параметр AsSeries = ",AsSeries);
   Print("Индикаторный буфер после SetIndexBuffer() является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//--- set short indicator name
   IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//--- set AsSeries (depends on input parameter)
   ArraySetAsSeries(MABuffer,AsSeries);
   Print("Индикаторный буфер после ArraySetAsSeries(MABuffer,true); является таймсерией = ",
         ArrayGetAsSeries(MABuffer));
//---
   ma_handle=iMA(Symbol(),TimeFrame,period,shift,smootMode,price);
   EventSetTimer(1);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//--- check if all data calculated
   if(BarsCalculated(ma_handle)<rates_total) return(0);
//--- we can copy not all data
   //int to_copy;
   if(prev_calculated>rates_total || prev_calculated<=0) to_copy=rates_total;
   else
     {
      to_copy=rates_total-prev_calculated;
      //--- last value is always copied
      to_copy++;
     }
//--- try to copy
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   CopyBuffer(ma_handle,0,0,to_copy,MABuffer);
   Print("Таймер");
  }
//+------------------------------------------------------------------+
我想我的意思是OnCalculate 中的所有内容移到OnTimer 中去。
 
Yurij Izyumov:
我想这意味着把OnCalculate 中的所有内容都移到OnTimer 中去。
如果它有效,为什么不呢!?
 
这里 提出了一个解决方案,但由于我是一个程序员新手,这对我来说是相当困难的,这就是为什么我在这个主题中寻求帮助。
 
Yurij Izyumov:

为了重写它,所有要包括的指标也必须在mql5之下

重写的情况如何?代码是不是太复杂了?
 
下午好。我在Delta_RSI指标上,它一直同时在两个方向上绘制(见截图)histo(寻找错误)。而且可以对零点以上/零点以下的零点信号进行不同的着色。你能看到(正确)吗?谢谢你。
 
Igor371:
下午。我在Delta_RSI指标上,我让它不断地绘制(见截图)histo两边同时进行(寻找错误)。而且可以对高于/低于零的无信号颜色进行着色。你能看到(正确)吗?谢谢你。

描述你做什么来打破它 ))))

图表、TF、序列等。

 
Yurij Izyumov:

描述你做什么来打破它 ))))

图表、TF、序列等。

没有真正做什么。例如,我在M1上有1000/250的大周期。在某一时刻,讨价还价同时成为零的两边。我不知道具体在什么时候,但我会仔细看看。我在代码中没有任何问题,没有什么需要解决的吗?
 
下午好。我似乎无法抓住指标断裂的时机。它站在那里,一切都很好,但后来它断了。我没有遇到经纪人做任何操作,因为我经常和箭头有同样的事情,(但我把它归结为画指数,和这里的RSI)我将把猫头鹰的注意与截图。
附加的文件:
GBPUSD.mM1.png  32 kb