Frage zum Berater für mehrere Währungen - Seite 7

 
Gut! Ich werde mich jetzt damit befassen. Aber der Tester weiß nicht, mit welchem Instrument der EA verbunden ist.
 

datetime iTime( string symbol, int timeframe, int shift)

Gibt den Zeitwert des geöffneten Balkens aus dem entsprechenden Chart (Symbol, Zeitrahmen) zurück. Im Falle eines Fehlers gibt die Funktion 0 zurück. Für weitere Informationen über den Fehler rufen Sie GetLastError() auf. Für das aktuelle Diagramm befinden sich die Informationen über die Eröffnungszeit jedes Balkens in dem vordefinierten Array Time[]. Parameter: Symbol - Symbolname des Instruments. NULL bedeutet aktuelles Symbol. timeframe - Zeitraum. Kann eine der Perioden des Diagramms sein. 0 bedeutet Periode des aktuellen Charts. shift - Index des Zeitrahmenwertes (Verschiebung relativ zum aktuellen Balken um die angegebene Anzahl von Perioden zurück).

---------------------------------------------------------------------------------------------------------------------

Soweit ich es verstanden habe, sollten Sie zunächst z. B. einstellen:

static int prevtimeEURUSD = 0;

und fügen Sie sie in den Code des gewünschten Paares ein

double TTTTTT=iTime("EURUSD",60,0); 
if(TTTTTT == prevtimeEURUSD) 
       return(0);
   prevtimeEURUSD = TTTTTT
 
rid:

...

Soweit ich das verstanden habe, muss man zum Beispiel erst einmal einstellen:

static int prevtimeEURUSD = 0;

dann in den Code des benötigten Paares einfügen

double TTTTTT=iTime("EURUSD",60,0); 
if(TTTTTT == prevtimeEURUSD) 
       return(0);
   prevtimeEURUSD = TTTTTT

Ja. Sehen Sie sich an, wie es in ProtoType (Rosh) gemacht wird. Ich habe versucht, einen Link einzufügen, aber irgendetwas hat nicht geklappt (finden Sie es durch Suchen in CodeBase). Die Funktion isNewBar() hat dafür ein zweidimensionales Array - Ordnung ist Macht!
 
Ich danke Ihnen! Ich habe diesen Experten. Ich werde jetzt einen Blick darauf werfen.
 
Lieber Klerk!
Ich möchte einen Indikator für mehrere Währungen erstellen, z. B. für zwei Paare. Zunächst sollten die Kurse dieser Paare in eine Form gebracht werden (z.B. um sie in eine prozentuale Veränderung umzuwandeln, d.h. (Close[i]-Close[i+1])/100% - ist das richtig?), und dann, wenn ich die Dynamik der Differenz zwischen ihnen sehen will, gebe ich sie in den Indikator ein. Wie macht man das?
 

Wenn Sie die Dynamik der Differenz wissen wollen, brauchen Sie sie nicht in einen Prozentsatz umzurechnen, sondern können es so machen:

int start(){
 
 double Point1 = MarketInfo("GBPUSD",MODE_POINT);
 double Point2 = MarketInfo("USDJPY",MODE_POINT);
 
 
 MacdBuffer[0] = iMACD("GBPUSD",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point1
              + iMACD("USDJPY",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point2;
     Comment("MACD "+MacdBuffer[0]);         
 
return(0);
}
 
Vielen Dank, Xeon!!!! Ich werde es ausprobieren!
 
Xeon! Wenn es Ihnen nichts ausmacht, das, was Sie brauchen, von Start.... oben drauf zu legen. Denn ich bin immer noch ein Dummkopf!!!
 
nido:
Xeon! Wenn Sie nicht hart sind, lassen Sie das, was Sie brauchen, von oben auf den Start fallen... Weil ich immer noch ein Dummkopf bin!!!


Eigentlich wurde dies in ein paar Minuten in einem Testskript geschrieben (um Codeblöcke zu testen)

Ich musste einen Indikator für Sie entwerfen :-)

//+------------------------------------------------------------------+
//|                                                    MultyMACD.mq4 |
//|                                           Copyright © 2007, xeon |
//|                                                       xeon@nm.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, xeon"
#property link      "xeon@nm.ru"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1  2
//---- buffers
double MacdBuffer[];
double SignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,MacdBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
   IndicatorShortName("MultyMACD");
     
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
 
   if(IsOptimization()==true || IsTesting()==true){Comment("В тестере будет ошибка деления на 0. описано - в справке по MarketInfo");return(0);}
//----
 double Point1 = MarketInfo("GBPUSD",MODE_POINT);
 double Point2 = MarketInfo("USDJPY",MODE_POINT);
 
 
 MacdBuffer[0] = iMACD("GBPUSD",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point1
              + iMACD("USDJPY",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point2;
 
 for(int i=9;i>=0;i--){
     SignalBuffer[0]=iMAOnArray(MacdBuffer,0,9,0,MODE_SMA,i);
 }
  
//----
   return(0);
  }
//+------------------------------------------------------------------+

Ich hoffe, Sie werden es herausfinden

p.s. Denken Sie daran, dass dieser Indikator nur online funktioniert, auf der Geschichte müssen Sie eine Schleife erstellen

 
xeon:
nido:
Xeon! Wenn Sie nicht hart sind, lassen Sie das, was Sie brauchen, von oben auf den Start fallen... Weil ich immer noch ein Dummkopf bin!!!


Eigentlich wurde dies in ein paar Minuten in einem Testskript geschrieben (um Codeblöcke zu testen)

Ich musste einen Indikator für Sie entwerfen :-)

//+------------------------------------------------------------------+
//|                                                    MultyMACD.mq4 |
//|                                           Copyright © 2007, xeon |
//|                                                       xeon@nm.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, xeon"
#property link      "xeon@nm.ru"
 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property indicator_width1  2
//---- buffers
double MacdBuffer[];
double SignalBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   IndicatorBuffers(2);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,MacdBuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,SignalBuffer);
   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   SetIndexLabel(0,"MACD");
   SetIndexLabel(1,"Signal");
   IndicatorShortName("MultyMACD");
     
 
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
 
   if(IsOptimization()==true || IsTesting()==true){Comment("В тестере будет ошибка деления на 0. описано - в справке по MarketInfo");return(0);}
//----
 double Point1 = MarketInfo("GBPUSD",MODE_POINT);
 double Point2 = MarketInfo("USDJPY",MODE_POINT);
 
 
 MacdBuffer[0] = iMACD("GBPUSD",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point1
              + iMACD("USDJPY",0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)/Point2;
 
 for(int i=9;i>=0;i--){
     SignalBuffer[0]=iMAOnArray(MacdBuffer,0,9,0,MODE_SMA,i);
 }
  
//----
   return(0);
  }
//+------------------------------------------------------------------+

Ich hoffe, Sie werden es herausfinden

p.s. Denken Sie daran, dass dieser Indikator nur online funktionieren wird, auf der Geschichte müssen Sie eine Schleife erstellen

DANKESCHÖN, Xeon!!! Darf ich Ihnen eine private Nachricht bezüglich der Idee eines EAs schreiben? Meine E-Mail: ni_do@mail.ru
Grund der Beschwerde: