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

トレーリングストップ

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

というのも、サンプルEA「MACD Sample.mq4」には、最初から「トレーリングストップ」が実装されているので、これを利用します。

 

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

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

 

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

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

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

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

 

MetaEditor の起動

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

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

メタエディター起動

 

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

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

MACDサンプル起動

 

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

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

 

外部パラメーター「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関数は、保有中や待機中の注文を修正する関数で、正常に終了した場合はtrue、失敗した場合はfalseを返します。

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のはじめ方~ヒストリカルデータ取得からバックテストのやり方~
サンプルEAを使ったバックテストのやり方を解説します。「最大バー数の設定」と「ヒストリカルデータの取得」を行ってから「バックテスト」をする、という流れです。難しそうに見えるかもしれませんが、ほんとに簡単ですから、ぜひ挑戦してみましょう。

 

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

トレーリングストップ確認

 

まとめ

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

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

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

 

もっと本格的にMQL言語を使いこなしたいなら、この書籍がおすすめです。私もこの本で勉強しました。

FXメタトレーダー入門―最先端システムトレードソフト使いこなし術 (現代の錬金術師シリーズ 56)


おすすめFX業者とVPSサービス

もしあなたがMT4のリアル口座を検討中なら『XM』がおすすめです。『XM』は、豊富な入出金方法、24時間日本語サポート、レバレッジ888倍、お得なボーナスなどで、日本人の口座開設数No.1の海外FX業者です。スマホ・PC・Macすべて同じMT4口座で取引できます。


もしあなたがMT4をVPS稼働しようとお考えなら、このMT4専用VPSがおすすめです。初期費用0円なので気楽に試してみませんか♪

MQL言語入門

●免責及び注意事項●
当サイトの全てのコンテンツは管理人自身による情報の提供を目的としており、投資行動を勧誘・助言するものではありません。
当サイトに掲載している全ての情報について、その正確性、完全性、有用性等について保証するものではありません。
個々の取引において生じたいかなる損失について、当サイトの管理人は一切の責任を負いかねます。
取引にあたっては、FXという金融商品のリスクを十分に理解した上で、ご自身の判断と責任でなさるようお願いいたします。
当サイトの記載内容は、予告なしに変更することがあります。

Startup!

コメント

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