見出し画像

【mql】押し目をmqlコードで表現する方法(エントリー画像あり)

本noteでは、mqlで押し目を書いてみましたのでご紹介します。
EAやインジケーターを開発している方に役立てば幸いです。

押し目といっても、現在足ベースで見たい時確定足ベースで見たい時の2つがあると思いますが、この2つの切替は簡単ですのでどちらもご紹介します。

ちなみに、私は押し目を
注文時は確定足ベースで
決済時は現在足ベースで

それぞれ見るように使い分けることが多いです。

ダマシを避けてしっかりと条件が揃ったことを確認した上で注文し、なるべく早く決済したいためです。

また、押し目の判断には、移動平均線やボリンジャーバンドなどのインジケーターを併用するケースが多いと思います(というかそれしかない?)が、今回はRSIを使って押し目をご紹介したいと思います。

使い方

注文や決済、注文変更の条件部分に本コードを追加してください。

問合せ

ご質問・ご意見は以下メールアドレスへお気軽にご連絡下さい。
gabrielfx2100@gmail.com

公式LINEの友達追加はコチラ
(ガブリエルのFX事情を配信中です)

コード紹介

例として、RSI(14)の20ラインで押し目買いするコードを紹介します。

<現在足ベース(shift=0)で見た場合のコード>

//+------------------------------------------------------------------+
//|定義                                                               |
//+------------------------------------------------------------------+
bool UnderFlg=false;//RSI(14)が20を下回ったらtrueに変更する
bool TradeFlg=false;//trueの時トレードする
int BarsNow=0;
//+------------------------------------------------------------------+
//|initとdeinit                                                      |
//+------------------------------------------------------------------+
void init()return;
int deinit()return(0);
//+------------------------------------------------------------------+
//|OnTick                                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
   //RSI定義(現在足ベースはshift=0で定義)
   double RSI=iRSI(Symbol(),0,14,PRICE_CLOSE,0);

   //押し目の前提条件:RSIが20を下回る
   if(RSI<20)UnderFlg=true;

   //押し目
   if(UnderFlg==true && RSI>=20)
     {
      TradeFlg=true;//トレードフラグをtrueに変更
      UnderFlg=false;//初期化
     }

  //買い注文
   if(TradeFlg==true)
     {
    TradeFlg=false;//初期化
       
       //同じ足で2度エントリー防止
       if(BarsNow!=Bars)
       {

         /* ここにOrderSend関数を記載 */
         
         
         BarsNow=Bars;//足数
       }
     }
   }

現在足ベース(shift=0)で見るエントリーの様子>
2本の赤縦線がエントリー足です。
※左側のエントリーは、足が確定する前にRSIが20になった瞬間があったためエントリーしています。


<確定足ベース(shift=1)で見た場合のコード

//+------------------------------------------------------------------+
//|定義                                                               |
//+------------------------------------------------------------------+
bool UnderFlg=false;//RSI(14)が20を下回ったらtrueに変更する
bool TradeFlg=false;//trueの時トレードする
int BarsNow=0;
//+------------------------------------------------------------------+
//|initとdeinit                                                      |
//+------------------------------------------------------------------+
void init()return;
int deinit()return(0);
//+------------------------------------------------------------------+
//|OnTick                                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
   //RSI定義(現在足ベースはshift=0で定義)
   double RSI=iRSI(Symbol(),0,14,PRICE_CLOSE,1);

   //押し目の前提条件:RSIが20を下回る
   if(RSI<20)UnderFlg=true;

   //押し目
   if(UnderFlg==true && RSI>=20)
     {
      TradeFlg=true;//トレードフラグをtrueに変更
      UnderFlg=false;//初期化
     }

  //買い注文
   if(TradeFlg==true)
     {
    TradeFlg=false;//初期化
       
       //同じ足で2度エントリー防止
       if(BarsNow!=Bars)
       {

         /* ここにOrderSend関数を記載 */
         
         
         BarsNow=Bars;//足数
       }
     }
   }

確定足ベース(shift=1)で見るエントリーの様子>
赤縦線がエントリー足です。


以上、ご購読いただきありがとうございました。

ご質問・ご意見は以下メールアドレスへお気軽にご連絡下さい。
gabrielfx2100@gmail.com

公式LINEの友達追加はコチラ
(ガブリエルのFX事情を配信中です)

記事をご覧いただきありがとうございます。 皆様のサポートが次の記事を書くモチベーションに繋がっています! もしよろしければサポートしていただけると嬉しいです!