Asesor multidivisa - multitiempo - página 5

 
Vladimir Karputov:

Ah, ahí está :)

Entonces me despido cortésmente.

Si eso es lo que hace falta para resolver mi pregunta, ¡estoy dispuesto a escribir lo que sugieres! No entiendo por qué es necesario, ¿me lo pueden decir?

 
Vladimir Karputov:

Ah, ahí está :)

Entonces me despido cortésmente.


//+------------------------------------------------------------------+
//|                                                      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 pares de divisas - 19 periodos en cada tic leer los valores de los indicadores - ¿qué sigue?)

 
Tango_X:
¿Quien conoce otra forma de obtener una señal del indicador de todos los periodos y varios pares de divisas en EXPERT?

Si es posible, transfiera el código del indicador a una función (o varias funciones) e instálelo en el EA. Creo que todo se aclarará mucho más.

 
Реter Konow:

Si es posible, transfiera el código del indicador a una función (o varias funciones) e instálelo en el EA. Creo que tendrá mucho más sentido.

Esto puede no ser necesario.

Si entiendo bien, ¿el EA recibe una señal en una nueva barra?

 
Fast528:

bosque oscuro este OnChartEvent, lo olvidó como un mal sueño, Anatoly Kazarsky autor de 648 también luchó con él) hay temas largos, multisymbol + multitimeframe en los movimientos fuertes creo que el gráfico se mantendrá, a diferencia de OnTick esta cosa guarda la cola

No entiendo qué tiene de oscuro. Es una función bastante sencilla. ¿Tal vez no se utiliza como se pretende?

 
Tango_X:

El problema es que mi indicador no está dando una señal en una nueva barra sino en un evento TICK - ¿qué debo hacer?

Un nuevo evento de barra es siempre un evento de tic. Por cierto, en MT aparecen nuevas barras en cualquier segundo del minuto, no al principio del mismo. Por lo tanto, en cualquier momento aparece una nueva barra. Si hay muchos símbolos, los nuevos eventos de barra llegarán de forma asíncrona.

zy. Tratando de entender su problema.
 
Реter Konow:

Un nuevo evento de barra es siempre un evento de tic. Por cierto, en MT las nuevas barras se producen en cualquier segundo del minuto, no al principio del mismo. En consecuencia, en cualquier momento aparece una nueva barra. Si hay muchos símbolos, los nuevos eventos de barra llegarán de forma asíncrona.

Esto se acerca más a mi problema)

 
Tango_X:

Esto se acerca más a mi problema).

Siento que puedo ayudarte, pero aún no he entrado en el tema. Hace tiempo que no me ocupo de los indicadores y de los Asesores Expertos. Pero quiero recordar.

 
Реter Konow:

Siento que puedo ayudarte, pero aún no he "entrado en materia". Hace tiempo que no trato con indicadores y asesores. Pero quiero recordar.

He descrito todo con detalle en el post #19, es difícil de explicar con palabras)

 
Реter Konow:

Siento que puedo ayudarte, pero aún no he "entrado en materia". Hace tiempo que no trato con indicadores y asesores. Pero quiero recordar.

El truco es que el onchartivent consiste en una cola de eventos, por lo que una nueva barra en movimientos fuertes llega con los datos del indicador de la barra anterior