Conseiller en multidevise - multitime - page 5

 
Vladimir Karputov:

Ah, le voilà :)

Puis je prends poliment congé.

Si c'est ce qu'il faut pour résoudre ma question, je suis prêt à écrire ce que vous suggérez ! Je ne comprends pas pourquoi c'est nécessaire, pouvez-vous me le dire ?

 
Vladimir Karputov:

Ah, le voilà :)

Puis je prends poliment congé.


//+------------------------------------------------------------------+
//|                                                      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 paires de devises - 19 périodes sur chaque tick lire les valeurs de l'indicateur - et après ?)

 
Tango_X:
Peut-être que quelqu'un connaît une autre façon d'obtenir un signal de l'indicateur pour toutes les périodes et plusieurs paires de devises dans EXPERT ?

Si possible, transférez le code de l'indicateur dans une fonction (ou plusieurs fonctions) et installez-le dans l'EA. Je pense que tout deviendra beaucoup plus clair.

 
Реter Konow:

Si possible, transférez le code de l'indicateur dans une fonction (ou plusieurs fonctions) et installez-le dans l'EA. Je pense que cela aura beaucoup plus de sens.

Cela peut ne pas être nécessaire.

Si je comprends bien, l'EA reçoit-il un signal sur une nouvelle barre?

 
Fast528:

forêt sombre ce OnChartEvent, oublié comme un mauvais rêve, Anatoly Kazarsky auteur de 648 a également combattu avec elle) il ya de longs sujets, multisymboles + multitimeframe à de forts mouvements, je pense que le graphique se tiendra, contrairement à OnTick cette chose sauve la file d'attente

Je ne comprends pas ce qu'il y a de si sombre. Il s'agit d'une fonction assez simple. Peut-être n'est-il pas utilisé comme prévu ?

 
Tango_X:

Le problème est que mon indicateur ne donne pas de signal à une nouvelle barre mais à un événement TICK - que dois-je faire ?

Un événement de nouvelle barre est toujours un événement de type tick. D'ailleurs, en MT, les nouvelles barres apparaissent à n'importe quelle seconde de la minute, et non au début de celle-ci. Ainsi, une nouvelle barre apparaît à tout moment. S'il y a beaucoup de symboles, les nouveaux événements de barre arriveront de manière asynchrone.

zy. J'essaie de comprendre votre problème.
 
Реter Konow:

Un événement de nouvelle barre est toujours un événement de type tick. À propos, dans MT, les nouvelles barres se produisent à n'importe quelle seconde de la minute, et non au début de la minute. Par conséquent, une nouvelle barre apparaît à tout moment. S'il y a beaucoup de symboles, les nouveaux événements de barre arriveront de manière asynchrone.

Ceci est plus proche de mon problème)

 
Tango_X:

Ceci est plus proche de mon problème).

Je sens que je peux vous aider, mais je n'ai pas encore abordé le sujet. Il y a longtemps que je ne m'occupe plus d'indicateurs et d'Expert Advisors. Mais je veux me souvenir.

 
Реter Konow:

Je sens que je peux vous aider, mais je ne me suis pas encore "lancé". Cela fait longtemps que je n'ai pas traité avec des indicateurs et des conseillers. Mais je veux me souvenir.

J'ai tout décrit en détail dans le post #19, c'est difficile à expliquer en mots).

 
Реter Konow:

Je sens que je peux vous aider, mais je ne me suis pas encore "lancé". Cela fait longtemps que je n'ai pas traité avec des indicateurs et des conseillers. Mais je veux me souvenir.

L'astuce est que le onchartivent consiste en une file d'attente d'événements, de sorte qu'une nouvelle barre sur des mouvements forts arrive avec les données de l'indicateur de la barre précédente.