初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 93

 
ryzhak.vladimir:

こんにちは!2012年1月1日から2012年12月31日までのEURUSDの30分間のバーの終値の配列があります。関数CopyCloseで 取得します。しかし、ターミナルでチャートを開くと、CopyClose[0]は2012年12月31日の最後のバーの終値と等しくなりません。何が間違っているのか、教えてください。CopyCloseからの価格とチャート上の実際の価格が一致しない理由

Close_buf[0]を呼び出す前に、ArraySetAsSeriesを 使用する必要があります。EA/スクリプト/インジケーターコードの全動作中、1回。

ArraySetAsSeries(Close_buf,true);
 
fyords:

ArraySetAsSeries は Close_buf[0] を呼び出す前に使用する必要があります。一度だけ、EA/スクリプト/インジケーターコードの全期間中。

1.31964(2012年の最終バー終値)の代わりに1.32308と表示され、まだ一致しない。

//+------------------------------------------------------------------+
//|                                                    simpleBet.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
double Close_buf[];//динамический массив для хранения значений закрытия баров
string my_symbol = "EURUSD";//валютная пара
ENUM_TIMEFRAMES my_timeframe = PERIOD_M30;//таймфрейм
datetime testTimeStart = D'2012.01.01';
datetime testTimeEnd = D'2012.12.31';
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---    
     CopyClose(my_symbol,my_timeframe,testTimeStart,testTimeEnd,Close_buf); 
     ArraySetAsSeries(Close_buf,true);
     Print(Close_buf[0]);
  }
//+------------------------------------------------------------------+
 
ryzhak.vladimir:

1.31964(2012年最後のバーの終値)ではなく、1.32308と表示され、まだ一致しません。

あなたが設定
datetime testTimeEnd = D'2012.12.31';
と設定すれば
datetime testTimeEnd = D'2012.12.31 23:59:59';
 
はい、うまくいきました!ありがとうございます。なぜ、秒単位の正確な日付が表示されたときだけ価格が一致したのかは、まだ不明だが......。
 
ryzhak.vladimir:
はい、うまくいきました!ありがとうございます。なぜ、秒単位の正確な日付を指定したときだけ価格が一致するのか、まだ理解できませんが

おそらく、2012.12.31のデフォルトが、2012.12.31 24:00:00ではなく、2012.12.31 00:00:00だからでしょう。

 
コピーされたデータ(buffer_numをインデックスとするインジケーターバッファ)の要素は、開始位置から現在から過去に向かってカウントさ れます。"しかし、実際には、0番目の要素に現在のバーを持つために、ArraySetAsSeries(Close_buf,true)を適用する必要があります。しかし、ドキュメントには、デフォルトで0番目の要素の最後のバーをコピーすると書かれています。なぜ、このような違いがあるのでしょうか?
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
ryzhak.vladimir:コピーされたデータ(buffer_numをインデックスとするインジケーターバッファ)の要素は、開始位置から現在から過去に向かってカウントさ れます。"しかし、実際には、0番目の要素に現在のバーを持つために、ArraySetAsSeries(Close_buf,true)を適用する必要があります。しかし、ドキュメントには、デフォルトで0番目の要素の最後のバーをコピーすると書かれています。なぜ、このような違いがあるのでしょうか?
図をもっとよく見てください。start_pos'の項目はどこにコピーされているのでしょうか?
 
心理的な方向性の問題に直面した。
トレンドEAを書いたら成功したようです。今、フラットEAを書いていて...このEAは5回目ですが、まるで1つのアルゴリズムだけに囚われているように、前のものに還元されます。最初はすべて「新しい」ものですが、アルゴリズムが構造化された後、最初の(成功した)ものにあらゆる面で調整し始めるEAを書き始めます。

もし、そのようなことに直面した人がいたら-フラットのデポジットを下げるだけの堂々としたアルゴリズムを「取り除く」方法を教えてください。
 
Lester: あなたはそのようなでたらめに直面している場合 - フラットにのみ堆積物を排出する堂々としたアルゴリズムを、 "取り除く "方法を教えてください。
私はそのようなものに出会ったことはありませんが、一般的な注意の転換には、他の人のアルゴリズムを研究してみることです。
 
Lester:

心理的な方向性の問題に直面した。
トレンドEAを書いたら成功したようです。今、フラットEAを書いていて...このEAは5回目ですが、まるで1つのアルゴリズムだけに囚われているように、前のものに還元されます。最初はすべて「新しい」ものですが、アルゴリズムが構造化された後、最初の(成功した)ものにあらゆる面で調整し始めるEAを書き始めます。

誰かがそのようなことに直面している場合 - フラットの保証金をダウンさせるだけで、アルゴリズムを "取り除く "方法を教えてください。
あなたのトレーダーは心理的な問題ではなく、システムの問題、つまりトレンドと横ばいの違いを正確に示すことができないのです。この点を理解すれば、すべてがうまくいくはずです。
理由: