MQL5 Wizardで生成されたExpert Advisorで開く、閉じる。 - ページ 2

 
PeretsCHILI:

問題の文言が決まりました。

オープンロング:高速MAが低速MAを下から上にクロス、さらに時間フィルターあり

クローズロング:速いМАが遅いMAと上から下へ交差する

オープンショート:速いМАが遅いMAと上から交差し、さらに時間フィルターがかかる

クローズド・ショート:速いМАと遅いMAが下から上へ交差している。

前述の例では、CheckOpenLong, CheckCloseLong, CheckOpenShort, CheckCloseShortがそれぞれ使用されています。

オープニング用とクローズ用のシグナルを持つ2つのモジュールを作る場合、最初のモジュールは標準 モジュールライブラリの ようにLongConditionとShortConditionを使用すると理解しています。2つ目のモジュールで何を使って閉じるか?


そして最も重要なのは、どこで?... crosses ...」とはどういう意味ですか?そこがいいところです :)

 

男、さらに混乱するばかりです))6ステップで取引ロボットを 作ろう!」の記事では、2本のMAをクロスしてオープンするシグナルを最初のモジュールとして紹介したばかりです。

https://www.mql5.com/ru/articles/367

クロスオーバーとはどういう意味ですか?1本目のバーのFastMA-SlowMAの差が0より大きく、2本目のバーの差が0より小さいとき、速いМАが遅いMAを下から上に横切ります。トップダウンとは、1本目のバーの差が0より小さく、2本目のバーの差が0より大きい場合です。

オープンシグナルとクローズシグナルを持つ2つのモジュールを作成することで問題が解決されるとのことですが、その方法はありますか?記事のモジュールをベースにして、クロージングシグナルを使ったモジュールを作成することは可能ですか?

Создай торгового робота за 6 шагов!
Создай торгового робота за 6 шагов!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
 
PeretsCHILI:

...

クロス」とはどういう意味ですか?FastMAがSlowMAを下から上へクロスするのは、最初のバーでのFastMA-SlowMAの差が0より大きく、2番目のバーで0より小さくなる場合です。トップダウンとは、1本目の棒が0より小さく、2本目の棒が0より大きい場合です。

...


それはいいことだ。タスクが指定されているときは、非常に良い。


PeretsCHILI:

...

オープンシグナルとクローズシグナルを持つ2つのモジュールを作成することで問題が解決されるとのことですが、その方法はありますか?シグナル to クローズのモジュールは、上記記事のモジュールのベースとして使用できますか?

正しい意味ではないのですが売買シグナルモジュールは、「買い時」「売り時」のシグナルを生成します。つまり、OPENの合図を出すのです。そして、あとはCExpertの判断で、既存のポジションを決済して反転させるか、ポジションを建てるかを決定します。



6つのステップでトレーディングロボットを作 ろう!の記事からモジュールを取る。- 何か問題があるのでしょうか?

 

そこで、2つのMAをタイムフィルターでクロスさせることでオープニングシグナルを出し、以下の場合にクローズが発生するモジュールを書きたいと思います:反対のシグナルの到着、SLが来る、TPが来る。記事通りにモジュール(Cross2MAとします)を書き、Cross2MAとSignalITFのモジュールでExpert Advisorを生成 することもできますが、Close時にSignalITFのフィルタもチェックされるため、うまくいきません。

例:2MAがあり、SignalITFが月曜日のみトレードしている場合。月曜日に買いシグナルを受信し、買いポジションを建て、時間切れの火曜日にSlにもTPにも到達しない場合、2MAの逆クロスが発生し、買いポジションは決済されるべきですが、すでに別の平日であるため、決済はされません。

同じ条件、2MA、月曜日の取引:月曜日に買いシグナルが出たので買いポジションを建て、火曜日に売りシグナルが出たが、火曜日なので売りポジションを建てず、買いポジションだけを決済します。

LongConditionには、買いの開始と売りの終了の2つのコマンドがあるようです。どうにかして分離したい)

 

"フライは別、カツは別"。


PeretsCHILI:

そこで、2つのMAをタイムフィルターでクロスさせることでオープンし、以下の場合にクローズするシグナルを持つモジュールを書きたいのです:反対シグナルの到着、SLの到着、TPの到着 ....

売買シグナルモジュールは、「買い時」と「売り時」の2種類のシグナルのみを表示することができます。

ストップロスやテイクプロフィットはコントロールしません。ストップロスやテイクプロフィットのポジションが閉じられた場合、その意味はただ一つ、ポジションが閉じられ、取引シグナルモジュールが何を生成するかを確認する時だからです(言い換えれば、ポジション数がゼロになると、シグナル待ちという循環が始まるのです)。

さらに:「反対信号」は存在しないので、これはモジュールの動作の誤った解釈である - それは次のようにすることができます。

  1. 買いポジションがあり、「PAY TO OPEN SELL」 シグナルを取得。
  2. または売りのポジションを持っていて、"PAY to BUY " シグナルが表示された場合。
どちらの場合も、現在のポジションは閉じられ、新しいポジションが開かれます。


 
Andy:
LongConditionは、どんな条件でも買いをオープンしてホールドするだけで、ストッププロフィットでクローズさせるか、手動でクローズさせるか?

LongConditionクラス CExpertSignal は原理的に何も "保持 "できない。CExpertSignalは、「買い時」「売り時」の2つのシグナルしか出しません。


ウィザードで構築したExpert Advisorを決して閉じないようにしたいですか?次にExpert Advisorの入力パラメータ「// Signal threshold value to close [0...100]」を変更し、スケールのバーを「100」でクローズするように設定します。

 
Andy:
では、何をもって閉じるのか。

CExpertクラスの オブジェクト - すべてのシグナルモジュールをポーリングし、その重みを評価し、結果のスコアを合計する:シグナル重み




 

モジュールの解釈については理解できました。これだけ踊るのは、Expert Advisorを以下のように最適化するためです。1.2つのMA(期間、シフト、平滑化)の最適化、ゼロによる停止と持ち出し、2.2つのMA(期間、シフト、平滑化)。3.トレイリングの最適化

問題は以下の通りです。Cross2MAとSignalITFフィルターでExpert Advisorを生成 すると、以下のように動作します(条件は同じ、ストップとテイクオーバーはゼロ)。

月曜日、FastMAがSlowMAを下から上に横切り、買いポジションを建て、ポジションは次の月曜日まで保持され、次の月曜日には3つのバリエーションが存在する可能性があります。

FastMAがSlowMAを上から下へ横切り、現在位置が閉じ、売り位置が開かれる。

2.クロスオーバーは発生しない - ポジションは維持される。

3.FastMAがSlowMAと下から上へ交差する-位置が保持される。

そして、次の月曜日まで。月曜日の間にいろいろなことが起こり、2本のMAが何度もクロスし、価格が下がるかもしれません。

火曜日にFastMAがSlowMAを上から下へクロスし、月曜日ではなく火曜日なので売りポジションは建てず、現在のポジションを決済する、という実装は可能でしょうか(同じ条件です)。

 

閾値を適用することで、その方法がわかったような気がします。

Cross2MAが80、SignalITFが40を返すとします。

オープンするための閾値は50、クローズするための閾値は30とした。

両モジュールの信号が一致した場合、算術平均が60となり、閾値50を上回れば、ポジションが開かれる。

Cross2MAのみがトリガーとなった場合、算術平均が40、30より大きい場合は現在のポジションを クローズし、50より小さい場合は新しいポジションをオープンしないようにします。

そうだろ?

ただし、SignalITFはempty_valueを返す。

 
PeretsCHILI:

閾値を適用することで、その方法がわかったような気がします。

Cross2MAが80、SignalITFが40を返すとします。

オープンするための閾値は50、クローズするための閾値は30とした。

両方のモジュールが信号を出すと、算術平均が閾値50より高い60を返し、ポジションが開かれる。

Cross2MAのみがトリガーとなった場合、算術平均が40、30より大きい場合は現在のポジションを クローズし、50より小さい場合は新しいポジションをオープンしないようにします。

そうだろ?

ただし、SignalITFはempty_valueを返す。


あなたは正しい方向に進んでいますよ :)開閉しきい値の制御は、すべてMQL5 Wizardで生成されたExpert Advisorの入力パラメータを介して行われます。