記事"ユニバーサルEA:イベントモデルと取引ストラテジープロトタイプ(パート2)"についてのディスカッション - ページ 2

 

こんにちは、

あなたのコード(Agent.mq5)をコンパイルしようとしたところ、以下のエラーが出ました。ビルド 1274

内部コンパイラー・エラー Agent.mq5 1 1

また、Dictionary.mqhの388行目に小さなタイプミスがあります。

/| Returns previous object.       The current object becomes previous|
 

ビルド1241では、コードはうまくコンパイルされているので、バックテストを実行してみた。トレードが成立しません。

少し調べてみたところ、充填モードが原因であることがわかりました。私が使用しているブローカー/シンボルで許可されているモードは ORDER_FILLING_IOC です。TradeCustomクラスは、充填モードをデフォルトでORDER_FILLING_FOKに 設定しています。そして、Agent.mq5 EAがトレードを行うために、このフィリングモードを変更するにはどうすればよいのでしょうか?検索することはできますが、時間がかかります。

それがこのようなツールの問題点です。MetaquotesのMQL5ウィザードEAと非常によく似ていて、クラスのすべての詳細を知らない人にはほとんど使えません。いったん作者が提供していない問題に直面すると、それを修正したり、修正・追加したりするのは本当に面倒になる。私は、あなたの解決策とMetaquotes(ウィザード)の解決策の間に本当の違いはないと思います。

ともあれ、大仕事おめでとう。素晴らしいプログラミングです。

 

ヴァシリー、あなたの作品は「トレーディングにおけるOOPアプリケーションの手引き」としては非常に有益で役に立ちますが、「実用的なトレーディング・エンジン」としては非常に貧弱です。特に、「管理機能」の多様性について話しています。

今日、MT5は、アクセシビリティとトレーダーの忠誠心(ヘッジ取引が追加された)という点で、MT4に近い。長年にわたり、MT4はフリーアクセスでかなり豊富な管理機能を蓄積してきました:

* ポジションの部分決済(取引エンジンによるこのプロセスの制御を意味する);

* さまざまなSTOP計算;

* ダイナミックSTOP;

* バーチャルストップ

* プロフェッショナルMM(これはストラテジー間の資金分配のコントロールです)。最終的な、そして最も重要な、持続可能な取引結果は、市場への正しいエントリーとエグジット(重要ではあるが)ではなく、正しい投資にかかっている;

* 仮想取引

* ネットワークの構築。すなわち、一連の注文の相互接続は、シリーズ内の各ポジションのロットサイズ形成の単一ロジックによって結合される。

* 取引注文を 行う際の例外処理の実装(requotes、エラー#130 [MT4]、STOPLEVEL、FREEZELEVEL、などなど)。

疑問が生じます:「フリーアクセスでエンジンをさらに開発するのですか?

 
Гога:

ヴァシリー、あなたの作品は「トレーディングにおけるOOPアプリケーションの手引き」としては非常に有益で役に立ちますが、「実用的なトレーディング・エンジン」としては非常に貧弱です。特に、「管理機能」の多様性について話しています。

今日、MT5は、アクセシビリティとトレーダーの忠誠心(ヘッジ取引が追加された)という点で、MT4に近い。長年にわたり、MT4はフリーアクセスでかなり豊富な管理機能を蓄積してきました:

* ポジションの部分決済(取引エンジンによるこのプロセスの制御を意味する);

* さまざまなSTOP計算;

* ダイナミックSTOP;

* バーチャルストップ

* プロフェッショナルMM(これはストラテジー間の資金分配のコントロールです)。トレーディングの最終的な、そして最も重要な持続可能な結果は、市場への正しいエントリーとエグジット(重要ではあるが)ではなく、正しい投資にかかっている;

* 仮想取引

* ネットワークの構築。すなわち、一連の注文の相互接続は、シリーズ内の各ポジションに対するロットサイズ形成の単一ロジックによって結合される。

* 取引注文を 行う際の例外処理の実装(requotes、エラー#130 [MT4]、STOPLEVEL、FREEZELEVEL、などなど)。

エンジンをさらに自由に開発するつもりですか?

はい、エンジンの開発はさらに計画されています。そしてそれは常に自由であり続ける。

あなたが挙げたその他のことについては、CStrategyの中でストップ、MM、「管理機能」を書いてください。誰もそれを禁じてはいません。

CTradeクラスとその応答を使ってエラーを制御してください。

 
Vasiliy Sokolov:

はい、エンジンの開発は継続する予定です。そして、それは常に無料のままです。

あなたが挙げたその他のことについては、CStrategyの中でストップ、MM、「管理機能」を書いてください。誰もそれを禁じてはいません。

エラー制御は常に存在します - CTradeクラスとその応答を使ってエラーを制御してください。

単純なユーザーは、取引サーバーから返されるエラーについて考える必要はありません。取引エンジンは、どのような状況でも(非稼働時間を除いて)取引注文(新規、決済、変更)が正しく生成され、実行されることを保証する必要があります。それとも、私は取引エンジンに多くを求めすぎているのでしょうか?

P.S. 次の記事では何を期待しますか?

 
Гога:

一般ユーザーは、取引サーバーから返されるエラーについて考える必要はありません。取引エンジンは、あらゆる状況(時間外を除く)において、取引注文(新規、決済、変更)が正しく生成され、執行されることを保証する必要があります。それとも、取引エンジンに多くを求めすぎているのでしょうか?

取引開始注文のSLが開始価格に近すぎる場合、取引エンジンはどうすべきだと思いますか:

  • 取引を開始しない;
  • ストップを許容最小距離に調整し、取引を開始する(ニュースがあり、ストップのレバレッジが4桁の50ポイントの場合も?)
  • 前項と同様にストップを調整し、ロットを比例配分して(リスクが変わらないように)調整し、取引を開始する。 ロットが許容最小ロット未満になった場合:
    • リスク管理に違反しないように、エントリーをキャンセルする、
    • 最小ロットでエントリーする。
  • ストップロスと同じレベルにあるすべての未決注文を調整する(グリッドの場合);
  • ストップロスとテイクプロフィットを比例配分する;
  • ...
戦略によって、異なるオプションを使用する必要があることを理解していますか?

はい、(オプションとして)最小距離に初歩的な調整を加えることはできますが、絶対に普遍的なレシピはありません。

 
Гога:

一般ユーザーは、取引サーバーから返されるエラーについて考える必要はありません。取引エンジンは、あらゆる状況(時間外を除く)において、取引注文(新規、決済、変更)が正しく生成され、執行されることを保証する必要があります。それとも、私は取引エンジンに多くを求めすぎているのでしょうか?

追伸:次の記事では何を(どのような機能を)期待すればよいでしょうか?

取引エンジンの仕事は、ストラテジーに便利な環境を提供することと、提示されるデータの整合性と一貫性を保証することです。取引エンジンにはそれ以外の仕事はありません。しかし、いかなる場合でも、ストラテジー自身のために「取引」をしては ならない。つまり、ストラテジーがミスを犯した場合、エンジンはそのミスを修正しない。ミスを防ぐためには、あらゆる手段を講じる必要がある。しかし、もしそうなってしまったら、その場でExpert Advisorの取引ロジックを変更するのは意味がない。腰を据えてストラテジーコードを修正すべきだ。それ以外の選択肢はない。

実践での例。CStrategyで任意の価格をリクエストする場合、例えばこのようになります:

double ask = Ask();

すでに正規化された商品価格が得られることが保証され、それを直接取引注文に使用することができます。システムクエリを使用した場合は、同じことは言えません。CStrategyは、例えば価格が正規化されていない場合にテクニカルエラーが発生するのを防ぐためにあらゆることを行います。しかし、CStrategyがユーザーのためにその作業を行うことはありません。また、この価格を未決注文に置き換えると、機能しないことがあります。

 
Andrey Khatimlianskii:

取引開始の注文で、SLが開始価格に近すぎる場合、取引エンジンはどうすべきだと思いますか?

  • 取引を開始しない;
  • ストップを許容最小距離に調整し、取引を開始する(ニュースがあり、ストップのレバレッジが4桁の50ポイントである場合も同様か);
  • 前項と同様にストップを調整し、ロットを比例配分して(リスクが変わらないように)調整し、取引を開始する。 ロットが許容最小ロット未満になった場合:
    • リスク管理に違反しないように、エントリーをキャンセルする、
    • 最小ロットでエントリーする。
  • ストップロスと同じレベルにあるすべての未決注文を調整する(グリッドの場合);
  • ストップロスとテイクプロフィットを比例配分する;
  • ...
戦略によって、異なるオプションを使用する必要があることを理解していますか?

はい、(オプションとして)最小距離の初歩的な調整はできますが、絶対に普遍的なレシピはありません。

アンドリュー、複雑にする必要はありません - 正解は、 "許容最小距離にストップを調整し、取引を開く(とニュースとストップが50 4桁のポイントを平準化した場合 - も?)小さすぎるストップは事実上(修正なしで)機能するはずです。そして、受信したシグナルで取引を開始する必要があります。ネットワークの場合は、STOP形成の段階で追加のルールが規定されています。
 
Vasiliy Sokolov:

取引エンジンの仕事は、ストラテジーに便利な環境を提供することと、提示されるデータの整合性と一貫性を保証することである。トレーディング・エンジンには他の仕事はない。しかし、いかなる場合でも、ストラテジー自体のために「取引」を 行うべきではありません。つまり、ストラテジーがミスを犯した場合、エンジンはそのミスを修正しない。ミスを防ぐためには、あらゆる手段を講じる必要がある。しかし、もしそうなってしまったら、その場でExpert Advisorの取引ロジックを変更するのは意味がない。腰を据えてストラテジーコードを修正すべきだ。それ以外の選択肢はない。

実践での例。CStrategyで任意の価格をリクエストする場合、例えばこのようになります:

すでに正規化された商品価格が得られることが保証され、それを直接取引注文に使用することができます。システムクエリーを使用した場合は、同じことは言えません。つまり、CStrategyは、例えば価格が正規化されていない場合に発生するテクニカルエラーを防ぐために、あらゆることを行います。しかし、CStrategyがユーザーのためにその作業を行うことはありません。また、この価格を未決注文に置き換えると、機能しないことがあります。

ここで議論しても無駄である。これは純粋に個人的な考え方だ。しかし、私はこのようなメッセージをログに受け取ることを許さない:

2016.07.01 11:04:26.866 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 10:10:30.908 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 08:18:19.129 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 07:59:48.209 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 06:29:19.308 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 04:59:36.505 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 03:13:03.656 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 02:59:55.757 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.06.30 17:59:56.557 ImpulseExpert (EURUSD,H1)       CTrade::OrderSend: modify position #1451923  EURUSD (sl: 0.00000, tp: 0.00000) [no changes]
エンジンが対処すべきです。
 
Гога:

ここで議論しても仕方がない。純粋に個人的な考え方だ。しかし、私はログにそのようなメッセージを受け取ることを許さない:

これはエンジンが対処すべきことだ。
それはエンジンが対処すべきことだ。これはシステムメッセージに付随する情報メッセージで、あなたが何らかの理由でクリーニングしたものです。