記事"MQL5ウィザード:トレーディングシグナル用モジュール作成方法"についてのディスカッション - ページ 4

 

LongConditionとShortConditionを使って、反対のポジションをオープンすることなく、オープンだけでなくクローズする方法を教えてください。例えば、オープンのシグナルしきい値=30、クローズのシグナルしきい値=70とします。

条件1が実行されたときにロングをオープンし、条件2が実行されたときにポジションをクローズ したい。この場合、LongConditionとShortConditionはどのような値を返すべきでしょうか?

LongConditionとShortConditionの戻り値を制御するだけでは不十分な場合、どのようにすればよいでしょうか?シグナルは1つしか使っていないものとします。

ありがとうございました。

 

こんにちは、

記事のすべてのステップに従いましたが、うまくいきませんでした。

シグナルを "samplesignal.mqh "に保存した。

でもメタエディターで認識されない。記事にある添付ファイルでも同じことを試しましたが、変化はありませんでした...。


現在のメタエディタのバージョンは5.00 Build 567です。


何かアイデアはありますか?


ありがとうマリオ

 

記事に添付されたファイルを使用すると、何かが間違っています。

Typeに関するコメントは以下のようになっているはずです:

//| Type=SignalAdvanced                                          |

 
yankai0219:

記事に添付されたファイルを使用すると、何かが間違っています。

Typeに関するコメントは以下のようになっているはずです:

//| Type=SignalAdvanced                                          |

6つのステップで独自のトレーディング・ロボットを作成する」の 記事で読むことができます!
 

皆さん、こんにちは、

この記事からシグナルをダウンロードし、ウィザードを使用してMQ5を作成しましたが、EAが取引を行いません。何かアイデアはありますか?

シグナルがリストに表示されるようにするには、上記のコメントにある変更を加える必要がありました。ストラテジーテスターで EAを動かしても何もできません :(

編集: すべてのCSampleSignalクラス関数とCExpertSignalクラス関数にprintステートメントを挿入したところ、継承された関数がCSampleSignal関数によって上書きされていないように見えます。

すなわち、この例では、これらが実行される代わりに

class CSampleSignal : public CExpertSignal
  {
	 bool CSampleSignal::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration);
	 bool CSampleSignal::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration);

つまり、この例では、これらの関数が実行される代わりに、以下の関数が実行されます:

class CExpertSignal : public CExpertBase
  {
	 virtual bool     CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration);
	 virtual bool     CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration);

これは意味があるのでしょうか?親クラスの関数が実行されているのに、子クラスでは上書きされている。助けていただけると助かります!

 
trolley:

皆さん、こんにちは、

この記事からシグナルをダウンロードし、ウィザードを使用してMQ5を作成しましたが、EAが取引を行いません。何かアイデアはありますか?

シグナルがリストに表示されるようにするには、上記のコメントにある変更を加える必要がありました。ストラテジーテスターでEAを動かしても何もできません :(

編集: すべてのCSampleSignalクラス関数とCExpertSignalクラス関数にprintステートメントを挿入したところ、継承された関数がCSampleSignal関数によって上書きされていないように見えます。

すなわち、この例では、これらが実行される代わりに

つまり、この例では、これらの関数が実行される代わりに、以下の関数が実行されます:

これは意味があるのでしょうか?親クラスの関数が実行されているのに、子クラスでは上書きされている。助けていただけると助かります!

こんにちは、トロリー、

私も同じ問題を抱えています。何か解決策やアイデアは見つかりましたか?

ありがとう

 

こんにちは、

エキスパートアドバイザーはMQL5ウィザードに基づいて書かれており、ポジションは以下の方法でオープンされます。

virtual int LongCondition();
virtual int ShortCondition();

私は記事の推奨に従ってロボットを書いた。

https://www.mql5.com/ja/articles/367"Create a trading robot in 6 steps"(6つのステップで取引ロボットを作成する)の推奨に従ってロボットを作成した。

(で条件を繰り返し生成することで、ポジションサイズに影響を与えようとします。

LongCondition();

を実行しても、すでにオープンしているポジションは変更されず、クローズ条件を実行するか、sl , tpをトリガーすることによってのみ削除することができます。

私はMQL5ウィザードが好きです。マルチインディケーターエキスパートアドバイザーを簡単かつ迅速に「構築」し、slトラッキングモジュールを変更し、資金管理モジュールを変更することができます。

しかし、私の試みは、あるインジケーターで条件が形成されたときに最小ポジションをオープンし、別のインジケーターでトレンドが確認されたときにポジションを増やす(埋める)Expert Advisorを書くことでした。

例えば、LongCondition()などで再度ポジションを建てるシグナルが出ても、すでに建てたポジションが変更されないのです;

ありがとうございました。

Создай торговый робот за 6 шагов!
Создай торговый робот за 6 шагов!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
 
記事のファイルがウィザードに表示されません。
 
thejobber:
記事のファイルがウィザードに表示されません。

コメント中の

//| タイプ=シグナル

//|| を //| Type=SignalAdvanced に書き換える必要があります。

その後、私のマスターはシグナルを見るようになりました。

 
ダウンロードし、ウィザードで生成し、テスターで実行してみましたが、動きません。samplesignalのCheckOpenLong/Short()メソッドにさえアクセスしません。これらはExpertSignalでは呼び出されますが、SampleSignalでは呼び出されません。これらを確実にオーバーライドするには、他に何をすればよいでしょうか?