記事"MetaTrader 5のマルチ通貨モードの実行"についてのディスカッション - ページ 2

 
Lizar:

しかし、テスターのエキスパートがスパイをロードできないというのは奇妙だ。デモでは動作するのですか?

彼はエラー

err_indicator_cannot_create

4802

インジケータを作成できません。

インジケータが作成できない理由をご覧ください。
 
Yedelkin:
エラー

err_indicator_cannot_create

4802

インジケータを作成できません。

インジケータが作成できない理由を参照してください。

私はまだそれを理解することはできません。デモでは動作しますが、テスターではロードされません(作成されません) 。これさえ試した:

#property tester_indicator "iSpy.ex5"
助けにはなりません。
 
Lizar:

私はまだ手がかりを得ることができません。デモでは動作しますが、テスターではロードされません(作成されません) 。これさえ試した:

助けにならない。

科学的な突きの方法によって、それはテスターで動作しました:

   if(iCustom("GBPUSD",PERIOD_M1,"iSpy.ex5",ChartID(),0)==INVALID_HANDLE) 

そして、それは"GBPUSD" のために、最初の条件でのみ挿入するのに十分であった さて、質問 - なぜ正確にこのような?

 
Yedelkin:

科学的手法によれば、テスターではこうだった:

そして、「GBPUSD」の 最初の条件だけに挿入すれば十分だったのだ。 さて、問題は、なぜそのようにしたのか、ということだ。

わあ、「科学的な突っ込み」は私たちのビジネスでは素晴らしいことです。まあ、なぜそうなるのかは、開発者への質問だと私は思う。

それを解明する手助けをしてくれてありがとう。

 
Lizar:

スパイ・コントロール・パネルMCMのOnCalculate()関数に 1行あります:

デフォルトでは、price[rates_total-1]は最後の未完了バーの終値に等しく、これは最後の買値に等しくなります。

アスク価格を強制的に取得したい場合は、この行を例えば...に置き換えてください。

つまり、買値と売値のどちらかを取得することができます。しかし、このような状況を分析するには、アスクとビッドの両方の価格を一度に取得する必要があります。

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
3ティックとビッドは変更されません、したがって、(おそらく)アスクが変更されました。


それは可能ですか?

 
Trolls:

つまり、買値と売値のどちらかを得ることができます。しかし、ビッドとアスクの両方の価格を一度に取得するには、このような状況を分析する必要があります。

2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
2011.01.24 10:59:28 exSpy (GBPUSD,M5) 08:59:24 -> id=2: EURUSD PERIOD_M1 price=1.35778
3ティックとビッドは変更されません、したがって、(おそらく)アスクが変更されました。


それは可能ですか?

可能です。いくつかの方法があります:

1. 同じシンボルに異なる ID で 2 つのスパイを配置する。一方がビッドを送信し、もう一方がアスクを送信する。

2. 同じシンボルに 1 つのスパイを配置し、異なる ID でビッドとアスクの 2 つのイベントを順次送信させる。

3.他にもオプションはありますが、OnChartEventにパラメータを渡す スキームに大きな変更を加える必要があります。

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Основы языка / Функции / Передача параметров - Документация по MQL5
 
スパイを「新しいティック到着のセマフォ」として使用し、Expert AdvisorではSymbolInfoTickを 使用してティックに関する完全な情報を取得します。
 
Kos:
スパイを「新しいティック到着のセマフォ」として使用し、Expert AdvisorではSymbolInfoTickを使用してティックに関する完全な情報を取得します。

素晴らしい解決策です。
 

よければヒントをください。この記事には列挙の例と

enum ENUM_CHART_EVENT_SYMBOL
  {
   CHARTEVENT_INIT      =0,          // イベント "初期化"
   CHARTEVENT_NO        =0,          // イベント切断

   CHARTEVENT_NEWBAR_M1 =0x00000001, // 1分足チャートの「新しいバー」イベント
   CHARTEVENT_NEWBAR_M2 =0x00000002, // 2分足チャートの「新しいバー」イベント
   CHARTEVENT_NEWBAR_M3 =0x00000004, // 3分足チャートの「新しいバー」イベント
   CHARTEVENT_NEWBAR_M4 =0x00000008, // 4分足チャートの「新規バー」イベント
   
   ...
   
   CHARTEVENT_ALL       =0xFFFFFFFF, // すべてのイベントが有効
  };

の例と、この列挙型の値を扱う例がある:

if((flag_event & CHARTEVENT_NEWBAR_M1)!=0) EventCustom(CHARTEVENT_NEWBAR_M1,price_current

同じような構造は標準ライブラリにも あります。私が理解する限り、私たちは16進数とビット演算について話しているのですが、インターネットで見つけたいくつかの一般的な記事では、MQL5でそれらを使用する意味と目的を明確にする助けにはなりませんでした。MQL5で使用される16進数ロジックの特殊性を明確かつ明確に熟知できる場所を教えていただけませんか?

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Yedelkin:

よければヒントをください。この記事には列挙の例と

の例と、この列挙型の値を扱う例がある:

同じような構造は標準ライブラリにも あります。私が理解する限り、私たちは16進数とビット演算について話しているのですが、インターネットで見つけたいくつかの一般的な記事では、MQL5でそれらを使用する意味と目的を明確にする助けにはなりませんでした。MQL5で使用される16進数ロジックの特殊性を明確かつ明確に熟知できる場所を教えていただけませんか?

16進数ロジックはどこでも同じです。数字システムについてはこちらを ご覧ください。そこでは位置数システムについて読むことができ、16進数や2進数への言及を見ることができる。システム間変換の例もあります。

すべてのビット演算は2進法を対象としています。MQL5でのビット演算についてはこちら