2016年11月28日月曜日

[ハーモニック]現在のEURUSDとUSDJPYのハーモニック


トランプ相場がだんだんと落ち着いてきて、ハーモニックが出やすい状況になりつつあります。

USDJPYは、前回の5-0パターンからのさらなる上げを演出していましたが、今回はどうなるでしょう
か?

■USDJPY 2016/11/28 18:00

USDJPYは買いハモが出ていますね。RCI的にもシグナルが出ています。

■EURUSD 2016/11/28 18:00


EURUSDも売りハモが出ています。RCIでも売りタイミングとなっています。

ちなみに、稼働中のGewinn8(EURUSD)は、この状況では追撃買い判定をして買い玉をためています。

さて、どちらが正解となるでしょうか?

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年11月22日火曜日

[Gewinn8]現在の成績 などなど近況

お久しぶりです。

手元の仕事が、やっと一山超えました。
まだ残っていますが、まぁ大きなところは終わった感じがあります。

ちょっとずつ、ブログ記事も書いていきたいなぁ。

さて、仕事の最中、ずーーーーっと放置していたGewinn8のリアル運用ですが、大きく負けることもなく、とりあえず+圏は維持していたようです。

OANDA プロ口座

初期導入額10万円
現在の口座残高、11,876円

取引の詳細は、こちらをご覧ください。

 | fx-on.com


ここしばらくは勝ったり負けたりですね。

OANDAのデモ口座で動いているFX-ONは、まだマイナス圏から脱出していません。
Tick数に由来するのが原因ですが、デモに合わせるのもあほらしいので、もう放置です。

変化率分散、フラクタルトレンドラインを利用したトレンドフォロー型EA
Gewinn8 EURUSD
Gewinn8(EURUSD)


このまま進めば年利10%ぐらいですね。
定期預金よりは、いい感じですし、インデックス運用ぐらいの効果は出ていそうです。

また、全然ブログを更新していないのにも関わらず、ハーモニックパターン検出インジケータもちょくちょくとご購入いただており大変ありがとうございます。

皆様のコメントもモチベーションの維持に大変助かっていますので、これからも応援よろしくお願いいたします。

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年10月7日金曜日

[MT4インジケータ]矢印表示機能付きRCI

ハーモニックパターントレードと一緒にタイミングを計るために使っている矢印表示機能付きRCIです。



詳細は次の記事をご覧ください。

ハーモニックパターン トレード手法 RCIと組み合わせてタイミングを計る(研究中です)
http://mt4program.blogspot.jp/2016/07/rci.html

ぱたぱた忙しいので、ソースコードだけとりあえず公開します。
そのうちFX-ONにビルドファイルアップします。
RCI(8)が±60のラインをまたいだときに矢印が出るように初期値ではなっています。



//------------------------------------------------------------------
// RCI矢印

#property copyright "Copyright 2016,  Daisuke"
#property link      "http://mt4program.blogspot.jp/"
#property version   "1.10"
#property strict
#property indicator_separate_window
#property indicator_minimum -100
#property indicator_maximum 100

#include <Object.mqh>
#include <Arrays/ArrayObj.mqh>

//バッファーを指定する。
#property indicator_buffers 2

//プロット数を指定する。
#property indicator_plots   2

#property indicator_label1  "RCI1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

#property indicator_label2  "RCI2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrRed
#property indicator_style2  STYLE_DOT
#property indicator_width2  1

input int Rci1Period = 8;    // RCI1期間(0 <= value 0表示しない)
input int Rci2Period = 12;   // RCI2期間(0 <= value 0表示しない)
input double SmoothAlfa = 0.7;// 平滑化パラメータ(0 < value <=1)

input bool ShowOverThreshold = false; //RCI1がSignalThresholdを超えた場合サインを表示する
input bool ShowUnderThreshold = true; //RCI1がSignalThresholdを下回った場合場合サインを表示する
input bool ShowMainSubCross = false; //RCI1とRCI2のクロスでサインを表示する。

input bool IsNearNotDisplay = true; // RCI2/2期間未満で同じ方向のシグナルは表示しない

input double SignalThreshold = 60; // 買いシグナル閾値(0 < value < 100 売りシグナル=-value)
input ENUM_OBJECT BuyObjectType = OBJ_ARROW_BUY;   //買い時オブジェクトタイプ
input ENUM_OBJECT SellObjectType = OBJ_ARROW_SELL; //売り時オブジェクトタイプ

input int BuyArrowCode = 233; //買い時矢印形状 233上矢印、161丸、
input int SellArrowCode = 234; //売り時矢印形状 234下矢印、161丸
input color BuyColor = C'128,128,255';
input color SellColor = C'255,128,128';

input bool IsClosePosition = true;  // オブジェクトの位置を終値基準にする場合True、高値安値基準にする場合false

// バッファー
double rci1[];
double rci2[];

#define OBJECT_NAME "RCIOBJ"

//------------------------------------------------------------------
//初期化
int OnInit()
{
   // 短縮名を設定
   string shortName = "RCI AR (";
   shortName += 
      IntegerToString(Rci1Period) + "," + IntegerToString(Rci2Period) + ")";
   IndicatorShortName(shortName);

   int count = 0;
   SetIndexBuffer(count++, rci1);
   SetIndexBuffer(count++, rci2);
   
 IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, SignalThreshold);
 IndicatorSetDouble(INDICATOR_LEVELVALUE, 1, -SignalThreshold);

   return(INIT_SUCCEEDED);
}

//------------------------------------------------------------------
//終了処理
void OnDeinit(const int reason)
{
   long chartId = ChartID();

   int total = ObjectsTotal(chartId);
   //生成したオブジェクトを削除する。
   //0から削除するとインデックス位置がずれて
   //正しく削除できないため、後ろから削除するようにする。
   for( int i = total - 1; i >= 0 ; i--)
   {
      string name = ObjectName(chartId, i);
      
      // 先頭文字列がOBJECT_NAMEと一致する場合、削除する。
      if( StringFind(name, OBJECT_NAME) == 0 )
      {
         ObjectDelete(chartId, name);
      }
   }
}

//------------------------------------------------------------------
//計算イベント
int OnCalculate(
   const int rates_total,          //各レート要素数
 const int prev_calculated,      //計算済み要素数
 const datetime &time[],         //要素ごとの時間配列
 const double &open[],           //オープン価格配列
 const double &high[],           //高値配列
 const double &low[],            //安値配列
 const double &close[],          //クローズ価格配列
 const long &tick_volume[],      //ティック数(要素の更新回数)
 const long &volume[],           //実ボリューム(?)
 const int &spread[])            //スプレット
{

   CArrayObj arrays1;
   CArrayObj arrays2;

   for( int i = rates_total - prev_calculated - 1 ; i >= 0; i-- )
   {
      if( i >= rates_total - 2 || i >= rates_total - Rci1Period - 1|| i >= rates_total - Rci2Period  - 1)
      {
         rci1[i] = 0 ;
         rci2[i] = 0 ;
         continue;
      }
      
      for(int j = 0; j < Rci1Period || j < Rci2Period; j++)
      {
         //CIndexPricePierの生成
         CIndexPricePier *pier = new CIndexPricePier();
         pier.Price = close[i + j];
         pier.Index = j + 1;

         if( j < Rci1Period ) arrays1.Add(pier);
         if( j < Rci2Period ) arrays2.Add(pier);
      }

      //ソート
      arrays1.Sort();
      arrays2.Sort();

      // (x順位-y順位)^2合計の計算
      int diff1 = 0;      
      int diff2 = 0;    

      for(int j = 0; j < Rci1Period || j < Rci2Period; j++)
      {
         if( j < Rci1Period )
         {
            CIndexPricePier *pier = (CIndexPricePier *)arrays1.At(j);
            diff1 += (int)MathPow((j + 1) - pier.Index, 2);
         }
         if( j < Rci2Period )
         {
            CIndexPricePier *pier = (CIndexPricePier *)arrays2.At(j);
            diff2 += (int)MathPow((j + 1) - pier.Index, 2);
         }
      }
      // RCIの計算
      if( Rci1Period > 0 ) rci1[i] = SmoothAlfa * (1 - 6 * diff1 / (MathPow(Rci1Period, 3) - Rci1Period)) * 100 + (1 - SmoothAlfa ) * rci1[i + 1];
      if( Rci2Period > 0 ) rci2[i] = SmoothAlfa * (1 - 6 * diff2 / (MathPow(Rci2Period, 3) - Rci2Period)) * 100 + (1 - SmoothAlfa ) * rci2[i + 1];
      
      // オブジェクトはClearメソッド内でdeleteが呼ばれる。
      arrays1.Clear();
      arrays2.Clear();

      DeleteArrawObject(time[i]);
      
      int doubleRci2 = Rci2Period / 2 ;
      int mainsubCrossBeforeBuy = doubleRci2 + 1;
      int mainsubCrossBeforeSell =  doubleRci2 + 1;
      int overThresholdBuy =  doubleRci2 + 1;
      int overThresholdSell =  doubleRci2 + 1;
      int underThresholdBuy =  doubleRci2 + 1;
      int underThresholdSell =  doubleRci2 + 1;
      
      if( IsNearNotDisplay && (ShowMainSubCross || ShowOverThreshold || ShowUnderThreshold) )
      {
         for( int j = 1; j < doubleRci2 && i + j + 1 < rates_total - 1; j++ )
         {
            if( ShowMainSubCross)
            {
               if( rci1[i + j] < rci2[i + j] && rci1[i + j + 1] >= rci2[i + j + 1] && rci2[i + j] > SignalThreshold && mainsubCrossBeforeSell > doubleRci2)
               {
                  mainsubCrossBeforeSell = j;
               }
               if( rci1[i + j] > rci2[i + j] && rci1[i + j + 1] <= rci2[i + j + 1] && rci2[i + j] < -SignalThreshold && mainsubCrossBeforeBuy > doubleRci2)
               {
                  mainsubCrossBeforeBuy = j;
               }
            }
            if( ShowOverThreshold )
            {
               if( rci1[i + j] < -SignalThreshold && rci1[i + j + 1] >= -SignalThreshold && overThresholdBuy > doubleRci2)
               {
                  overThresholdBuy = j;
               }
               if( rci1[i + j] > SignalThreshold && rci1[i + j + 1] <= SignalThreshold && overThresholdSell > doubleRci2 )
               {
                  overThresholdSell = j;
               }
            }
            if( ShowUnderThreshold )
            {
               if( rci1[i + j] > -SignalThreshold && rci1[i + j + 1] <= -SignalThreshold && underThresholdBuy > doubleRci2)
               {
                  underThresholdBuy = j;
               }
               if( rci1[i + j] < SignalThreshold && rci1[i + j + 1] >= SignalThreshold && underThresholdSell > doubleRci2 )
               {
                  underThresholdSell = j;
               }
            }
         }
      }

      if( ShowMainSubCross )
      {
         if( rci1[i] < rci2[i] && rci1[i + 1] >= rci2[i + 1] && rci2[i] > SignalThreshold && mainsubCrossBeforeSell > doubleRci2)
         {
            CreateArrawObject(SellObjectType, time[i], open[i], close[i], high[i], low[i]);
         }
         if( rci1[i] > rci2[i] && rci1[i + 1] <= rci2[i + 1] && rci2[i] < -SignalThreshold && mainsubCrossBeforeBuy > doubleRci2)
         {
            CreateArrawObject(BuyObjectType, time[i], open[i], close[i], high[i], low[i]);
         }
      }
      if( ShowOverThreshold )
      {
         if( rci1[i] < -SignalThreshold && rci1[i + 1] >= -SignalThreshold && overThresholdBuy > doubleRci2)
         {
            CreateArrawObject(BuyObjectType, time[i], open[i], close[i], high[i], low[i]);
         }
         if( rci1[i] > SignalThreshold && rci1[i + 1] <= SignalThreshold && overThresholdSell > doubleRci2 )
         {
            CreateArrawObject(SellObjectType, time[i], open[i], close[i], high[i], low[i]);
         }
      }
      if( ShowUnderThreshold )
      {
         if( rci1[i] > -SignalThreshold && rci1[i + 1] <= -SignalThreshold && underThresholdBuy > doubleRci2)
         {
            CreateArrawObject(BuyObjectType, time[i], open[i], close[i], high[i], low[i]);
         }
         if( rci1[i] < SignalThreshold && rci1[i + 1] >= SignalThreshold && underThresholdSell > doubleRci2 )
         {
            CreateArrawObject(SellObjectType, time[i], open[i], close[i], high[i], low[i]);
         }
      }

   }

   return(rates_total - 1);
}

//------------------------------------------------------------------
//売買矢印オブジェクトを生成する。
bool CreateArrawObject(
   ENUM_OBJECT objectType,  //オブジェクトの種類
   datetime time,           //表示時間(横軸)
   double open,            //始値
   double close,           //終値
   double high,            //高値
   double low              //安値
   )
{
   //オブジェクトを作成する。
   long chartId = ChartID();
   
   double price = IsClosePosition ? close : (objectType == BuyObjectType ? high : low);
    
   string name = OBJECT_NAME + TimeToStr(time);
   if( !ObjectCreate(chartId, name, objectType, 0, time, price) )
   {
      return false;
   }
   ObjectSetInteger(chartId, name, OBJPROP_HIDDEN, true);
   ObjectSetInteger(chartId, name, OBJPROP_COLOR, objectType == BuyObjectType ? BuyColor : SellColor);
   ObjectSetInteger(chartId, name, OBJPROP_ARROWCODE, objectType == BuyObjectType ? BuyArrowCode : SellArrowCode);
   
   int anchor;
   
   if( IsClosePosition )
   {
      anchor = open < close ? ANCHOR_BOTTOM : ANCHOR_TOP ;
   }
   else
   {
      anchor = objectType == BuyObjectType ? ANCHOR_BOTTOM : ANCHOR_TOP;
   }
   
   ObjectSetInteger(chartId, name, OBJPROP_ANCHOR, anchor);
   return true;
}

//------------------------------------------------------------------
//売買矢印オブジェクトを削除する。
bool DeleteArrawObject(
   datetime time           //表示時間(横軸)
)
{
   //オブジェクトを作成する。
   long chartId = ChartID();
   string name = OBJECT_NAME + TimeToStr(time);
   return ObjectDelete(chartId, name);
}


#define CINDEX_PRICE_PIER_TYPE 12566
//------------------------------------------------------------------
// 価格インデックスペア
class CIndexPricePier : public CObject
{
public:

   //------------------------------------------------------------------
   //価格
   double Price;
   
   //------------------------------------------------------------------
   //インデックス
   int Index;

   //------------------------------------------------------------------
   //タイプ識別子取得
   virtual int Type(void) const { return(CINDEX_PRICE_PIER_TYPE); }

   //------------------------------------------------------------------
   //比較
   // return 1 nodeより小さい 0 nodeと等しい -1 nodeより大きい
   virtual int Compare(const CObject *node,const int mode=0) const 
   { 
      if(node == NULL || node.Type() != CINDEX_PRICE_PIER_TYPE )
      {
         return 0;
      }
      
      CIndexPricePier* target = (CIndexPricePier*)node;
      
      if( Price < target.Price ) return 1;
      if( Price > target.Price ) return -1;
      return(0);
   }
};

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年9月27日火曜日

[雑記]近況報告&ハーモニックパターン検出インジよくあるご質問

「ずっと何かを、インジを、探しているような気がする」

・・・・・

えぇ、いきなり某100億突破で話題の映画からのセリフ流用です(笑)
さて、ハーモニックパターンインジケータですが、おかげ様で皆さまにご活用いただいております。
運命のインジ!とは言いすぎかもしれませんが、そんな感じのご感想もいただいており大変恐縮です。

しばらくブログ更新が滞って申し訳ありません。
こう、自分の作業をしているとすっかり相場のことは頭から抜けてしまいます。
いろんなことを同時にはできない頭の持ち主です。

生きていますのでご安心ください(^^;;

たくさんある、ハーモニックパターンインジケータの中でも、断トツに凝った作りになっており、ご自身のトレードに合わせてカスタマイズ可能なインジケータだと自負しておりますので、是非皆さまのトレードにご活用ください。

カスタマイズということは、ハーモニックパターンをある程度学習されている方向けなのですが、FX-ONでも売れ筋に入ることが時々あり、その影響で初心者の方も購入を検討されるようです。

そのため、

「ハーモニックパターンは初めてなのですが活用可能でしょうか?」
「FXは初心者なのですが、このインジケータで勝てますか?」

というご質問を受けます。

私もテクニカル分析を中心に相場を乗り切るために、いろいろ工夫していますが、完全にテクニカルだけでトレードするならEAにお任せしたほうがいいです。
私自身の裁量トレードはお休みしてますが、EAでのリアル運用は完全に放置で稼働させています。
(まぁ販売中のGewinn8は相変わらず、Oandaデモとリアルの成績が違いすぎて(OnadaデモはTick更新間隔がリアルの半分になっているため)、FX-ONにお願いして一回リセットしてFxProでのフォワードに切り替えてもらおうかと検討中です。)

インジケータを利用するのは、そこに裁量判断を入れるためで、裁量判断はトレーダーの経験から生まれると考えています。

ハーモニックパターンは主に逆張りを仕掛けるときのタイミングを計るインジケータで、値ごろ感とか直観とか言ったものを見える化したインジケータです。

値ごろ感が有効な相場なのか、そうではないのかを判断する材料の一つと考えてください。

上記の質問を受けた場合、次のような内容のメールをご返信しています。
皆さまご参考にしてください。

レビューにおいても、ハーモニックだけでは勝てないというご意見を頂いております。逆張りを行う場合、何かしらの基準が必要で、その基準の一つとしてはかなり強力なツールとなります。

以下の意見は、私個人が考えているお話で投資の成功をお約束するものではございません。ご注意ください。

まず、こちらの記事を御覧ください。
http://mt4program.blogspot.jp/2016/08/blog-post.html

基本的な考え方として、ハーモニックパターンは、下記の2点の値動きを抽出するものです。

1.相場に強い力がかかっていない
2.フィボナッチ・リトレースメントラインを見て判断している人が多い

フィボナッチを見てトレードしている人が多いとフィボナッチに従った形状が抽出されるというものです。

そのため、ある程度の集団意識が反映される、1時間足、4時間足が最も有効となります。

1時間足未満は、「あれ?この形だとハーモニックとして出そうだけどでないのかな?」といった場合に15分足だけ確認する程度にとどめています。

1分足、5分足では、ハーモニックはほとんど役立ちません。形状が出ていたとしても上位の足でも出ている場合がほとんどですので、1分足、5分足でタイミングを図る場合は別のインジケータをおすすめします。

インジケータを利用した基本的なトレードルールは次の通りです。

1.ハーモニックが出現するまでエントリーしない。
2.ハーモニックが出現した場合、エントリライン(緑の線)までの戻りを待つ。

また、ハーモニックがヒットしやすい時間帯が存在します。
日本時間クローズ1時間後と、ロンドンフィキシングと、NYクローズの3つです。
逆にエントリライン超えの騙しが入りやすい時間帯は、日本仲値です。

ヨーロッパの人たちが好んで使う心理抵抗線的なインジケータですので、ヨーロッパの人たちが参加している時間帯の事を頭に入れてトレードしています。

私のエントリー基準として次の3点です。
1.トレンドに従った方向の場合は、髭をつけていたらエントリーライン手前でもポジションを持ちます。
2.トレンドに対しても逆張りを仕掛ける時は1時間足 RCI(8)が、反転し始めるのを待っています。
3.経済指標発表で突っ込んだ場合は、ハーモニック出現と同時に即取ります。(逆にサプライズだった場合は、様子見します)

上記RCIのように、ハーモニックパターン+逆張りオシレーター系インジの組み合わせというのも基本的な考え方となります。ハーモニックの有名な本にはRSIを利用した例が記載されていますが、私はRCIを使用しています。

(追記)
ハーモニックパターンとRCIについてはこちらの記事をご参考ください。
http://mt4program.blogspot.jp/2016/07/rci.html


無料で使用できる試用版もご用意しております。
ハーモニックパターン検出インジケータ試用版 EURUSD4パターンのみ
試用版ハーモニックパターン検出インジケータ

製品版はこちらから。
ハーモニックパターン検出インジケータ
ハーモニックパターン検出インジケータ

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年9月14日水曜日

[ハーモニック]V8.60をリリースしました。

予告していました、ハーモニックパターン検出インジケータV8.60をリリースいたしました。

ハーモニックパターン検出インジケータ
ハーモニックパターン検出インジケータ

■ハーモニックパターン検出インジケータV8.60


■ハーモニックパターン検出インジケータV8.60 設定変更点


ユーザ様よりご要望ありました、ハーモニック選択時のラベルの色を変更して選択した形状の数値が判別しやすいように変更しました。
初期値では、未選択ものは、ラベルをグレーにして、選択したもののみ白っぽい色に変更しています。

サンプル画像で引っ張ってきたEURGBPを見ると、ハーモニックのヒット具合をから、あんまり大きな力がかかっていない気迷い相場なことがわかりますね。

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年9月12日月曜日

[ハーモニック]アップデート予告V8.60 選択時のラベル色変え

ハーモニックパターン検出インジケータ8.60リリース予告です。


ハーモニック選択時に、背景だけではなく、ラベルの色も合わせて変えてほしいというご要望がありましたので、対応しています。

標準のラベル色を少し暗くして、選択したラベルの色を変更するようにしています。

テスト全然できていないので、テストしたらアップします。
しばらく触っていなかったため、プログラムの中身忘れた・・・・・・(滝汗)

ちなみに、合わせて質問を受けたのですが、Harmonic TradingはKindle版を購入済みです。そーいえば、昔にインジケータが売れたら原資にして買います!と宣言してて、そのまま報告していませんでした・・。

しかし、こーいう経済系の本って、英語が本当にわかりにくいですよね!(^^;;
プログラマ向け技術書だと、簡単英語で例題が載っているので、全然よめちゃうのですが・・・。

ハーモニックパターン検出インジケータ試用版 EURUSD4パターンのみ
試用版ハーモニックパターン検出インジケータ

製品版はこちらから。
ハーモニックパターン検出インジケータ
ハーモニックパターン検出インジケータ

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年9月8日木曜日

[MT4インジケータ]モメンタムMAかい離率


■モメンタムMAからのかい離率

さて、「[MT4インジケータ]遅れている分は足せばいい。単純移動平均に遅れ分の差分を足しこむ。

で、単純移動平均の差分を足しこみ、遅れ分を消してみた移動平均(モメンタムMA)を描画してみました。
これでトレンド時には、価格の中心値にラインが来ていると仮定してしまいます。

ということは、かい離率を取るとトレンド外の動きが取れるのでは?ということでかい離率を出してみました。

EURUSDにおいては0.5%が一つの突っ込みラインになっているように思われます。短期トレードとして1時間足の突っ込みにて逆張りチャレンジというEAも面白いかもしれませんね。まぁEU離脱のようなイベントがあると死にそうですが(^^;;;

//------------------------------------------------------------------
// モメンタムMA 乖離率
#property copyright "Copyright 2016,  Daisuke"
#property link      "http://mt4program.blogspot.jp/"
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_maximum 2
#property indicator_minimum -2
#property indicator_level1 0.5
#property indicator_level2 -0.5
#property indicator_level3 1
#property indicator_level4 -1

//バッファーを指定する。
#property indicator_buffers 1

//プロット数を指定する。
#property indicator_plots   1

#property indicator_label1  "MoMa"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

input int MaPeriod = 21;  // 期間

double ma1[];
double s1p[];
double s1m[];

//------------------------------------------------------------------
//初期化
int OnInit()
{
   //インジケーターバッファを初期化する。
   int count = 0 ;
   SetIndexBuffer(count++, ma1);
   SetIndexBuffer(count++, s1p);
   SetIndexBuffer(count++, s1m);

   string short_name = "MOMA";
   IndicatorShortName(short_name);

   return INIT_SUCCEEDED;
}

//------------------------------------------------------------------
//計算イベント
int OnCalculate(const int rates_total,          //各レート要素数
                const int prev_calculated,      //計算済み要素数
                const datetime &time[],         //要素ごとの時間配列
                const double &open[],           //オープン価格配列
                const double &high[],           //高値配列
                const double &low[],            //安値配列
                const double &close[],          //クローズ価格配列
                const long &tick_volume[],      //ティック数(要素の更新回数)
                const long &volume[],           //実ボリューム(?)
                const int &spread[])            //スプレット
{
   for( int i = 0; i < rates_total - prev_calculated && !IsStopped(); i++ )
   {
      double manow = iMA(Symbol(), PERIOD_CURRENT, MaPeriod, 0, MODE_SMA, PRICE_CLOSE, i);
      double mabefore = iMA(Symbol(), PERIOD_CURRENT, MaPeriod, 0, MODE_SMA, PRICE_CLOSE, i + (MaPeriod - 1) / 2);

      double ma = manow + (manow - mabefore);

      if( ma != 0 ) ma1[i] = (close[i] - ma) * 100 / ma;
      
   }
   return(rates_total - 1);
}

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年9月6日火曜日

[MT4インジケータ]遅れている分は足せばいい。単純移動平均に遅れ分の差分を足しこむ。

お久しぶりです。
たまには、記事をと、小ネタ投入です。私のブログで、などか、単純移動平均は遅れているという話をしています。(気になる方は、ブログ右の「移動平均考察シリーズ」のリンクをクリックしてみてください。

特に検証もしていませんが、遅れているなら足せばいいのでは?ということで、単純移動平均の遅れ分の差分を足しこんだ移動平均を書いてみました。

■通常の移動平均(黄色)と差分を足しこんだ移動平均(青)



・・・・むむむ?案外面白いかも?
#2016/9/7 プログラムミスってたので、修正しました。

//------------------------------------------------------------------
// モメンタムMA
#property copyright "Copyright 2016,  Daisuke"
#property link      "http://mt4program.blogspot.jp/"
#property version   "1.00"
#property strict
#property indicator_chart_window

//バッファーを指定する。
#property indicator_buffers 1

//プロット数を指定する。
#property indicator_plots   1

#property indicator_label1  "MoMa"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrAqua
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

input int MaPeriod = 21;  // 期間

double ma1[];

//------------------------------------------------------------------
//初期化
int OnInit()
{
   //インジケーターバッファを初期化する。
   int count = 0 ;
   SetIndexBuffer(count++, ma1);

   string short_name = "MOMA";
   IndicatorShortName(short_name);

   return INIT_SUCCEEDED;
}

//------------------------------------------------------------------
//計算イベント
int OnCalculate(const int rates_total,          //各レート要素数
                const int prev_calculated,      //計算済み要素数
                const datetime &time[],         //要素ごとの時間配列
                const double &open[],           //オープン価格配列
                const double &high[],           //高値配列
                const double &low[],            //安値配列
                const double &close[],          //クローズ価格配列
                const long &tick_volume[],      //ティック数(要素の更新回数)
                const long &volume[],           //実ボリューム(?)
                const int &spread[])            //スプレット
{
   for( int i = 0; i < rates_total - prev_calculated && !IsStopped(); i++ )
   {
      double manow = iMA(Symbol(), PERIOD_CURRENT, MaPeriod, 0, MODE_SMA, PRICE_CLOSE, i);
      double mabefore = iMA(Symbol(), PERIOD_CURRENT, MaPeriod, 0, MODE_SMA, PRICE_CLOSE, i + (MaPeriod - 1) / 2);
   
      ma1[i] = manow + (manow - mabefore);
   }
   return(rates_total - 1);
}

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年9月1日木曜日

Gewinn8 8月の成績 プラス回復

皆さまお久しぶりです。

Gewinn8 8月の成績です。
7月はマイナスでしたが、今月はマイナス分は何とか取り戻した形になりました。

8月末の高値から、アメリカ利上げ観測からの下げ局面をうまいこと取ることができました。

 | fx-on.com

Open Time Type Size Item Price S / L T / P Close Time Price Profit
2016.07.29 11:00:01 buy 0.01 eurusd 1.10882 1.11978 1.14882 2016.08.03 11:28:45 1.11977 1 107
2016.08.01 23:23:31 balance Interest -1.00
2016.08.02 04:00:00 buy 0.01 eurusd 1.11730 1.11978 1.15727 2016.08.03 11:28:45 1.11977 250.00
2016.08.02 06:00:00 buy 0.01 eurusd 1.11710 1.11978 1.15710 2016.08.03 11:28:45 1.11977 270.00
2016.08.02 23:23:16 balance Interest -3.00
2016.08.03 11:29:33 balance Balance update -2.00
2016.08.08 11:00:05 sell 0.01 eurusd 1.10880 1.12439 1.06879 2016.08.08 23:00:01 1.10833 48.00
2016.08.08 17:00:00 sell 0.01 eurusd 1.10734 1.12153 1.06733 2016.08.10 17:00:01 1.11766 -1 045
2016.08.08 19:00:00 sell 0.01 eurusd 1.10763 1.12000 1.06760 2016.08.11 01:45:00 1.11878 -1 129
2016.08.08 23:00:01 balance Interest -1.00
2016.08.08 23:00:01 balance Interest -1.00
2016.08.08 23:00:32 balance Balance update 1.00
2016.08.09 05:00:03 sell 0.01 eurusd 1.10762 1.12001 1.06761 2016.08.11 05:00:00 1.11775 -1 026
2016.08.09 09:00:01 sell 0.01 eurusd 1.10761 1.12001 1.06761 2016.08.11 17:05:02 1.11736 -988.00
2016.08.09 16:00:01 sell 0.01 eurusd 1.10795 1.12004 1.06794 2016.08.11 17:05:02 1.11736 -953.00
2016.08.09 18:01:39 balance Balance update 1.00
2016.08.09 19:00:00 sell 0.01 eurusd 1.11087 1.12007 1.07087 2016.08.11 19:00:00 1.11688 -610.00
2016.08.09 22:00:00 sell 0.01 eurusd 1.11073 1.12004 1.07074 2016.08.12 10:30:04 1.11560 -497.00
2016.08.09 23:23:20 balance Interest -5.00
2016.08.10 17:00:01 balance Interest -1.00
2016.08.10 23:23:10 balance Interest -7.00
2016.08.11 01:45:31 balance Balance update -1.00
2016.08.11 05:00:00 balance Interest -1.00
2016.08.11 05:00:35 balance Balance update 1.00
2016.08.11 15:00:00 balance Interest -1.00
2016.08.11 15:00:00 buy 0.01 eurusd 1.11478 1.11538 1.15477 2016.08.15 03:55:00 1.11537 59.00
2016.08.11 17:00:00 balance Interest -1.00
2016.08.11 17:00:00 buy 0.01 eurusd 1.11672 1.11701 1.15672 2016.08.12 17:38:19 1.11701 30.00
2016.08.11 17:05:02 balance Interest -1.00
2016.08.11 17:05:02 balance Interest -1.00
2016.08.11 17:05:37 balance Balance update 1.00
2016.08.11 19:00:31 balance Balance update 2.00
2016.08.11 23:23:15 balance Interest -1.00
2016.08.12 01:00:00 buy 0.01 eurusd 1.11419 1.11538 1.15417 2016.08.15 03:55:00 1.11537 120.00
2016.08.12 04:00:00 buy 0.01 eurusd 1.11356 1.11538 1.15353 2016.08.15 03:55:00 1.11537 184.00
2016.08.12 07:00:00 buy 0.01 eurusd 1.11409 1.11538 1.15409 2016.08.15 03:55:00 1.11537 130.00
2016.08.12 10:00:00 buy 0.01 eurusd 1.11428 1.11538 1.15427 2016.08.15 03:55:00 1.11537 110.00
2016.08.12 10:30:35 balance Balance update 2.00
2016.08.12 11:00:00 buy 0.01 eurusd 1.11449 1.11538 1.15450 2016.08.15 03:55:00 1.11537 89.00
2016.08.12 17:38:50 balance Balance update 1.00
2016.08.12 23:23:55 balance Interest -5.00
2016.08.13 23:22:56 balance Interest -8.00
2016.08.14 23:23:18 balance Interest -7.00
2016.08.15 03:55:44 balance Balance update -2.00
2016.08.15 11:00:01 buy 0.01 eurusd 1.11735 1.10838 1.15738 2016.08.16 04:00:00 1.11803 69.00
2016.08.15 23:23:06 balance Interest -1.00
2016.08.17 16:00:00 buy 0.01 eurusd 1.12713 1.13304 1.16718 2016.08.19 05:58:51 1.13304 592.00
2016.08.17 18:00:00 buy 0.01 eurusd 1.12763 1.13304 1.16764 2016.08.19 05:58:51 1.13304 542.00
2016.08.17 22:00:00 buy 0.01 eurusd 1.12908 1.13304 1.16907 2016.08.19 05:58:51 1.13304 397.00
2016.08.17 23:23:01 balance Interest -1.00
2016.08.18 17:46:51 balance Balance update 1.00
2016.08.18 23:23:01 balance Interest -4.00
2016.08.19 05:59:23 balance Balance update -1.00
2016.08.19 21:00:01 buy 0.01 eurusd 1.13205 1.12015 1.17205 2016.08.23 13:00:01 1.13288 84.00
2016.08.20 23:22:48 balance Interest -2.00
2016.08.21 23:23:03 balance Interest -1.00
2016.08.22 04:00:01 sell 0.01 eurusd 1.12894 1.14054 1.08894 2016.08.22 07:00:04 1.12773 122.00
2016.08.22 07:00:04 sell 0.01 eurusd 1.12764 1.14054 1.08764 2016.08.24 21:00:00 1.12651 114.00
2016.08.22 07:00:35 balance Balance update 1.00
2016.08.22 10:00:00 sell 0.01 eurusd 1.12818 1.14058 1.08818 2016.08.24 22:00:00 1.12625 194.00
2016.08.22 13:00:00 sell 0.01 eurusd 1.12956 1.12793 1.08957 2016.08.25 10:47:49 1.12793 164.00
2016.08.22 16:00:01 sell 0.01 eurusd 1.13042 1.14053 1.09043 2016.08.24 08:00:02 1.12960 82.00
2016.08.22 19:00:02 sell 0.01 eurusd 1.13132 1.14051 1.09131 2016.08.24 12:00:03 1.12950 182.00
2016.08.22 22:00:00 sell 0.01 eurusd 1.13240 1.12793 1.09240 2016.08.25 10:47:49 1.12793 449.00
2016.08.22 23:22:58 balance Interest -2.00
2016.08.23 01:00:00 sell 0.01 eurusd 1.13206 1.12793 1.09206 2016.08.25 10:47:49 1.12793 415.00
2016.08.23 04:00:02 sell 0.01 eurusd 1.13259 1.12793 1.09260 2016.08.25 10:47:49 1.12793 468.00
2016.08.23 13:00:32 balance Balance update -3.00
2016.08.23 23:22:58 balance Interest -9.00
2016.08.24 02:00:49 balance Interest -1.00
2016.08.24 02:00:49 buy 0.01 eurusd 1.13045 1.12146 1.17046 2016.08.26 17:25:00 1.13230 185.00
2016.08.24 08:00:33 balance Balance update 1.00
2016.08.24 12:00:03 balance Interest -1.00
2016.08.24 16:48:57 balance Balance update 2.00
2016.08.24 21:00:00 balance Interest -2.00
2016.08.24 21:00:32 balance Balance update 1.00
2016.08.24 22:00:00 balance Interest -1.00
2016.08.24 22:00:31 balance Balance update -1.00
2016.08.24 23:22:49 balance Interest -4.00
2016.08.25 10:48:21 balance Balance update -2.00
2016.08.25 14:00:01 sell 0.01 eurusd 1.12895 1.12030 1.08896 2016.08.30 13:00:00 1.11716 1 206
2016.08.25 17:00:00 sell 0.01 eurusd 1.12939 1.12030 1.08939 2016.08.30 13:00:00 1.11716 1 251
2016.08.25 19:00:01 sell 0.01 eurusd 1.12741 1.12030 1.08742 2016.08.30 13:00:01 1.11718 1 046
2016.08.26 05:00:01 sell 0.01 eurusd 1.12903 1.12030 1.08902 2016.08.30 13:00:01 1.11718 1 212
2016.08.26 08:01:18 sell 0.01 eurusd 1.12883 1.12030 1.08882 2016.08.30 13:00:01 1.11718 1 192
2016.08.26 11:00:00 sell 0.01 eurusd 1.12870 1.12030 1.08871 2016.08.30 13:00:01 1.11716 1 180
2016.08.26 13:00:01 sell 0.01 eurusd 1.12896 1.12030 1.08896 2016.08.30 13:00:01 1.11716 1 207
2016.08.26 16:00:04 sell 0.01 eurusd 1.12993 1.12030 1.08993 2016.08.30 13:00:01 1.11714 1 308
2016.08.26 17:25:31 balance Balance update -2.00
2016.08.26 23:24:05 balance Interest -6.00
2016.08.27 01:05:25 balance Balance update 6.00
2016.08.27 23:28:38 balance Interest -10.00
2016.08.28 23:29:26 balance Interest -10.00
2016.08.29 21:40:49 balance Balance update 1.00
2016.08.29 23:22:43 balance Interest -10.00
2016.08.30 13:00:00 balance Interest -1.00
2016.08.30 13:00:00 balance Interest -1.00
2016.08.30 13:00:01 balance Interest -1.00
2016.08.30 13:00:01 balance Interest -1.00
2016.08.30 13:00:01 balance Interest -1.00
2016.08.30 13:00:37 balance Balance update 2.00
2016.08.31 23:22:34 balance Interest -1.00
2,195.00


「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年8月9日火曜日

[雑記]ゴジラ襲来で円高になるか? シン・ゴジラ 微ネタバレ注意!

いま、巷で話題のシン・ゴジラ!見てきました!!
ネットでは賛否両論ですが、私は素直に面白いと感じました。

ゴジラとかまったく興味なくても、大災害シミュレーション映画として大変よく出来ている正に日本の映画でした。おすすめです。

さて、シン・ゴジラ批評は他のブログにお任せして、FX観点から見てみます。
映画の中では、政治判断に関しては異常なほど事細やかに描画されていますが、経済に関しては、株安、円安、債券安のトリプル安&関西地価高騰というセリフしかありません。

ここで皆さんが気になったのは円安でしょう。東日本大震災の時は、どちらかと言うと円高に振れたイメージが残っています。ネット上でもちらほら円高になるんじゃ?という意見が見受けられます。

では実際の値動きを見てみたいと思います。

■2011/3/11 のドル円値動き

3/11−17まで円高が進みます。保険金支払のために海外資産を得る必要があるという思惑のニュース発信から、日本時間早朝のアタックまでです。いまでは結局この時は短期筋のし掛けと言われています。その後、協調介入で円安になりますが、民主党政権の混乱とともに再び76円台に落ち込みます。しかし結局3/17に投機筋がつけた76円台底値となり、自民党政権になった瞬間円安に基調転換でした。

この投機筋のし掛けがみんなの頭に残っているため、日本で災害→円高!と思われたのではないでしょうか?

(3・11の値動きを今見ると、それほどでもありませんね。先々週までの値動きの方がよっぽど大きい・・・・。)

さて、シン・ゴジラ規模の災害が東京で起こった場合どうなるでしょうか?
以下ぷちネタバレになります

[雑記]ToDoリスト

コミュニティやメッセージでいただいているハーモニックパターンに関するToDoリスト
個人的なメモと自分へのプレッシャーも兼ねて(笑)

お盆休み期間に何か着手できるといいな。

・マルチ通貨/マルチタイム ハーモニック検出状況
・ハーモニックトレードに適したトレードホジョツール
・ハーモニックを使ったEAと統計情報
・MT4向け手動ハーモニック描画ツール

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

2016年8月8日月曜日

[MT4インジケータ]上位時間足を表示するカラフルなボリンジャーバンドの最新足に対する制御を変更する。

[MT4インジケータ&プログラミング]上位時間足を表示するカラフルなボリンジャーバンド

で作成した、マルチタイムフレーム機能付き、色が変わるボリンジャーバンドですが、マルチタイムで表示した際、過去の足に対して、現在形成中の足の値が表示されるのはよくないなということで、確定足だけ表示するようにしていました。

例えば、15分足で、1時間足のボリンジャーバンドを表示した際、
15分足 9:00足に1時間足の9:00の値をそのまま出してしまうと、9:15以降、確定しているはずの9:00の足の値は、まだ確定していない1時間足のボリンジャーバンドを確定値として表示してしまいます。

作った当初は、これはよくないなーと思い、確定した1時間足の8:00の値を表示していました。

コメントでご指摘いただいて、改めて思うと、表示シフトで、使用者が選べた方が良い気がします。

ということで、修正版です。
マルチタイムの際は、未確定となっている足すべての値を変更しに行きます。
(15分足9:00~9:45までの足は、9時台は常に更新される形です。)

■カラフルBBと、通常のBB(赤線) 旧バージョン



■カラフルBBと、通常のBB(赤線) 新バージョン


表示シフトのパラメータがありますので、従来通り確定足を表示することも可能です。

FX-ONからのダウンロードはこちらから。ソースコードは記事の最後に記載しています。
カラフルで、上位時間足のボリンジャーバンドが表示できます。
拡散収束と移動平均上昇下降で色が変わるアラート付きボリンジャーバンド
拡散収束と移動平均上昇下降で色が変わるアラート付きボリンジャーバンド | fx-on.com

「MT4でFXを勝ち抜く研究をするブログ」で公開している無料インジケータは、こちらの一覧から。
インジケータ一覧

Twitterもよろしくお願いします。
https://twitter.com/mt4program

ブログランキングにご協力よろしくお願いします。m(._.)m
にほんブログ村 為替ブログ MetaTraderへ
にほんブログ村

お約束ですが、本ブログは、投資に対する利益を約束する物ではありません。最終的には自己責任によるご判断よろしくお願いいたします。

ソースコードはこちらから