Multicurrency - Multitime Berater - Seite 5

 
Vladimir Karputov:

Ah, da ist sie ja :)

Dann verabschiede ich mich höflich.

Wenn es das ist, was nötig ist, um meine Frage zu lösen, bin ich bereit zu schreiben, was Sie vorschlagen! Ich verstehe nur nicht, warum das nötig ist, können Sie mir das erklären?

 
Vladimir Karputov:

Ah, da ist sie ja :)

Dann verabschiede ich mich höflich.


//+------------------------------------------------------------------+
//|                                                      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 Währungspaare - 19 Perioden auf jedem Tick Indikatorwerte ablesen - was nun?)

 
Tango_X:
Wer kennt vielleicht einen anderen Weg, um ein Signal vom Indikator aus allen Perioden und mehreren Währungspaaren in EXPERT zu erhalten?

Wenn möglich, übertragen Sie den Code des Indikators in eine Funktion (oder mehrere Funktionen) und installieren Sie diese in den EA. Ich denke, es wird alles viel klarer werden.

 
Реter Konow:

Wenn möglich, übertragen Sie den Code des Indikators in eine Funktion (oder mehrere Funktionen) und installieren Sie diese in den EA. Ich denke, das wird sehr viel mehr Sinn machen.

Dies ist möglicherweise nicht notwendig.

Wenn ich richtig verstehe, erhält der EA ein Signal bei einem neuen Balken?

 
Fast528:

dunklen Wald dieses OnChartEvent, vergaß es wie ein schlechter Traum, Anatoly Kazarsky Autor von 648 kämpfte auch mit ihm) gibt es lange Themen, multisymbol + multitimeframe bei starken Bewegungen ich denke, der Chart wird aufstehen, im Gegensatz zu OnTick dieses Ding speichert die Warteschlange

Ich verstehe nicht, was daran so düster sein soll. Es ist eine recht einfache Funktion. Vielleicht wird es nicht wie vorgesehen verwendet?

 
Tango_X:

Das Problem ist, dass mein Indikator kein Signal bei einem neuen Balken gibt, sondern bei einem TICK-Ereignis - was soll ich tun?

Ein neues Bar-Ereignis ist immer ein Tick-Ereignis. Übrigens: In MT erscheinen neue Balken zu jeder Sekunde der Minute, nicht zu deren Beginn. Es kann also jeden Moment ein neuer Balken erscheinen. Wenn es viele Symbole gibt, werden neue Balkenereignisse asynchron eintreffen.

zy. Ich versuche, Ihr Problem zu verstehen.
 
Реter Konow:

Ein neues Bar-Ereignis ist immer ein Tick-Ereignis. Übrigens: In MT treten neue Takte in jeder Sekunde der Minute auf, nicht am Anfang der Minute. Folglich erscheint jeden Moment ein neuer Balken. Wenn es viele Symbole gibt, werden neue Balkenereignisse asynchron eintreffen.

Dies ist näher an meinem Problem)

 
Tango_X:

Das ist näher an meinem Problem.)

Ich glaube, ich kann Ihnen helfen, aber ich habe mich noch nicht mit dem Thema beschäftigt. Mit Indikatoren und Expert Advisors habe ich schon lange nichts mehr zu tun. Aber ich möchte mich erinnern.

 
Реter Konow:

Ich habe das Gefühl, dass ich Ihnen helfen kann, aber ich habe mich noch nicht "eingearbeitet". Ich habe mich schon lange nicht mehr mit Indikatoren und Beratern beschäftigt. Aber ich möchte mich erinnern.

Ich habe alles im Detail in Beitrag #19 beschrieben, es ist schwer in Worten zu erklären)

 
Реter Konow:

Ich habe das Gefühl, dass ich Ihnen helfen kann, aber ich habe mich noch nicht "eingearbeitet". Ich habe mich schon lange nicht mehr mit Indikatoren und Beratern beschäftigt. Aber ich möchte mich erinnern.

Der Trick besteht darin, dass das onchartivent aus einer Warteschlange von Ereignissen besteht, so dass ein neuer Balken bei starken Bewegungen mit den Indikatordaten des vorherigen Balkens eintrifft