Вы не знаете, как устроены торговые классы, и пугаетесь слов "Объектно-ориентированное программирование"? На самом деле вовсе не обязательно всё это знать, чтобы написать свой собственный модуль торговых сигналов - достаточно следовать простым правилам. Всё остальное сделает Мастер MQL5, и вы получите готовый торговый робот!
//+------------------------------------------------------------------+//| Long position open or limit/stop order set |//+------------------------------------------------------------------+bool CExpert::OpenLong(double price,double sl,double tp)
{
if(price==EMPTY_VALUE) return(false);
//--- get lot for opendouble lot=LotOpenLong(price,sl);
//--- check lot for openif(lot==0.0) return(false);
//---return(m_trade.Buy(lot,price,sl,tp));
}
//+------------------------------------------------------------------+//| Short position open or limit/stop order set |//+------------------------------------------------------------------+bool CExpert::OpenShort(double price,double sl,double tp)
{
if(price==EMPTY_VALUE) return(false);
//--- get lot for opendouble lot=LotOpenShort(price,sl);
//--- check lot for openif(lot==0.0) return(false);
//---return(m_trade.Sell(lot,price,sl,tp));
}
felidae:
Нет, всё в порядке, просто я дал случайно свою ссылку. Ваша должна быть по идее такая: https://www.mql5.com/ru/users/vik1991/accounting/chooseout
返信ありがとうございます。収益を上げる方法、あるいは需要が増えるのを待つしかないのでしょうか?
MQL5ウィザードをベースにしたEAで、ポジションを増やす(リフィルする)方法を教えてください。
virtual int LongCondition();
virtual int ShortCondition();
以下の記事を参考に、ロボットを書いてみました。
https://www.mql5.com/ru/articles/367"Create a trading robot in 6 steps" で問題なく動作していますが、ポジションサイズに影響を与えようとすると
(の状態を繰り返し発生させることで、(それが増えるか減るかは)、例えば
LongCondition()です。
すでにオープンしているポジションは変更されず、sl , tpのトリガー時にのみ削除されます。
MQL5 Wizardは、マルチインディケーターEAの「構築」、slトラッキングモジュールの変更、マネーマネジメントモジュールの変更などを素早く簡単に行うことができ、気に入っています。
しかし、私の試みは、ある指標でトレンドが確認されると最小限のポジションを開き、別の指標でトレンドが確認されるとポジションを増やす(増やす)EAを書くことである
既にオープンしているポジションが、LongCondition() などでオープンのシグナルを再発行しても変更されないという、以前説明した問題に遭遇しました。
FXツールだけ残しておきたい、コードは問題なく動作する
しかし、テスターで実行するとすぐに次の機器の履歴をロードしてしまい、ロードできません。 テスターで無効にするにはどうすればよいのでしょうか?
2013.04.04 14:09:21 Core 1 GBOTEURUSD17DEC2012: 履歴の同期が開始されました。
MQL5ウィザードをベースにしたEAで、ポジションを増やす(リフィルする)方法を教えてください。
残念ながら、おっしゃるようなケースは、ここ(フォーラム内)では「改善」の範疇に入ります。
この問題を解決するには、Expert Advisorの動作を変更する必要があります。そのためには
1.CExpert クラスを 継承した新しいクラス(例えば CMyExpert)を作成する必要があります。
2.その中のProcessingメソッドを再読み込みし、動作を変更する。
3.Expert Advisor のソースコードにあるインクルードファイルを(手動で)置き換える。
#include <Expert\Expert.mqh>
まで
#include <Expert\MyExpert.mqh>
4.Expert Advisor のソースコード内のクラス名を(手動で)置き換えます。
まで
授業例を添付します。未決済のポジションがあり、それに対する操作がない場合のメソッドからの退出がコメントされています(53行目)。
ウィザードでExpert Advisorを「再生」するたびに、3.と4.を忘れずに行ってください。
PS ご不明な点があれば、ご連絡ください。
残念ながら、あなたのおっしゃるケースは、ここ(フォーラム)でいうところの「ファインチューニング」の範疇に入るものです。
問題を解決するためには、専門家の行動を変える必要があります。そのためには
1.CExpert クラスを 継承した新しいクラス(例えば CMyExpert)を作成する必要があります。
2.その中のProcessingメソッドを再読み込みし、動作を変更する。
3.Expert Advisor のソースコードにあるインクルードファイルを(手動で)置き換える。
まで
4.Expert Advisor のソースコード内のクラス名を(手動で)置き換えます。
まで
クラス例を添付します。未決済のポジションがあり、それに対する操作がない場合のメソッドからの終了がコメントアウトされています(53行目)。
ウィザードでExpert Advisorを「再生」するたびに、手順3および4を忘れずに行ってください。
PS ご不明な点があれば、お気軽にお問い合わせください。
ありがとうございました!すべてうまくいきました。他の指標でトレンドが確認されると、同じボリュームが追加されます。
さて、もう一つ質問があります。"add "のサイズを変更することは可能でしょうか?例えば、資金管理モジュールの標準ポジションサイズは0.1ですが、Expert Advisorで計算した0.3や0.35などを追加(「加算」)したいのです。
LongCondition() サブルーチンからトレードモジュールに「リフィル」サイズを渡すには?
ありがとうございました!うまくいきました。他のインディケータからのトレンド確認で同じ音量を追加する。
さて、もう一つ質問があるのですが、「シェア」のサイズを変更することは可能でしょうか?例えば、資金管理モジュールの標準ポジションサイズは0.1ですが、Expert Advisorで計算した0.3や0.35などを追加(「加算」)したいのです。
LongCondition() サブルーチンからトレードモジュールに「リフィル」サイズを渡すには?
CExpertクラスは、メソッドを持ちます。
クラスでオーバーロードし(Processingと同様)、ロット判定アルゴリズムを変更する。
CExpertクラスは、メソッドを持ちます。
クラスでオーバーロードし(Processingと同様)、ロット検出アルゴリズムを変更する。
始値で 動くというインジケーターがあります
コード