スポンサーリンク
ホーム » MQL5でEA作ろう講座 » 【超入門】MQL5 EA講座 第78回「ストップレベルについて」【MT5用EAの作り方】
a

【超入門】MQL5 EA講座 第78回「ストップレベルについて」【MT5用EAの作り方】

MQL5でEA作ろう講座
スポンサーリンク

-<PR>-

※【おススメのMT5MQL5対応のFX業者】

MQL5にて開発した、MT5EAを実運用するにあたり、

当サイトでは以下のFX業者をおススメいたします。

外為ファイネスト

EAの利用制限なし。スキャルピングもOK

外為ファイネストに関する記事はコチラ

アヴァトレードジャパン

自動売買界最狭スプレッド水準

アヴァトレードジャパンに関する記事はコチラ

フィリップ証券

フィリップ証券に関する記事はコチラ

—————————————————————


前回は、OriginalTrade.mqhファイルに、以下の関数を追加しました。

いずれも、ポイントベースの固定SLTP値を算出する為の関数になります。

これで、

  • SLTPを「設定する」為の関数
  • SLTPの値を算出する関数

OriginalTrade.mqhファイルに実装できたことになりますが、SLTPについてはまだ考慮しなくてはいけない事があります。

それが 「ストップレベル」 です。

今回はその、ストップレベルという概念について解説していきたいと思います

スポンサーリンク

ストップレベルとは?

ストップロス(SL)やテイクプロフィット(TP)をポジションに設定する時や、待機注文で新規ポジションを建てようとする時、そのSLTPの値や、待機注文の約定希望価格は「現在のBid値とAsk値から最低限これだけのポイントは離れたところに設定しなくてはいけない」という決まりがあります。

この「現在のBid値やAsk値から最低限離さなくてはいけないポイント」の事をストップレベルと言います。

このストップレベルを守っていない、現在のBid値とAsk値から近すぎる価格は「適切ではない価格(invalid price)」として、エラーが発生する可能性があります。

従って、EAを作る際にはストップレベルに違反しないようなコード記述をプログラム内に組み込む必要があります。

スポンサーリンク

ストップレベル情報の取得方法

ストップレベル情報を取得するには、SymbolInfoInteger関数の第2引数定数SYMBOL_TRADE_STOPS_LEVELを記述します。

取得した値は整数型のポイント単位データになります。このままだと、ストップレベルに違反しない値を求めることはできないので取得したストップレベル定義済み変数の「_Point」を掛け算します。

この処理によって、価格ベースでのストップレベル値が求められます。↓

double stopLevel = SymbolInfoInteger(parSymbol,SYMBOL_TRADE_STOPS_LEVEL) * point;

SymbolInfoInteger関数の詳細については↓の記事をご参照ください

ストップレベル最小値の設定

上記のサンプルコードでは変数「stopLevel」に価格ベースでのストップレベル値が格納されたわけですが、現在のAsk値(SymbolInfoDouble関数を使って取得)を足し合わせればストップレベルに違反しない、以下の注文をする場合のストップレベル最小値が求まります。

  • 買い注文のTP値
  • 売り注文のSL値
  • 買い逆指値注文の約定希望価格
  • 売り指値注文の約定希望価格

↑上記の注文(端的に言えば、現在値よりも上の価格帯を指定する注文)を出す場合は、↓のサンプルコードにおける変数「minStopLevel」に格納された値よりも、上の価格を設定する必要があります。

double minStopLevel = SymbolInfoDouble(parSymbol,SYMBOL_ASK)+stopLevel;

変数「minStopLevel」に格納されている値より下の価格帯で値を設置した場合、リターンコードTRADE_RETCODE_INVALID_STOPS(リクエスト内の無効なストップ)が返されます。

※買い逆指値注文については→のORDER_TYPE_BUY_STOPリンクをご覧ください。

※売り指値注文については→のORDER_TYPE_SELL_LIMITリンクをご覧ください。

ストップレベル最大値の設定

一方、逆に現在のBid値(Askと同様にSymbolInfoDouble関数を使って取得)から、変数「stopLevel」に格納された価格ベースでのストップレベル値を引くと以下の注文におけるストップレベル最大値が求まります。↓

  • 買い注文のSL値
  • 売り注文のTP値
  • 売り逆指値注文の約定希望価格
  • 買い指値注文の約定希望価格

↑上記の注文を出す場合(現在値よりも下の価格帯を指定する注文)は、↓のサンプルコードにおける変数「maxStopLevel」に格納された値よりも、下の価格を設定する必要があります。

double maxStopLevel= SymbolInfoDouble(parSymbol,SYMBOL_BID)-stopLevel;

変数「maxStopLevel」より上の価格帯で値を設置した場合、リターンコードTRADE_RETCODE_INVALID_STOPS(リクエスト内の無効なストップ)が返されます。

※売り逆指値注文については→のORDER_TYPE_SELL_STOPリンクをご覧ください。

※買い指値注文については→のORDER_TYPE_BUY_LIMITリンクをご覧ください。

スポンサーリンク

ストップレベル情報を使ったコード例

ストップレベル最小値ストップレベル最大値の取得・算出方法が分かれば、後は自身が設定するSLやTP、待機注文の約定希望価格と比較して、ストップレベルに引っかからないような価格になっていないかチェックする記述を行います。例えば↓のような形です。

double stopLevel = SymbolInfoInteger(parSymbol,SYMBOL_TRADE_STOPS_LEVEL) * point;
double minStopLevel = SymbolInfoDouble(parSymbol,SYMBOL_ASK)+stopLevel;

if(request.price<=minStopLevel)
{
 Print("ストップレベルに違反しています");
}

仮に、request.Priceに買い逆指値の待機注文による価格がセットされていたとして、その価格が変数「minStopLevel」に格納されている値より大きいかどうかif文の()でチェックしています。

もしrequest.Priceに設定されている価格の方が変数「minStopLevel」の値より小さければストップレベルに違反していることになりますから、それをPrint関数によってログ出力する・・・という流れです。

※request.Price については→コチラをご覧ください。

スポンサーリンク

まとめ

今回はストップレベルについての概略をお伝えしました。

次回からは、今回のストップレベルに関する話を踏まえて

を実装していく予定です。

今回は一旦以上になります。

最後までお読みいただきありがとうございました。<m(__)m>

【超入門】MQL5 EA講座 第77回「固定SLTPを計算する関数を実装する」

MQL5 EA講座 第79回「注文価格がストップレベルに違反していないかをチェックする関数」

—————————————————————

-<PR>-

※【おススメのMT5MQL5対応のFX業者】

MQL5を使って自作したEAシステムトレードに利用するには、取引プラットフォームとしてMT5を提供しているFX会社に口座を開設しなくてはいけません。

当サイトでは以下のFX会社での口座開設・EA運用をおススメしています。

おススメする理由の詳細につきましては、各FX会社について解説する記事を書いておりますので、下記のリンク記事を参考にしていただければと思います。


外為ファイネスト

EAの利用制限なし。スキャルピングもOK

外為ファイネストに関する記事は↓をご覧ください。

アヴァトレードジャパン

自動売買界最狭スプレッド水準

アヴァトレードジャパンに関する記事は↓をご覧ください。

フィリップ証券

フィリップ証券に関する記事は↓をご覧ください。

スポンサーリンク
MQL5でEA作ろう講座
スポンサーリンク
シェアする
エムキューエルをフォローする
スポンサーリンク
【超入門】MQL5 でEAを作ろうブログ

コメント

タイトルとURLをコピーしました