Domanda sul consulente multivaluta - pagina 7

 
Ok! Adesso ci darò un'occhiata. Ma il tester non sa a quale strumento è collegato l'EA.
 

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

Restituisce il valore temporale della barra aperta dal grafico corrispondente (simbolo, timeframe). In caso di errore la funzione restituisce 0. Per maggiori informazioni sull'errore chiamate GetLastError(). Per il grafico corrente, le informazioni sul tempo di apertura di ogni barra si trovano nell'array predefinito Time[]. Parametri: simbolo - nome del simbolo dello strumento. NULL significa simbolo corrente. timeframe - Periodo. Può essere uno dei periodi del grafico. 0 significa periodo del grafico corrente. shift - Indice del valore del timeframe (spostamento relativo alla barra corrente del numero specificato di periodi indietro).

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

Per quanto ho capito, si dovrebbe prima impostare, per esempio:

static int prevtimeEURUSD = 0;

poi inserirlo nel codice della coppia necessaria

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

...

Per quanto ho capito, bisogna prima impostare, per esempio, la

static int prevtimeEURUSD = 0;

poi inserirlo nel codice della coppia di cui abbiamo bisogno

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

Sì. Vedi come si fa in ProtoType (Rosh). Ho provato a inserire un link, qualcosa non è andato a buon fine (lo trovate cercando in CodeBase). La funzione isNewBar() ha un array bidimensionale per questo - l'ordine è una grande potenza!
 
Grazie! Ho questo esperto. Ora gli darò un'occhiata.
 
Caro Klerk!
Voglio fare un indicatore multi-valuta, per esempio due coppie. In primo luogo, le quotazioni di queste coppie dovrebbero essere portate in una forma (per esempio, per convertirle in cambiamento percentuale, cioè (Close[i]-Close[i+1])/100% - è giusto?), e poi, se voglio vedere la dinamica della differenza tra loro, inserirle nell'indicatore. Come si fa?
 

Se volete la dinamica della differenza, non avete bisogno di convertirla in percentuale, potete farlo così:

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);
}
 
Grazie mille, Xeon!!!! Farò un tentativo!
 
Xeon! Se non ti dispiace far cadere quello che ti serve sopra da start.... Perché sono ancora un idiota!!!
 
nido:
Xeon! Se non sei duro, lascia cadere quello che ti serve dall'alto della partenza... Perché sono ancora uno scemo!!!


In realtà questo è stato scritto in un paio di minuti in uno script di prova (per testare blocchi di codice)

Ho dovuto abbozzare un indicatore per voi :-)

//+------------------------------------------------------------------+
//|                                                    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);
  }
//+------------------------------------------------------------------+

Spero che lo capirete

p.s. tenete presente che questo indicatore funzionerà solo online, sulla storia dovrete creare un ciclo

 
xeon:
nido:
Xeon! Se non siete duri, lasciate cadere quello che vi serve dalla cima della partenza... Perché sono ancora uno scemo!!!


In realtà questo è stato scritto in un paio di minuti in uno script di prova (per testare blocchi di codice)

Ho dovuto abbozzare un indicatore per voi :-)

//+------------------------------------------------------------------+
//|                                                    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);
  }
//+------------------------------------------------------------------+

Spero che lo capirete

p.s. tenete presente che questo indicatore funzionerà solo online, sulla storia dovrete creare un ciclo

GRAZIE, Xeon!!! Posso scriverti un messaggio privato riguardo all'idea di un EA? La mia e-mail: ni_do@mail.ru