記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第10部): MQL4との互換性 - ポジションオープンイベントと指値注文発動イベント"についてのディスカッション - ページ 4

 
Artyom Trishkin:

いいえ、記事を読むだけです

申し訳ありませんが、私はそんなに多くの文字を知りません。)))

 
Alexey Viktorov:

そしてこうなった:

デモでこのコードを実行している間に、指値注文が設定され、削除された。

そして突然、次のモッキング中に1つのポジションが変更され、1つのポジションがオープンされ、1つのポジションがクローズされた。しかし、長い間削除されていた注文を削除した記録はどこから来たのでしょうか?

私があげたファイルでライブラリを置き換えたのか?この記事のライブラリはまだ完成していません。MQL4では2つのイベントが同じ条件を持つ場合、このような欠陥があります。第11回目の記事で、ライブラリの現在の機能のMQL4への移植が完了しました。そしてこの記事のバージョンにはこのバグがあり、その存在は記事の最後の言葉によって間接的に示されている:

次の記事

次回の記事では、ポジションのクローズ トラッキングを行い、MQL4用のイベントトラッキングの現在の実装で発生する可能性のあるエラーを修正します - オーダーのインストールと削除はMQL5用のコードでトラッキングされるため、MQL4で作業する際に考慮しなければならないニュアンスがあるかもしれません。
ライブラリファイルを置き換えたにもかかわらずエラーが発生する場合は、エラーが発生したときの状況、つまりエラーにつながる一連のアクションを把握する必要があります。
 
Artyom Trishkin:

私がお渡ししたファイルでライブラリを置き換えたのですか?この記事のライブラリはまだ完成していません。MQL4では2つのイベントが同じ条件を持つ場合、このような欠陥があります。第11回記事で、ライブラリの現在の機能のMQL4への移植が完了しました。しかし、この記事のバージョンにはこのバグがあり、その存在は記事の最後の言葉によって間接的に示されている:

次の記事

次回の記事では、ポジションのクローズ トラッキングを行い、MQL4用のイベントトラッキングの現在の実装で発生する可能性のあるエラーを修正します - オーダーのインストールと削除はMQL5用のコードでトラッキングされるため、MQL4で作業する際に考慮しなければならないニュアンスがあるかもしれません。
ライブラリファイルを置き換えたにもかかわらずエラーが発生する場合は、エラーが発生したときの状況、つまりエラーに至る一連のアクションを把握する必要があります。

はい。私はすでに一連の流れを説明しました。

取引、自動取引システム、取引戦略のテストに関するフォーラム。

記事「MetaTrader用のプログラムを簡単かつ迅速に作成するためのライブラリ(パートX)」の議論:MQL4との互換性 - ポジションオープンとペンディングオーダーのアクティベーションのイベント"

アレクセイ・ヴィクトロフ, 2019.05.27 17:59

そして、ここでこんな不可解なことが起こった:

私がデモでこのコードを実行している間に、指値注文が設定され、削除されました。

443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 

そして突然、次のモッキングの間に1つのポジション、1つのオープンと1つのクローズが修正されました。しかし、長い間削除されていた注文を削除したという記録はどこから来たのでしょうか?

2019.05.27 18:34:11.903 00 EURUSD,H1: OnChartEvent: id=1002, event=TRADE_EVENT_PENDING_ORDER_REMOVED, lparam=443342388, dparam=1.11835, sparam=EURUSD
2019.05.27 18:34:11.903 00 EURUSD,H1: OnChartEvent: id=1024, event=TRADE_EVENT_POSITION_CLOSED, lparam=443417294, dparam=1.11933, sparam=EURUSD
2019.05.27 18:34:11.903 00 EURUSD,H1: - Отложенный ордер удалён: 2019.05.27 14:54:10.000 -
EURUSD Удалён 0.01 Buy Limit #443342388  по цене 1.11835
2019.05.27 18:34:11.903 00 EURUSD,H1: - Позиция закрыта: 2019.05.27 18:33:02.000 -
EURUSD Закрыт Sell #443417294  по цене 1.11912, профит -0.21 USD
2019.05.27 18:33:02.755 00 EURUSD,H1: OnChartEvent: id=1022, event=TRADE_EVENT_POSITION_OPENED, lparam=443417294, dparam=1.11912, sparam=EURUSD
2019.05.27 18:33:02.755 00 EURUSD,H1: - Позиция открыта: 2019.05.27 18:33:02.000 -
EURUSD Открыт 0.01 Sell #443417294 [0.01 Market order Sell #443417294]  по цене 1.11912
2019.05.27 18:29:21.913 00 EURUSD,H1: OnChartEvent: id=1050, event=TRADE_EVENT_MODIFY_POSITION_TAKE_PROFIT, lparam=443218277, dparam=1.12218, sparam=EURUSD
2019.05.27 18:29:21.913 00 EURUSD,H1: - Модифицирован TakeProfit позиции: 2019.05.27 18:27:45.000 -
EURUSD Buy #443218277:  модифицирован TakeProfit: [1.12240 --> 1.12218]

15:01:14に、先に発注した指値注文を削除した。

18時29分まで私は自分の仕事をしていた。エキスパートアドバイザーはチャートの上に立っていた。

18:29:21、私は以前に設定したポジションを修正した。

18:33:02に売り注文を出した。

18時34分11秒、私はこの売りを決済した。

そしてその瞬間、15:01:14に削除された指値が削除されたという2つ目の記録を受け取った。

 
Alexey Viktorov:

はい、そうです。順序はすでに説明したよね?

そうだね:

そしてこうなった:

デモでこのコードを実行している間に、指値注文が設定され、削除された。

そして次のモッキングで突然、1つのポジションが変更され、1つのポジションがオープンされ、1つのポジションがクローズされた。しかし、長い間削除されていた注文を削除した記録はどこから来たのでしょうか?

そして、これらのアクションの順序は何ですか?

  1. 指値注文を設定
  2. 指値注文を削除
  3. ポジションが変更された(いつオープンされたのか?)
  4. ポジションがオープンされる
  5. 同じポジションがクローズされた
どの瞬間に不正なイベントが表示されましたか?
 
Artyom Trishkin:

あなたはこう書いた:

これらの行動の順序は?

  1. 指値注文を設定
  2. 指値注文を削除
  3. ポジションが変更された(いつオープンされたか?)
  4. ポジションがオープンされる
  5. 同じポジションがクローズされた
どの時点で不正なイベントが表示されましたか?

前のメッセージを完了しました。

 
Alexey Viktorov:

ええ、そうです。順序はもう説明したよね?


どの順番でもこのエラーは出ません。

どのような順序でこのエラーが発生するのか説明してください。

ログにはデバッグの記録がたくさんあって、素早く理解するのに邪魔になる。

 
Alexey Viktorov:

前のメッセージを完了しました。

15:01:14 に、先に発注した指値注文を削除しました。

18:29まで私は自分のことをしていた。Expert Advisorはチャート上に立っていた。

18:29:21、私は以前に設定したポジションを修正した。

18:33:02に売り注文を出した。

18時34分11秒、私はこの売りを決済した。

そしてその瞬間、15:01:14に削除された指値が削除されたという2番目の記録を受け取った。

つまり

  1. ポジションを 建て、しばらく待つ、
  2. 指値注文を 出し、一定時間待つ、
  3. 指値注文を 削除、
  4. ポジションを 修正する、
  5. ポジションを 開き、ポジションを 閉じる
だろう?
 
Artyom Trishkin:

15:01:14に、先に発注した指値注文を削除した。

18:29まで私は自分のことをしていた。Expert Advisorはチャート上に立っていた。

18:29:21、私は以前に設定したポジションを修正した。

18:33:02に売り注文を出した。

18時34分11秒、私はこの売りを決済した。

そしてその瞬間、15:01:14に削除された指値が削除されたという2つ目の記録を受け取った。

つまり

  1. ポジションを建てて しばらく待つ、
  2. 指値注文を 出し、一定時間待つ、
  3. 指値注文を 取り消す、
  4. ポジションを 修正する、
  5. ポジションを 開き、ポジションを 閉じる
そうだろう?

いいえ、手元を見てください。

443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 

14時54分10秒に設定されたリミットは15時1分14秒に解除されました。

その後、長い 放送 休止。すべてが沈黙する。

その後、いくつかの動きが連続し、18:.29分、33分、34分。34時、3時間半前に起こったこの出来事が流れる。

これがポジションのリストだ。

443217459 2019.05.27 08:48:18 buy 0.01 eurusd 1.12109 0.00000 0.00000   1.11933 0.00 0.00 0.00 -1.76 
443218277 2019.05.27 08:51:53 buy 0.01 eurusd 1.12112 0.00000 1.12218   1.11933 0.00 0.00 0.00 -1.79 
443335401 2019.05.27 14:31:07 buy 0.01 eurusd 1.11965 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.32 
443336857 2019.05.27 14:35:47 buy 0.01 eurusd 1.11970 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.37 
443336959 2019.05.27 14:36:09 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
443337190 2019.05.27 14:36:53 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
朝と昼はすべてオープンしている。18分にはSellだけがオープンし、ほとんどすぐにクローズした。
 
Alexey Viktorov:

いや、まあ、手には気をつけろ

リミットは14時54分10秒に設定され、15時01分14秒に削除された。

その後、長い 放送 休止。すべてが沈黙する。

その後、いくつかの動きが連続し、18:.29分、33分、34分。今、34で、3時間半前に起こったこの出来事。

ここにポジションのリストがある。

朝も昼も全部開いている。分18秒の時点では、Sellだけがオープンで、ほとんどすぐにクローズした。

さて、これ だ:

15時1分14秒に、先に発注した 指値注文を削除した

18時29分まで、私は自分の仕事をしていた。エキスパート・アドバイザーはチャートの上に立っていた。

18時29分21秒、私は以前に 設定したポジションを修正した

18:33:02に売り注文を出した。

18:34:11 に売りを決済した。

指値注文 を設定する ですか?それとも後?それとも指値注文を設定した後ですか?「より早く」というのは具体的ではありません。すべてのアクションのタイミングにはおそらく意味がある。古い指値注文の削除は、ポジションをクローズ した瞬間に再度決定されるので、どこかに等しい条件があります - ポジションがクローズされたので、条件をチェックし(それはコードに直接記述されています)、これらの条件に基づいてイベントのタイプを決定します。そして、イベント内の特定の注文の種類によってリストがソートされ、イベントがプログラムに送信されます。MQL4では条件が重複しているため、ライブラリにとっては等しいことがわかります。とはいえ、これは第11回の記事で削除したもので、まだテスト中である。

 
Artyom Trishkin:

さて、ここであなたはこう書いて いる:

15:01:14、私は以前に発注した 指値注文を削除した。

18:29まで、私は自分のことをしていた。Expert Advisorはチャートに立っていた。

18:29:21、私は以前に 設定したポジションを修正した

18:33:02に売り注文を出した。

18:34:11にこの売りを決済した。

これは指値注文が 設定される ですか?それとも後?それとも指値注文が設定された後ですか?「以前」というのは具体的ではありません。すべてのアクションのタイミングにはおそらく意味がある。古い指値注文の削除は、ポジションをクローズ した瞬間に再び決定されるので、どこかに等しい条件があります - ポジションがクローズされたので、条件をチェックし(それはコードに直接記述されています)、これらの条件に基づいてイベントのタイプを決定します。そして、イベント内の特定の注文の種類によってリストがソートされ、イベントがプログラムに送信されます。MQL4では条件が重複しているため、ライブラリにとっては等しいことがわかります。とはいえ、これは第11回の記事で削除したもので、まだテスト中である。

取引、自動取引システム、取引戦略のテストに関するフォーラム

記事「MetaTrader用のプログラムを簡単かつ迅速に作成するためのライブラリ(パートX)」についての議論:MQL4との互換性 - ポジションオープンのイベントと保留注文の有効化" について

アレクセイ・ヴィクトロフ, 2019.05.27 18:50

いいえ、よくあなたの手を見てください

443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 

リミッターは14:54:10にかけられ、15:01:14に削除された。

その後、長い 放送 休止。すべてが沈黙する。

その後、いくつかの動きが18:.29分、33分、34分。今、34で、3時間半前に起こったこの出来事。

これがポジションのリストだ。

443217459 2019.05.27 08:48:18 buy 0.01 eurusd 1.12109 0.00000 0.00000   1.11933 0.00 0.00 0.00 -1.76 
443218277 2019.05.27 08:51:53 buy 0.01 eurusd 1.12112 0.00000 1.12218   1.11933 0.00 0.00 0.00 -1.79 
443335401 2019.05.27 14:31:07 buy 0.01 eurusd 1.11965 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.32 
443336857 2019.05.27 14:35:47 buy 0.01 eurusd 1.11970 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.37 
443336959 2019.05.27 14:36:09 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
443337190 2019.05.27 14:36:53 buy 0.01 eurusd 1.11967 0.00000 0.00000   1.11933 0.00 0.00 0.00 -0.34 
朝も昼も全部開いている。18分の時点では、1つだけオープン、売り、そしてほとんどすぐにクローズしました。

ハイライトされたポジションを修正した。間違いない。午前中に置かれたものだ。何度か修正した。どれを修正しても構わなかった。私はすでにこの1つにテイクアウトをセットしていた。それをやろうとしたんだ。

これがすべてのリミッターと最後のセルだ。

443340041 2019.05.27 14:46:32 buy limit 0.01 eurusd 1.11815 0.00000 0.00000 2019.05.27 14:46:55 1.11974 cancelled 
443340283 2019.05.27 14:47:15 buy limit 0.01 eurusd 1.11796 0.00000 0.00000 2019.05.27 14:47:27 1.11974 cancelled 
443340764 2019.05.27 14:48:42 buy limit 0.01 eurusd 1.11830 0.00000 0.00000 2019.05.27 14:52:51 1.11962 cancelled 
443340819 2019.05.27 14:48:54 buy limit 0.01 eurusd 1.11761 0.00000 0.00000 2019.05.27 14:50:22 1.11977 cancelled 
443340874 2019.05.27 14:49:06 buy limit 0.01 eurusd 1.11694 0.00000 0.00000 2019.05.27 14:52:37 1.11963 cancelled 
443341012 2019.05.27 14:49:32 buy limit 0.01 eurusd 1.11657 0.00000 0.00000 2019.05.27 14:51:22 1.11973 cancelled 
443342301 2019.05.27 14:53:55 sell stop 0.01 eurusd 1.11764 0.00000 0.00000 2019.05.27 15:01:03 1.11956 cancelled 
443342388 2019.05.27 14:54:10 buy limit 0.01 eurusd 1.11835 0.00000 0.00000 2019.05.27 15:01:14 1.11972 cancelled 
443417294 2019.05.27 18:33:02 sell 0.01 eurusd 1.11912 0.00000 0.00000 2019.05.27 18:34:11 1.11933 0.00 0.00 0.00 -0.21 

削除されたリミッターと売りはハイライトされている。削除イベントはどこかに残っているはずだ。しかし、なぜこの「売り」のオープンと同時にではなく、「売り」のクローズと同時に「目覚めた」のでしょうか?