記事"かずかずのインスツルメントで取引を行うExpert Advisorの作成"についてのディスカッション - ページ 2

 
gisip:
MQL4ではタイマーなしですべてうまくいきます。
私たちは多通貨テストについて話しているのです。MT4にはタイマーはありませんが、多通貨テスターもありません。MT4で作業する場合、Expert Advisorはどのような場合でも、それが動作する金融商品の相場の流れの強さに依存します。このような状況を想像してみてください。例えば、EURUSDに 多通貨のExpert Advisorがあるとします。ある一定の時間内にこのペアのティックがなかった場合、他の商品の新しいティックの到着をどのように追跡するのでしょうか?
 
Interesting:

MQL4には存在しないし、構造体やクラスも存在しない。


IMHO

標準ライブラリを使うか使わないかは人それぞれだが(最悪、自分のコードしか使えない)、MT4で使えないからといって、すべての利点を放棄するのはあまり合理的ではない......。

そんなことは書いていない。

私が書いたのは、MQL5は不具合が多く、特定の商品の組み合わせで誤ったデータを生成するということです。

例えば、EURUSDチャートに EURJPYやEURGBPを重ねると、すべてうまくいく。

しかし、EURCADをオーバーレイすると、チャート上のデータがエラーになります。

削除済み  
gisip:

そんなことは書いていない。

私はMQL5が特定の商品の組み合わせで不具合を起こし、誤ったデータを生成すると書きました。

例えば、EURUSDチャートにEURJPYまたはEURGBPを重ねると、すべてが正常です。

しかし、EURCADをオーバーレイすると、チャート上のデータがエラーになります。

私はそれを理解したが、Kos は正しい(特に2010.07.02 14:57からのナイスポスト 。なぜすべての開発者(MQを含む)が タイマーを執拗に無視するのか理解できません。多通貨トレーダーの公式な例がないことを考慮に入れれば、この件に関してはMQですべてクリアなのですが、なぜ他の開発者が執拗にOnTimer()を 無視するのか、個人的には大きな謎のままです...。
 
gisip:

そんなことは書いていない。

私はMQL5が特定の商品の組み合わせで不具合を起こし、誤ったデータを生成すると書きました。

例えば、EURUSDチャートにEURJPYまたはEURGBPを重ねると、すべてが正常です。

しかし、EURCADを重ねると、チャート上のデータがエラーになります。

エラーが発生する例を教えてください。
 
Renat:
エラーの例を教えてください。
まあ、ここにすべてを書くつもりはありません。
//---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
SetIndexBuffer(0,Buffer); // バッファに配列を代入
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// ラインスタイル

while(i >= 0){//-- 右から左へ移動(つまり、最高値からまだ形成されていない0バーまで) --
Buffer[i] = (iHigh(InstrumentName,0,i) +iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- next Bar
}//next (while)



//----------- これでMQL5でもほぼ同じ変形 --------
#property indicator_separate_window // Indic.は別ウィンドウで描画
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int handle1;

copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);

//--ここでEURUSDに投げる。

//--どのインストゥルメントにインジケータを配置しても、チャートは変化しないはずです。
 
コードを 正しく貼り付けて ください。
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
 
Rosh:
コードを正しく挿入してください。

//--------- MQL4でのオプション ---------
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua

extern string InstrumentName = "EURCAD";
double Buffer[];
int init()
{
SetIndexBuffer(0,Buffer); // バッファに配列を割り当てる
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// ラインスタイル
}
int start()
{
while(i >= 0){
Buffer[i] = (iHigh(InstrumentName,0,i) +iClose(InstrumentName,0,i) + iLow(InstrumentName,0,i)) / 3;
i--;//-- next Bar
}//next (while)
}


//----------- これでMQL5でもほぼ同じ変形 --------
#property indicator_separate_window // Indic.は別ウィンドウで描画
#property indicator_buffers 1

#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1Aqua

input string InstrumentName = "EURCAD";
double Buffer[];
int OnInit()
{
{ IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
}

int OnCalculate(.......)
{
copied=CopyClose(InstrumentName,0,0,0,CountBars,Buffer);
}
。 //--今度はEURUSDに投げてみます。

//--どのインストゥルメントにインジケータを配置しても、チャートは変わらないはずです。
削除済み  
ジシップ、"SRC "ボタンでコード挿入を 使うべきだよ。
 

再現可能な例を作ってください。つまり、コンパイルして、チャートに投げて、結果が得られるような、既製のコードが必要なのです。

これがなければ、私たちが話していることを理解する人はほとんどいないでしょう。
 

私は意識を奪われた人々を助けるだろう。

//----------- MQL5でもほぼ同じバリアント --------
#property  indicator_separate_window    // インジケータは別のウィンドウに描画されます。
#property indicator_buffers 1

#property indicator_plots   1
#property indicator_type1   DRAW_LINE
#property indicator_color1  Aqua

input string InstrumentName = "EURCAD";
double Buffer[]; 
int OnInit() 
{
   IndicatorSetString(INDICATOR_SHORTNAME,InstrumentName);
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
return(0);
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime& time[],
                const double& open[],
                const double& high[],
                const double& low[],
                const double& close[],
                const long& tick_volume[],
                const long& volume[],
                const int& spread[])
{
int copied;
int CountBars=rates_total;
  copied=CopyClose(InstrumentName,0,0,CountBars,Buffer);
  return(copied);
}
//-- 今度はEURUSDに投げる。

//--インジケーターをどの楽器に配置しても、チャートは変わらないはずだ。

理想的にはそうあるべきなんだけど、アルゴリズムでキーキー言っているんだ。

1時間テストしても......。

と履歴をアップロードしようとする