マルチカレンシーアドバイザーに関する質問 - ページ 7

 
よし!これから調べてみます。しかし、テスターはそのEAがどのような機器に取り付けられているのかを知りません。
 

datetimeiTime( 文字列 symbol, int timeframe, int shift)

対応するチャート(シンボル、タイムフレーム)から開かれたバーの時間値を返します。エラーの場合、この関数は0を返します。エラーの詳細については、GetLastError()を呼び出してください。現在のチャートでは、各バーのオープン時間に関する情報は、定義済みの配列Time[]に配置されています。パラメータ: symbol - 測定器のシンボル名。NULLは現在のシンボルを意味する。 timeframe - 期間。チャートの期間のいずれかを指定することができます。0は、現在のチャートの期間を意味する。 shift - タイムフレーム値のインデックス(現在のバーから指定された期間分、相対的にシフトする)。

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

私が理解する限りでは、まず、例えば、次のように設定します。

static int prevtimeEURUSD = 0;

を作成し、それを必要なペアのコードに挿入します。

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

...

私が理解している限りでは、例えば最初に設定する必要があります。

static int prevtimeEURUSD = 0;

で、それを必要なペアのコードに挿入します。

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

はい、ProtoType(ロッシュ)でその方法をご覧ください。リンクを挿入しようとしたが、何かうまくいかなかった(CodeBaseで検索してください)。isNewBar()関数は、このために2次元の配列を持っています。
 
ありがとうございました。この専門家がいる。これから見てみますね。
 
クラーク様!
2通貨ペアなど、多通貨のインジケータを 作りたいのですが、どうすればいいですか?まず、これらのペアの気配値を一つの形にし(例えば、変化率に変換する、つまり(Close[i]-Close[i+1])/100%-でいいのか)、その差のダイナミクスを見たいのであれば、インジケータに導入すればいいのです。どうすればいいのか?
 

差の力学が欲しい場合は、パーセンテージに変換する必要はなく、このようにすることができます。

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);
}
 
キセノンさん、本当にありがとうございました!!!!試してみます!
 
Xeon!最初から必要なものを上に落としてもいいのなら...。だって、まだダミーなんだもん!!!!
 
nido:
Xeon!ハードでなければ、スタートの上から必要なものを落として...。だって、まだダミーなんだもん!!!!


実はこれ、テストスクリプト(コードのブロックをテストするためのもの)で2、3分で書いたものです。

あなたのためにインジケータを描かなければならなかった :-)

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

ぜひとも解明してほしい

p.s. このインジケータはオンラインでしか動作しないことに留意してください、履歴上ではループを作成する必要があります。

 
xeon:
nido:
Xeon!ハードでなければ、スタートの上から必要なものを落として...。だって、まだダミーなんだもん!!!!


実はこれ、テストスクリプト(コードのブロックをテストするためのもの)で2、3分で書いたものです。

あなたのためにインジケータを描かなければならなかった :-)

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

ぜひとも解明してほしい

p.s. このインジケータはオンラインでしか動作しないことに留意してください。

THANK YOU, Xeon!!!!EAのアイデアについて、プライベートメッセージを書いてもいいですか? 私のE-mail: ni_do@mail.ru