私たちのファンページに参加してください
- ビュー:
- 1478
- 評価:
- パブリッシュ済み:
- 2016.10.15 19:20
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
現在のエキスパートアドバイザーは CExpertクラスの拡張に基づいて売買(あるいはその両方)のポジションを開くことのみを選択することができます。
2つの異なるファイルが用意されています。
- LongShortExpertModified.mqh:このクラスはデフォルトのCExpertを拡張し、望まれた注文のみを出すためにCheckOpen()とCheckReverse()メソッドが修正します。
- LongShortExpertMACD.mq5:このEAは、入力パラメータに応じて希望された注文タイプのみを可能にするために開発され修正されたエキスパートを含んだ、組み込まれたExpertMACD.mq5クラスの単純なバリアントで、エキスパートの使用を明確にするために用意されています。
LongShortExpertModified
このクラスはデフォルトのCExpertクラスの動作を修正し、次の列挙体に応じて一定のタイプの注文のみを許可します。
enum ENUM_AVAILABLE_POSITIONS
{
LONG_POSITION,
SHORT_POSITION,
BOTH_POSITION
};
この列挙型は、注文の種類が許可されるかを決定するために必要な最終的なEAの入力パラメータとして使用され、望まれた注文のみを出し両方のポジションタイプが許可されている場合(BOTH_POSITION列挙値)にのみ注文の反転を処理するために内部的に使用されます。<分節0708>
これにはCheckOpen()とCheckReverse()メソッドが書き直されています。
class CLongShortExpertModified : public CExpert { protected: ENUM_AVAILABLE_POSITIONS m_positions; public: CLongShortExpertModified(void); ~CLongShortExpertModified(void); virtual bool CheckOpen(void); virtual bool CheckReverse(void); void SetAvailablePositions(ENUM_AVAILABLE_POSITIONS newValue){m_positions=newValue;}; };
CheckOpen() はm_positions値に応じて買いポジションか売りポジションのみをチェックするように修正されています。
bool CLongShortExpertModified :: CheckOpen() { switch(m_positions) { case LONG_POSITION: return CheckOpenLong(); // 買いポジションのみをチェックする case SHORT_POSITION: return CheckOpenShort(); // 新しい売りポジションのみをチェックする default: return CExpert::CheckOpen(); // デフォルトの動作 } }
CheckReverse() は両ポジションタイプが許可されているときのみポジションの反転をチェックするように修正されています。
bool CLongShortExpertModified::CheckReverse() { switch(m_positions) { case LONG_POSITION: case SHORT_POSITION: return false; // 反転は許可されていない default: return CExpert::CheckReverse(); // デフォルトの動作 } }
LongShortExpertMACD
このクラスは、MQL5ディストリビューションに含まれるデフォルトExpertMACD EAに基づいて、前のクラスを使用する特定のEAの例を提供します。
まず、具体的なエキスパートクラスが含まれていて、かつ対応する入力パラメータが追加される必要があります。また、外部のエキスパートがデフォルトのCExpertの代わりにサブクラスに関連付けられます。
#include <Expert\LongShortExpertModified.mqh> //[...] input ENUM_AVAILABLE_POSITIONS Inp_Allowed_Positions=BOTH_POSITION; // 買/売/両方のポジションが許可される //[...] CLongShortExpertModified ExtExpert; // 特別にデザインされたCExpertサブクラス
エキスパートの初期化後、パラメータが入力された値に応じて設定される必要があります。
if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber)) { //--- 失敗した printf(__FUNCTION__+": error initializing expert"); ExtExpert.Deinit(); return(-1); } // どちらのポジションが許可されているかを制御する特定のパラメータ< ExtExpert.SetAvailablePositions(Inp_Allowed_Positions);
追加の変更は必要ありません。次の図は、エキスパートの設定パラメータを示しています。
MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/1896

コメンテーター指標はテクニカル指標のグループを分析し、現在の市場の状態に関する情報と取引に関する推奨を表示します。

市場が開いているときを示す単純な指標。