MQL言語入門|自作EAに簡単に実装できるトレーリングストップ

 

この記事では、MQL言語入門として、MT4のサンプルEA「MACD Sample.mq4」を使って「トレーリングストップ」のソースコードを解説します。

仕組みさえわかれば、自作EAに簡単に実装できます。

ぜひあなたの勝てるEA作りに役立ててください。

 

トレーリングストップとは

トレーリングストップとは、価格の動きにロスカットラインを追跡させていく投資手法のことです。

例えば、買いポジションの場合は価格の上昇に合わせてロスカットラインを引き上げ、売りポジションの場合は価格の下落に合わせてロスカットラインを引き下げていきます。

トレーリングストップは、損失を抑えつつ、利益を伸ばせる有効な手仕舞い方法として人気があります。

 

MetaEditor の起動

「MACD Sample.mq4」に実装されているトレーリングストップのソースコードを解説していきます。

MT4の「メタクォーツ言語エディタ」をクリックします。

 

 

MeTaEditorが立ち上がったら、画面左側の「Navigater」内のツリーから「Experts」をダブルクリックします。

「Experts」のツリーから「MACD Sample.mq4」をダブルクリックすると、ソースコードが開きます。

 

 

トレーリングストップのソースコード

それでは、いよいよソースコードをみていきます。

 

外部パラメーター「TrailingStop」の宣言

11行目では、パラメーター「TrailingStop」を宣言しています。

input double TrailingStop =30;

トレーリングストップのトレール幅を30ポイントと設定しています。

買いポジションの場合なら、価格が上昇したら、その上昇した価格の30ポイント下にロスカットラインを引き上げてついていきます。

 

買いポジションのトレーリングストップ発動条件

109行目からは、買いポジションを構えている場合のトレーリングストップの発動条件を3つ設定しています。

//--- check for trailing stop
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{

発動条件の内容は以下のとおりです。

  • パラメーター「TrailingStop」でトレール幅を設定していること
  • 現在の買値(Bid)から建値(OrderOpenPrice)を差し引いた値が、トレール幅よりも大きいこと
  • 逆指値(OrderStopLoss)が、現在の買値(Bid)からトレール幅を差し引いた値よりも小さいこと

 

ストップロスオーダーの変更

116行目からは、トレーリングストップを発動させるOrderModify関数を記述しています。

//--- modify order and exit
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
Print("OrderModify error ",GetLastError());
return;

OrderModify関数は、現在選択中の注文を変更します。

3つの発動条件を満たしたら、逆指値(OrderStopLoss)を、現在の買値(Bid)からトレール幅を差し引いた値に変更します。

 

売りポジションのトレーリングストップ発動条件

135行目からは、売りポジションを構えている場合のトレーリングストップの発動条件を3つ設定しています。

//--- check for trailing stop
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{

発動条件の内容は以下のとおりです。

  • パラメーター「TrailingStop」でトレール幅を設定していること
  • 建値(OrderOpenPrice)から現在の売値(Ask)を差し引いた値が、トレール幅よりも大きいこと
  • 逆指値(OrderStopLoss)が、現在の売値(Ask)にトレール幅を加えた値よりも大きいこと、または逆指値注文が設定されていないこと

 

ストップロスオーダーの変更

142行目からは、トレーリングストップを発動させるOrderModify関数を記述しています。

//--- modify order and exit
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
Print("OrderModify error ",GetLastError());
return;

3つの発動条件を満たしたら、逆指値(OrderStopLoss)を、現在の売値(Ask)に設定したトレール幅を加えた値に変更します。

 

ソースコードの解説は以上です。

 

バックテスト

トレーリングストップがちゃんと機能しているか、バックテストで確認してみましょう。
バックテストのやり方は別記事にまとめています。

MT4のはじめ方②~ヒストリカルデータ取得からバックテストのやり方~
MT4の初心者の方を対象に、「最大バー数の設定」と「ヒストリカルデータの取得」を行ってから、サンプルEAを走らせて「バックテスト」をする、という流れです。難しそうに見えるかもしれませんが、ものすごく簡単ですから、ぜひ挑戦してみてください。

 

バックテストが終わったら、テスターの「結果」タブを開いてください。
取引種別が「modify」の行を見てみると、決済逆指値(S/L)の値が変化しているはずです。
価格の動きにトレーリングストップが機能し、ロスカットラインが追跡していっているのです。

 

 

まとめ

MQL言語入門として、サンプルEA「MACD Sample.mq4」を使ってトレーリングストップのソースコードを解説しました。

仕組みさえわかれば、自作EAに簡単に実装できるようになります。

ぜひあなたの勝てるEA作りに役立ててください。

 

☆MQL言語入門まとめ☆

【保存版】MQL言語入門まとめ~EA自作への道~
せっかくMT4を使うなら、オリジナルのEAやインジケーターを自作してみませんか。「プログラミングなんて自分にはとても無理だ」と思うかもしれませんが、そんなことありません。最低限知っておくべきことさえ押さえておけば、簡単にできますから。

 

もし、あなたが本格的にMQL言語を使いこなしたいと考えているなら、以下の書籍がおすすめです。

FXメタトレーダー実践プログラミング (現代の錬金術師シリーズ)

もしあなたが、MT4をリアル口座で稼働しようと考えているなら、XMTradingがおすすめです。
XMは、海外FX業者の中で、日本人による口座開設数No.1、豊富な入出金方法、24時間対応の日本語サポートなどにより、日本人でも安心して利用できます。

XMの口座開設はこちらから

MT4でシストレ
Startup!

コメント