記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第29部): 未決取引リクエスト - 特定の条件下での注文とポジションの削除と変更"についてのディスカッション

 

新しい記事 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第29部): 未決取引リクエスト - 特定の条件下での注文とポジションの削除と変更 はパブリッシュされました:

本稿では、保留中リクエスト取引の概念の説明を完了し、未決注文を削除する機能と、特定の条件下で注文とポジションを変更する機能を作成します。したがって、シンプルなカスタム戦略、またはユーザ定義の条件でアクティブ化されるEA動作ロジックを開発できるようになります。

コンパイルしてテスターでEAをビジュアライゼーションモードで起動します。注文の削除や注文とポジションの変更を確認するには、2つの売りポジションを開いて、StopLossレベルとTakeProfitレベルなしで売り指値注文を出します。次に、保留中リクエストを作成して、価格値によって注文とポジションのストップレベルを変更します。保留中リクエストがアクティブになるのを待ち、指定されたストップレベルを設定して、注文とポジションを削除します。

次に、2つの買いポジションを開き、買い指値注文を出します。その後、注文を削除してポジションを時間までに決済するための保留中リクエストを作成します。


ご覧のように、ストップレベルは、特定の保留中リクエストの発動価格レベルの交差部分に設定されています。指定された時間後にポジションが決済され、注文が削除されました。

作者: Artyom Trishkin

 

こんにちは!

一連の記事と、MQL4用のコードに感謝します!

実例について。

課題は

  1. ある相場条件が 発生したとき、損切りは同じ終値水準、利食いは異なる水準で、同じ方向に複数のポジションを建てる。
  2. 同じような条件が下/上で発生した場合、同じ方向でさらにいくつかのポジションを、やはり同じ終値レベルの損失と異なる利益レベルで建てる。
  3. 最初のポジションの累積サイズは、貸借対照表から2%の損失を考慮して決定する。
  4. 2つ目のポジションの累積サイズは、資金の2%の損失を考慮して決定されるべきである。
  5. 未決済注文を使用することは想定していません。

私のMQL4 Expert Advisorには、エントリーポイントを見つけるアルゴリズムがすでに実装されていますが、取引操作はまだありません。

注意、質問 ))

最初のシリーズのライブラリ、クラス、メソッドのどれが開発のスピードアップに役立つでしょうか?


Рынок - новости, аналитика, прогнозы по рынкам - Блоги трейдеров и аналитика финансовых рынков
Рынок - новости, аналитика, прогнозы по рынкам - Блоги трейдеров и аналитика финансовых рынков
  • www.mql5.com
Рынок — это место, где обычно происходит обмен товара на деньги или товара на товар. Если доступ на рынок свободный, то производители и потребители проводят обмен в условиях конкуренции. Существует
 
Nikolai Karetnikov:

こんにちは!

一連の記事と、MQL4用のコードをありがとう!

実用的な例について。

タスクがあります、

  1. ある相場条件が 発生したら、同じ方向のポジションを、同じ終値の損失水準と異なる利益水準で複数建てる。
  2. 同じような条件が下/上で発生した場合、同じ方向でさらにいくつかのポジションを、やはり同じ終値レベルの損失と異なる利益レベルで建てる+オープンポジションの損失レベルをゼロに変更する。
  3. 最初のポジションの累積サイズは、貸借対照表から2%の損失を考慮して決定する。
  4. 2つ目のポジションの累積サイズは、資金の2%の損失を考慮して決定されるべきである。
  5. 未決済注文の取り扱いは想定していない。

私のMQL4 Expert Advisorには、エントリーポイントを見つけるアルゴリズムはすでに実装されていますが、取引操作はまだありません。

注意、質問 ))

最初のシリーズのライブラリ、クラス、メソッドのうち、どれが開発のスピードアップに役立ちそうですか?


完全な説明ではありません。

1.マジックナンバーの最初のグループ識別子を即座に同じにしてポジションを建てる。これで最初のグループ全体を識別子1で検索できる。

2.ポジションをオープンし、即座にマジックナンバーの2番目のグループ識別子をそれらと同じに設定する。これで、第2グループ全体を識別子2で検索できるようになります。
2.1 2つ目のグループのポジションをオープンした後、リストでグループ1のすべてのポジションを選択し、それらのストップロス・レベルを計算されたブレークイーブン・レベルに変更します。レベルは個別に計算する必要があります。最初のグループのポジションリストが利用可能で、その累積損益が簡単に計算できます。

3. この項目は累積出来高ですか?もしそうなら、最初のグループのポジションを建てる前に計算してください。

4.この項目は累計数量ですか?もしそうなら、第2グループのポジションを建てる前に計算してください。ただし、その資金は、第1グループの証拠金とその損益-自由資金の変動損益に依存します。

5.ポジションを建てるために必要な条件を揃えるには、ポジションを建てる前のリクエストが便利です。事前に計画を立て、期待値を設定する。私は主張しない - それは取引の戦術とテクニックを計画するための手段です。

答え - このすべては、意図されたものを実現するための最初の部分にあります。私は質問を理解していない - 何かをしようとする試みはありません。したがって - 私は唯一の言葉を使用することができます。

 

アルテム、こんにちは。

容量の点で、非現実的な仕事です。

私のMT4テスト端末は、ほとんどの場合、投資家モードで実際の取引口座に 接続されています。

これは、テスターで取引口座の条件(スワップ、手数料、ストップレベルなど、TDSでスワップされないもの)を最大化するためです。

しかし、ライブラリは口座での取引が禁止されていることを検知し、取引を拒否します。テスターでは。

テスターで動作するための制限のいくつかを明示的に緩和することは意味があるのかも?

どうやら、ここにあるようだ:

//--- この口座の取引権限をチェックする(取引サーバーとの接続がある場合)。
   else if(!this.m_account.TradeAllowed() && !::MQLInfoInteger(MQL_TESTER))
     {
      //--- エラーコードをリストに書き込み、falseを返す。
      this.m_error_reason_flags=TRADE_REQUEST_ERR_FLAG_ERROR_IN_LIST;
      this.AddErrorCodeToList(MSG_LIB_TEXT_ACCOUNT_NOT_TRADE_ENABLED);
      return false;
     }

私も追加しましたが、テスターで無視する意味のあるチェックはこれだけではないかもしれません?

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
, то позиции по каждому символу разрешается закрывать только в том порядке, в котором они были открыты — сначала самую старую, затем более новую и т.д. При попытке закрыть позиции в ином порядке будет получена ошибка. Уровень залоговых средств, при достижении которого происходит принудительное закрытие самой убыточной позиции (Stop Out). В...
 
Igor Ryabchikov:

アルテム、こんにちは

キャパシティの面では非現実的な仕事だった。

私のMT4テストターミナルは、ほとんどの場合、投資家モードで実際の取引口座に 接続されています。

これは、テスターで取引口座の条件(スワップ、手数料、ストップレベルなど、RTDでスワップされないもの)を最大限に利用するためです。

しかし、ライブラリは口座での取引が禁止されていることを検知し、取引を拒否します。テスターでは

テスターで動作するための制限のいくつかを明示的に緩和するのは理にかなっているのでは?

らしい:

私も追加しましたが、テスターで無視する意味のあるチェックはこれだけではないかも?

ありがとう。

 

この コードをありがとうございます。

MT4で、口座/取引イベントをリッスンするためのテストボタンがない状態で、修正バージョンを実行してみましたが、3つの取引をオープン/クローズしたときに、間違った結果が表示されました:

01:17:13.849 を削除しました。

01:17:13.733 uninit reason 4

01:15:36.860 OnDoEasyEvent:ポジションクローズ

01:15:36.860 - ポジションクローズ: 2020.08.20 23:45:29.000 -EURUSD クローズ売り #573015195 at price 1.18610, 利益 -0.13 USD

01:15:35.489 CEventsCollection::CreateNewEvent, Line 768:このイベントはすでにリストにあります。

01:15:35.019 OnDoEasyEvent:ポジションクローズ

01:15:35.019 - ポジションクローズ: 2020.08.20 23:45:27.000 -EURUSD 決済 買い #573015193 at 価格 1.18623, 利益 -0.13 USD

01:15:30.144 OnDoEasyEvent:ポジションオープン

01:15:30.144 - ポジションオープン: 2020.08.20 23:45:29.000 -EURUSD 0.01売り #573015195 [0.01 成行注文 売り #573015195] at price 1.18610

01:15:28.724 OnDoEasyEvent:ポジションオープン

01:15:28.724 - ポジションオープン: 2020.08.20 23:45:28.000 -EURUSD 0.01 買い #573015194 [0.01 成行注文 買い #573015194] at price 1.18623

01:15:28.263 OnDoEasyEvent:ポジションオープン

01:15:28.257 - ポジションオープン: 2020.08.20 23:45:27.000 -EURUSD 0.01 買い #573015193 [0.01 成行注文 買い #573015193] at price 1.18623

01:14:49.639 初期化済み

01:14:22.120 CAccount::Load:uchar 配列からオブジェクト構造を作成できませんでした。

01:14:22.120 CAccount::Load:uchar配列からオブジェクト構造を作成できませんでした。

01:14:22.120 CAccount::Load:uchar配列からオブジェクト構造を作成できませんでした。

01:14:22.120 Account ****:**** (****) **** USD, 1:100, ヘッジ, デモ口座MetaTrader 4

01:14:20.357 ロード成功


私のテストコードでは、おそらく何が間違っているのでしょうか?

 
Mohammad Bazrkar :

このコードをありがとう

MT4で、口座/取引イベントをリッスンするためのテストボタンがない状態で、修正版を実行してみましたが、3つの取引をオープン/クローズしたときに、間違った結果が表示されました:

01:17:13.849 を削除しました。

01:17:13.733 uninit reason 4

01:15:36.860 OnDoEasyEvent:ポジションクローズ

01:15:36.860 - ポジションクローズ: 2020.08.20 23:45:29.000 -EURUSD クローズ売り #573015195 at price 1.18610, 利益 -0.13 USD

01:15:35.489 CEventsCollection::CreateNewEvent, Line 768:このイベントはすでにリストにあります

01:15:35.019 OnDoEasyEvent:ポジションクローズ

01:15:35.019 - ポジションクローズ: 2020.08.20 23:45:27.000 -EURUSD 決済 買い #573015193 at 価格 1.18623, 利益 -0.13 USD

01:15:30.144 OnDoEasyEvent:ポジションオープン

01:15:30.144 - ポジションオープン: 2020.08.20 23:45:29.000 -EURUSD 0.01売り #573015195 [0.01 成行注文 売り #573015195] at price 1.18610

01:15:28.724 OnDoEasyEvent:ポジションオープン

01:15:28.724 - ポジションオープン: 2020.08.20 23:45:28.000 -EURUSD 0.01 買い #573015194 [0.01 成行注文 買い #573015194] at price 1.18623

01:15:28.263 OnDoEasyEvent:ポジションオープン

01:15:28.257 - ポジションオープン: 2020.08.20 23:45:27.000 -EURUSD 0.01 買い #573015193 [0.01 成行注文 買い #573015193] at price 1.18623

01:14:49.639 初期化済み

01:14:22.120 CAccount::Load:uchar 配列からオブジェクト構造を作成できませんでした

01:14:22.120 CAccount::Load:uchar配列からオブジェクト構造を作成できませんでした

01:14:22.120 CAccount::Load:uchar配列からオブジェクト構造を作成できませんでした

01:14:22.120 Account ****:**** (****) **** USD, 1:100, ヘッジ, デモ口座MetaTrader 4

01:14:20.357 ロード成功


私のテストコードでは、おそらく何が間違っているのでしょうか?

何を変更したのか分からない.

 

ボタンに関連するコードをいくつかカットしましたが、必要なコードを削除する ことは可能です。それを添付します。

しかし、2回目の終値の買いポジションをキャプチャしていないというエラーは、私の変更とは関係ないということに同意しますか?

ファイル:
mhdbzr-34.mq4  46 kb
 
Mohammad Bazrkar :

ボタンに関連するコードをいくつかカットしましたが、必要なコードを削除することは可能です。添付します。

しかし、2回目の終値の買いポジションをキャプチャしていないというエラーは、私の変更とは関係ないということに同意しますか?

テストアドバイザーはエラーなしで動作しますか?

 
Artyom Trishkin:

テストアドバイザーはエラーなく機能していますか?

私は自分のイベントを見るために修正したEAを実行し、その後手動でいくつかの取引を行い、できるだけ早く決済します。
ポジションをオープン/クローズするためにテストEAは使用していません。


これらの`CAccount`エラーはデフォルトのTestDoEasyPart34.ex4で表示されます。

01:14:22.120 CAccount::Load:uchar配列からオブジェクト 構造を作成 できませんでした。

01:14:22.120 CAccount::Load:uchar配列からオブジェクト構造を作成できませんでした。

01:14:22.120 CAccount::Load: Could not create object structure from theuchar array:uchar配列からオブジェクト構造を作成できませんでした。

 
Mohammad Bazrkar:
私は修正したEAを動かして自分のイベントを監視し、それから手動でいくつかの取引を行い、できるだけ早く決済します。
ポジションのオープン/クローズにはテストEAは使いません。


これらの`CAccount`エラーはデフォルトのTestDoEasyPart34.ex4で表示されます。

01:14:22.120 CAccount::Load:uchar配列からオブジェクト 構造を作成 できませんでした。

01:14:22.120 CAccount::Load:uchar配列からオブジェクト構造を作成できませんでした。

01:14:22.120 CAccount::Load: Could not create object structure from theuchar array:uchar配列からオブジェクト構造を作成できませんでした。

そうです。なぜなら、アカウント・データを保存する方法が変更されたからです。これは記事の最後に警告として書かれています:
-----
ご参考までに:
口座オブジェクトの構造を変更したため(口座の文字列プロパティを格納するuchar配列のサイズを変更し、さらに整数プロパティを1つ追加)、以前に保存した口座オブジェクトのファイルはすべて正しくロードされなくなりました。
このテスト・アドバイザーを起動する前に、端末の共通フォルダの ㊤Files㊦にあるファイルを全部削除してください。オブジェクト構造の新しいサ イズでアカウントから別のアカウントに切り替えるときに、再作成されます。