2018年3月20日火曜日

(FX)ボリンジャーバンドの2α~3αタッチ監視・アラート(検証中プログラムソース有)

私のFX戦略(最近20pipsくらいは取れている)

でも書いたように、4時間足の移動平均線(5EMA)からの乖離を基本的に狙うようにしている。

4時間足でボリンジャーバンドの2α~3αにタッチするということは、直近の値動きからして、かなりの異常事態だから逆張りタイミング、というもの。

(ちなみに平均線からの乖離は、有名な投資家のBNFが使っていた手法と聞いた気がする)

これを自動で監視・アラートをメールなどで出せないかと試行錯誤してプログラムもしてみた。
(プログラムのソースコードは一番下に貼り付けておく)

しかし、致命的な問題だったのは、アラートがチャートのローソクが確定してから出るので、どんなにプログラムが正しくても、4時間足だと何時間も前にエントリータイミングが出ているのに遅れてアラートが出てくること
(´・ω・`)


ならば、もっと短い時間足で各インジケーター(平均線やボリンジャーバンドなど)の設定を変えれば、ローソクもこまめに確定するので、エントリータイミングをもっと早く捉えられるのでは?と考えた。

試しに1時間足を出して4時間で3αにタッチしたところを比較したら、当然ながら1時間足のほうは全く世界が違う。

(白い丸が3αタッチ、赤いは乖離狙いのイメージ)


ブログに書いているクセにまだ明快な解決策が出ていない(´・ω・`)

あと、載せるのも恥ずかしいくらいのMQLのプログラムソースも記録で貼っておこうかな。

ネットや本を見ながら適当に切り貼りして作ったので、MQLを本格的にいじっている人からすると、笑ってしまうレベルだと思う。

一度夢中で組んで、しばらく放っておいたから、パラメーターの細かい意味とかを忘れてしまった。

プログラマーとしては、しつこいくらいコメントを残しておいて、誰が見てもすぐ分かるようにしておかないといけないんだけどね。

誰もやらないと思うけど、責任取れないので、これで運用だけはしないでくださいw

似たようなことを考えてMQLを組んでいる人がいれば、「こんなことをやりたいのかな?w」程度に参考にしてください(´・ω・`)

------------------------------------------------------
//+------------------------------------------------------------------+
//|                                                   bb_MA_v0.1.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Project"
#property link      "https://www.mql5.com"
#property version   "0.1"
#property strict
#define MAGIC 20171207
   double upper3;
   double lower3;
int BuyCount  = 0;
int SellCount = 0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   double upper3;
   double lower3;
   BuyCount  = 0;
   SellCount = 0;
//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
//ボリンジャーバンドの値を取得  
   upper3=iBands(NULL,0,13,3,0,PRICE_CLOSE,MODE_UPPER,0); //MODE_UPPER上位線
   lower3=iBands(NULL,0,13,3,0,PRICE_CLOSE,MODE_LOWER,0); //MODE_LOWER下位線
//エントリー
   if(Ask < lower3)
   {
      // ポジションが無ければ買う
      if(OrdersTotal() < 1)
      {
      OrderSend(Symbol(),OP_BUY,1,Ask,10,Ask-500*Point,Ask+300*Point,NULL,1212,0,Blue);
      }
   }
  
   if(Bid > upper3)
   {
      // ポジションが無ければ売る
      if(OrdersTotal() < 1)
      {
      OrderSend(Symbol(),OP_SELL,1,Bid,10,Ask+500*Point,Ask-300*Point,NULL,1212,0,Red);
      }
   }
//決済
   for(int i=0; i<OrdersTotal(); i++)
   {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
        ==false) break;
//    if (OrderMagicNumber() !=MAGIC || OrderSymbol()
//        !=Symbol()) continue;
    if (OrderType()==OP_BUY)
    {
      if(Ask >= iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0))   // 買値>EMA
      {
      OrderClose(OrderTicket(),OrderLots(),Bid,10,White); //売り決済
      }
    } 
    if (OrderType()==OP_SELL)
    {
      if(Ask <= iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0))  // 買値<EMA
      {
      OrderClose(OrderTicket(),OrderLots(),Ask,10,White);  //買い決済
      }
    } 
   }
  }
//+------------------------------------------------------------------+

0 件のコメント:

コメントを投稿

今年のNISA枠を全て使い高配当株を購入

3284 フージャーズHD 300株 8007 高島 300株 8141 新光商事 300株 8707 岩井コスモホールディングス 300株 8931 和田興産 100株 9856 ケーユーホールディングス 500株 を購入しました。 いずれも配当率は5%くらいです。 PER10...