多币种--多方位顾问 - 页 5

 
Vladimir Karputov:

啊,这就是了 :)

然后我礼貌地告辞。

如果这就是解决我的问题的方法,我愿意写下你的建议!我只是不明白为什么需要它,你能告诉我吗?

 
Vladimir Karputov:

啊,这就是了 :)

然后我礼貌地告辞。


//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright   "Copyright 2013"
#property link        "http://"
#property description "email:"
#property version     "1.0"
//--- Количество торгуемых символов
#define  NUMBER_OF_SYMBOLS 5
//--- Количество периодов торгуемых символов
#define  NUMBER_OF_PERIODS 19
//--- Имя эксперта
#define  EXPERT_NAME MQL5InfoString(MQL5_PROGRAM_NAME)
//--- Массивы для хранения внешних параметров
string          Symbols[NUMBER_OF_SYMBOLS]={"EURUSD.m","USDCHF.m","GBPUSD.m","NZDUSD.m","AUDUSD.m"};// Символ
ENUM_TIMEFRAMES Periods[NUMBER_OF_PERIODS]=
  {
   PERIOD_M1,PERIOD_M2,PERIOD_M3,PERIOD_M4,PERIOD_M5,
   PERIOD_M6,PERIOD_M10,PERIOD_M12,PERIOD_M15,PERIOD_M20,
   PERIOD_M30,PERIOD_H1,PERIOD_H2,PERIOD_H3,PERIOD_H4,
   PERIOD_H6,PERIOD_H8,PERIOD_H12,PERIOD_D1
  };
//--- Массив хэндлов сигнальных индикаторов
int signal_indicator_handles[NUMBER_OF_SYMBOLS][NUMBER_OF_PERIODS];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- Получим хэндлы индикаторов
   Print("Загрузка хендлов ......");
   for(int s=0; s<NUMBER_OF_SYMBOLS; s++)
      for(int p=0; p<NUMBER_OF_PERIODS; p++)
        {
         //--- Получим хэндл индикатора
         signal_indicator_handles[s][p]=iCustom(Symbols[s],Periods[p],"adxcrossing");
         //--- Если не удалось получить хендл индикатора
         if(signal_indicator_handles[s][p]==INVALID_HANDLE)
            Print("Не удалось получить хэндл индикатора для символа "+Symbols[s]+"!");
        }
   Print("Загрузка окончена!!!");
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- При удалении с графика
   if(reason==REASON_REMOVE)
     {
      for(int s=0;s<NUMBER_OF_SYMBOLS;s++)
         for(int p=0;p<NUMBER_OF_PERIODS;p++)
            IndicatorRelease(signal_indicator_handles[s][p]);

     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ind_buy[1],ind_sell[];
   datetime t[1];
   for(int s=0;s<NUMBER_OF_SYMBOLS;s++)
      for(int p=0;p<NUMBER_OF_PERIODS;p++)
        {
         CopyTime(Symbols[s],Periods[p],0,1,t);
         //--- Получим значения индикатора
         if(CopyBuffer(signal_indicator_handles[s][p],0,0,1,ind_sell)<1 || CopyBuffer(signal_indicator_handles[s][p],1,0,1,ind_buy)<1)
           {
            Print("Не удалось скопировать значения ");
            return;
           }
         if(ind_buy[0]!=0 && Periods[p]==PERIOD_M1) Print(Symbols[s]," ",Periods[p]," ",ind_buy[0]," ",t[0]);
         if(ind_sell[0]!=0 && Periods[p]==PERIOD_M1) Print(Symbols[s]," ",Periods[p]," ",ind_sell[0]," ",t[0]);
        }
  }


5个货币对--每个刻度 上有19个周期,读取指标值--下一步是什么?)

 
Tango_X:
也许谁知道另一种方法,从EXPERT的所有时期和几个货币对的指标中获得信号?

如果可能的话,将指标代码转移到一个函数(或几个函数)中并将其安装在EA中。我想一切都会变得更加清晰。

 
Реter Konow:

如果可能的话,将指标代码转移到一个函数(或几个函数)中并将其安装在EA中。我认为这将会有更大的意义。

这可能没有必要。

如果我理解正确的话,EA是否在一个新的条形图 上得到一个信号?

 
Fast528:

黑森林这个OnChartEvent,像做恶梦一样忘记了, 648的作者Anatoly Kazarsky也和它打过交道)有很长的主题,多符号+多时间框架的强势运动,我认为图表会站起来,不像OnTick这个东西可以保存队列。

我不明白这有什么好黑的。这是一个相当简单的功能。也许它没有按预期使用?

 
Tango_X:

问题是,我的指标不是在一个新的条形图上发出信号,而是在一个TICK事件上发出信号--我应该怎么做?

一个新的酒吧 事件总是一个嘀嗒事件。顺便说一下,在MT中,新的条形图出现在一分钟的任何一秒,而不是在它的开始。因此,在任何时候都会出现一个新的酒吧。如果有很多符号,新的酒吧事件会异步到达。

zy。试图理解你的问题。
 
Реter Konow:

一个新的酒吧 事件总是一个嘀嗒事件。顺便说一下,在MT中,新的小节是在一分钟的任何一秒发生的,而不是在一分钟的开始。因此,在任何时候都会出现一个新的酒吧。如果有很多符号,新的酒吧事件会异步到达。

这与我的问题比较接近)

 
Tango_X:

这更接近于我的问题)。

我觉得我可以帮助你,但我还没有进入这个话题。我已经很久没有处理指标和专家顾问了。但我想记住。

 
Реter Konow:

我觉得我可以帮助你,但我还没有 "进入 "它。我已经很久没有与指标和顾问打交道了。但我想记住。

我在第19号帖子中已经详细描述了一切,很难用语言来解释)

 
Реter Konow:

我觉得我可以帮助你,但我还没有 "进入 "它。我已经很久没有与指标和顾问打交道了。但我想记住。

诀窍在于,onchartivent由一个事件队列组成,因此,一个新的 强势移动的条形图 会带着前一个条形图的指标数据到达。