MQL5 Wizardとトレーディングクラスの標準ライブラリに関する質問 - ページ 10

 
Sevrer:

こんにちは。

私は、純粋に認知のために、独自の信号モジュールを書くことにしました。ある問題に直面しました。注文を保留にしたいのですが、CExpertSignal::OpenLongParams(...)でできることは理解しました。しかし、問題があります。私のテスターでは、「無効な有効期限」という警告が出ています。ソースコードを調べてみると、ORDER_TIME_SPECIFIEDとは 別に、ORDER_TIME_GTCが欲しいのに、どのタイプの時間も取得できないことに気がつきました。

これまでスマートにやってきたが、なかなかうまくいかない。ライブラリの機能を修正しました。

何かアドバイスはありますか?

こんにちは。

まったくその通りです。賞味期限切れゼロは考慮してない。

あなたのソリューションで結構です。標準ライブラリに適切な編集を行います。

ありがとうございます。

 
uncleVic:

こんにちは。

まったくその通りです。賞味期限ゼロは考慮してない。

あなたのソリューションで結構です。標準ライブラリに 適切な編集を行います。

ありがとうございます。

それはそれでいいのですが、とりあえずこの状況下で、私は別の方法、正しい方法を見つけたのです :)CExpertを継承したクラスを作り、そこにCheckOpenLong()とCheckOpenShort()関数をオーバーライドし、そこでこのような修正をしました。

        if (expiration == TimeCurrent() || expiration == 0)
        {
                m_expiration = 0;
                m_trade.SetOrderTypeTime(ORDER_TIME_GTC);
        }
        else
        {
              if(!m_trade.SetOrderExpiration(expiration))
        	{
         		 m_expiration=expiration;
        	}
        }
 
Sevrer:

でもその間に、この状況を打開する別の方法、つまり正しい方法を見つけたんです :)CExpertを継承したクラスを作成し、CheckOpenLong()、CheckOpenShort()関数をオーバーライドし、そこで修正しました。


継承は正しいアプローチです。
 

Expert_EveryTick パラメータのロジックについて教えてください。

Expert_EveryTick=trueの場合、Expert Advisorは1ティックごとに処理するのですか?つまり、新しいティックごとにエントリー/イグジット条件とポジショントラッキング(トロール)をチェックするのですね?

また、Expert_EveryTick=fasleの場合、新しいバーの 最初のティックのみ? そして、トレールも最初のティックのみトリガーされるのでしょうか?

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
mr.Taras:

Expert_EveryTick パラメータのロジックについて教えてください。

Expert_EveryTick=trueの場合、Expert Advisorは1ティックごとに処理するのですか?つまり、新しいティックごとにエントリー/イグジット条件とポジショントラッキング(トロール)をチェックするのですね?

また、Expert_EveryTick=fasleの場合、新しいバーの 最初のティックのみ? そして、トレールも最初のティックのみトリガーされるのでしょうか?


はい、その通りです。
 

Expert Advisorのロジックに関するその他の質問です。


買いなどのオープンポジションと、1などの固定ロットがあります。

相手側に、売れという信号があるのです。

EAは何をするのでしょうか?1ロットずつ2つの取引になるのか(最初の取引は1ロットで終了)、2ロットの1つの取引になるのか?現在の買いの勝ち負けに違いはあるのでしょうか?


買いポジションがあり、再度買いシグナルが出た場合、どのような方法で再定義すれば、クローズさせることができるのでしょうか?

 
mr.Taras:

Expert Advisorのロジックに関するその他の質問です。


1.オープンポジション(例:買い)があり、固定ロット(例:1)がある。

は、相手側に売りというシグナルがあります。

Expert Advisor は、1 ロットの取引を 2 つ開くのか(最初の取引は 1 ロットで終了)、2 ロットの取引を 1 つ開くのか。現在の買いが赤かプラスかで違いがありますか?


2. EAがロングにならない、つまり、買いポジションがあり、再び買いのシグナルがある場合、どのメソッドを再定義すればロングになるのか、CheckOpenLong()?


1.トリガーの閾値が2つある(Expert Advisorの設定)。 Closeの閾値を超えた場合は単にポジションを閉じ、2つの閾値(CloseとOpen)を超えた場合はポジションを反転させる。-/+ 違いはありません。

2.加工方法

 
uncleVic:

1. 2つのトリガー閾値(EA 設定)。Close閾値を超えた場合、ポジションは単に閉じられます。2つの閾値(CloseとOpen)を超えた場合、ポジションは反転します。-/+ 違いはありません。

2.加工方法

CloseとOpenのしきい値は「投票」の結果ですが、シグナルモジュールのShortCondition()やLongCondition()は何を返すのでしょうか?

 
mr.Taras:

CloseとOpenのしきい値は、シグナルモジュールでShortCondition()またはLongCondition()が返すものを「投票」した結果ですか?

閾値は、「投票」の結果を比較するパラメータ(Signal_ThresholdOpen、Signal_ThresholdClose)である。
 

3つの質問です。

  1. シグナルモジュールを始値のみで動作させ、各ティックで動作させない方法は?
  2. 位置追跡モジュールで、信号モジュールの投票値を取得する方法を教えてください。すでに計算されたシグナルでトロールする必要があり、フォローするために別のシグナルモジュールを作る必要はないのです。
  3. 資金・リスク管理 モジュールのアラームモジュールの投票値を取得する方法を教えてください。すでに計算された取引シグナルに従って出来高を開く必要があり、出来高計算のために別のシグナルモジュールを作成する必要はありません。

理論的には、もちろんウィザードを使ってEAを構築し、これらの機能をすべて手動でコードに追加することができます。しかし、これらすべてが標準的なメソッドの形で、つまりウィザードを使いたいダミーのために、例えばある信号モジュールを別のモジュールに置き換えたい場合、コードに入って編集する必要がないように実装されていることが望ましいのです。