【FX】アンディさんのリアルタイム雲 (3)
公開日:
:
最終更新日:2019/09/15
マネー
今週の FX トレードは火曜日以降は値動きがあまりなかった(ユーロ爆下げを除く)ので参加していませんでした。
ようやく メタエディタが使えるようになったので、以前作った EAの点検をしていたのですが、最近の相場にはうまく適応できていないものが多いことにショック。トランプのツィッター爆弾の影響でしょうか。
また作り直しですね。
ということで、今週はカンを取り戻すのと新作 EAのネタ探しをかねて、以前買った FX 本を読み込むことにしていました。
上の本を読んで、最後に独自インジケーターをダウンロードしようと所定のサイトにいったら、すでにダウンロード期間は終了していました。
ということで自作することに。
リアルタイム雲だけは以前に作ったので、今回はダブル遅行線も組み込んでみました。
もちろん最初から作るのはめんどくさいので、公式の一目均衡表インジケーターのソースプログラムを改変しました。
通常の一目均衡表(公式インジケーター)
アンディさんのリアルタイム雲+W遅行線(改変したもの)
リアルタイム雲のほうが先行スパン2(と基準線)がレジスタンスとして機能しやすいのがよくわかります。
詳しい使い方は上記の本(いい本です)を御覧ください。
プログラムソース
//+——————————————————————+
//| Ichimoku_Andy2.mq4 |
//| 一目均衡表(改) Andyさんのダブル遅行線+リアルタイム雲 |
//| http://yiwasaki.com |
//+——————————————————————+
#property description “Ichimoku Kinko Hyo with Real-time cloud & W-chikousen by Andy”
#property strict
#property indicator_chart_window
#property indicator_buffers 8 // 7 から変更
#property indicator_color1 Red // Tenkan-sen
#property indicator_color2 Blue // Kijun-sen
#property indicator_color3 SandyBrown // Up Kumo
#property indicator_color4 Thistle // Down Kumo
#property indicator_color8 Yellow // Chikou Span2(追加)色は Lime から変更
#property indicator_color5 Yellow // Chikou Span 色は Lime から変更
#property indicator_color6 SandyBrown // Up Kumo bounding line
#property indicator_color7 Thistle // Down Kumo bounding line
//— input parameters
input int InpTenkan=9; // Tenkan-sen
input int InpKijun=26; // Kijun-sen
input int InpSenkou=52; // Senkou Span B
//— buffers
double ExtTenkanBuffer[];
double ExtKijunBuffer[];
double ExtSpanA_Buffer[];
double ExtSpanB_Buffer[];
double ExtChikouBuffer[];
double ExtChikouBuffer2[]; // Chikou Span2(追加)
double ExtSpanA2_Buffer[];
double ExtSpanB2_Buffer[];
//—
int ExtBegin;
//+——————————————————————+
//| Custom indicator initialization function |
//+——————————————————————+
void OnInit(void)
{
IndicatorDigits(Digits);
//—
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtTenkanBuffer);
SetIndexDrawBegin(0,InpTenkan-1);
SetIndexLabel(0,”Tenkan Sen”);
//—
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtKijunBuffer);
SetIndexDrawBegin(1,InpKijun-1);
SetIndexLabel(1,”Kijun Sen”);
//—
ExtBegin=InpKijun;
if(ExtBegin<InpTenkan)
ExtBegin=InpTenkan;
//—
SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_DOT);
SetIndexBuffer(2,ExtSpanA_Buffer);
SetIndexDrawBegin(2,InpKijun+ExtBegin-1);
// SetIndexShift(2,InpKijun); // リアルタイムなのでずらさない
SetIndexLabel(2,NULL);
SetIndexStyle(5,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(5,ExtSpanA2_Buffer);
SetIndexDrawBegin(5,InpKijun+ExtBegin-1);
// SetIndexShift(5,InpKijun); // リアルタイムなのでずらさない
SetIndexLabel(5,”Senkou Span A”);
//—
SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_DOT);
SetIndexBuffer(3,ExtSpanB_Buffer);
SetIndexDrawBegin(3,InpKijun+InpSenkou-1);
// SetIndexShift(3,InpKijun); // リアルタイムなのでずらさない
SetIndexLabel(3,NULL);
SetIndexStyle(6,DRAW_LINE,STYLE_DOT);
SetIndexBuffer(6,ExtSpanB2_Buffer);
SetIndexDrawBegin(6,InpKijun+InpSenkou-1);
// SetIndexShift(6,InpKijun); // リアルタイムなのでずらさない
SetIndexLabel(6,”Senkou Span B”);
//—
SetIndexStyle(4,DRAW_LINE);
SetIndexBuffer(4,ExtChikouBuffer);
SetIndexShift(4,-InpKijun);
SetIndexLabel(4,”Chikou Span”);
SetIndexStyle(7,DRAW_LINE); // Chikou Span2(追加)
SetIndexBuffer(7,ExtChikouBuffer2); // Chikou Span2(追加)
SetIndexShift(7,-InpSenkou); // Chikou Span2(追加と値の変更)
SetIndexLabel(7,”Chikou Span 2″); // Chikou Span2(追加)
//— initialization done
}
//+——————————————————————+
//| Ichimoku Kinko Hyo |
//+——————————————————————+
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[])
{
int i,k,pos;
double high_value,low_value;
//—
if(rates_total<=InpTenkan || rates_total<=InpKijun || rates_total<=InpSenkou)
return(0);
//— counting from 0 to rates_total
ArraySetAsSeries(ExtTenkanBuffer,false);
ArraySetAsSeries(ExtKijunBuffer,false);
ArraySetAsSeries(ExtSpanA_Buffer,false);
ArraySetAsSeries(ExtSpanB_Buffer,false);
ArraySetAsSeries(ExtChikouBuffer,false);
ArraySetAsSeries(ExtChikouBuffer2,false); // Chikou Span2(追加)
ArraySetAsSeries(ExtSpanA2_Buffer,false);
ArraySetAsSeries(ExtSpanB2_Buffer,false);
ArraySetAsSeries(open,false);
ArraySetAsSeries(high,false);
ArraySetAsSeries(low,false);
ArraySetAsSeries(close,false);
//— initial zero
if(prev_calculated<1)
{
for(i=0; i<InpTenkan; i++)
ExtTenkanBuffer[i]=0.0;
for(i=0; i<InpKijun; i++)
ExtKijunBuffer[i]=0.0;
for(i=0; i<ExtBegin; i++)
{
ExtSpanA_Buffer[i]=0.0;
ExtSpanA2_Buffer[i]=0.0;
}
for(i=0; i<InpSenkou; i++)
{
ExtSpanB_Buffer[i]=0.0;
ExtSpanB2_Buffer[i]=0.0;
}
}
//— Tenkan Sen
pos=InpTenkan-1;
if(prev_calculated>InpTenkan)
pos=prev_calculated-1;
for(i=pos; i<rates_total; i++)
{
high_value=high[i];
low_value=low[i];
k=i+1-InpTenkan;
while(k<=i)
{
if(high_value<high[k])
high_value=high[k];
if(low_value>low[k])
low_value=low[k];
k++;
}
ExtTenkanBuffer[i]=(high_value+low_value)/2;
}
//— Kijun Sen
pos=InpKijun-1;
if(prev_calculated>InpKijun)
pos=prev_calculated-1;
for(i=pos; i<rates_total; i++)
{
high_value=high[i];
low_value=low[i];
k=i+1-InpKijun;
while(k<=i)
{
if(high_value<high[k])
high_value=high[k];
if(low_value>low[k])
low_value=low[k];
k++;
}
ExtKijunBuffer[i]=(high_value+low_value)/2;
}
//— Senkou Span A
pos=ExtBegin-1;
if(prev_calculated>ExtBegin)
pos=prev_calculated-1;
for(i=pos; i<rates_total; i++)
{
ExtSpanA_Buffer[i]=(ExtKijunBuffer[i]+ExtTenkanBuffer[i])/2;
ExtSpanA2_Buffer[i]=ExtSpanA_Buffer[i];
}
//— Senkou Span B
pos=InpSenkou-1;
if(prev_calculated>InpSenkou)
pos=prev_calculated-1;
for(i=pos; i<rates_total; i++)
{
high_value=high[i];
low_value=low[i];
k=i+1-InpSenkou;
while(k<=i)
{
if(high_value<high[k])
high_value=high[k];
if(low_value>low[k])
low_value=low[k];
k++;
}
ExtSpanB_Buffer[i]=(high_value+low_value)/2;
ExtSpanB2_Buffer[i]=ExtSpanB_Buffer[i];
}
//— Chikou Span
pos=0;
if(prev_calculated>1)
pos=prev_calculated-1;
for(i=pos; i<rates_total; i++)
{
ExtChikouBuffer[i]=close[i];
ExtChikouBuffer2[i]=close[i]; // Chikou Span2(追加)
}
//—
return(rates_total);
}
//+——————————————————————+
インジケーター(コンパイル済み)
関連記事
###
関連記事
-
超シンプルな自動売買プログラム(11) 前週の平均値と逆張り(2) 曜日属性
以前の記事「超シンプルな自動売買プログラム(11) 前週の平均値と逆張り」ですが、月曜日に買って
-
【FX】2本の CCI をフィルタに使う EA
Youtube を観ていると、1本の EMA と 2本の CCI を使うトレード方法を伝授している人
-
【FX】2本の EMA と 1本の CCI を使う EA
昨日の記事「2本の CCI をフィルタに使う EA」では、短期と中期の CCI を0より上か下かとい
-
【FX】RSI のみで売買する異色のトレード手法
「FX攻略.com」という雑誌の 2018年4月号の 24ページに 平野朋之さんのスキャルピングメソ
-
2024-11-12 米国株投資
アメリカ大統領選が終わって、年末までは上げ基調なのかなと思います。 楽天証券の私の口座ですが、
-
SBIホールディングス(8473)買いました
一昨日、日本の高配当株としてよく名前が挙がる SBIホールディングスの株を 100株式会社買いました
-
[FX] FX も 80/20 の法則?
今週のパラメーターは、 HA06c が Fast_Period ILC
-
【FX】ボリンジャーバンド順張り手法
逆張りで使う人が多いボリンジャーバンドですが、開発者のボリンジャーさんは順張りで使えとおっしゃってい
-
超シンプルな自動売買プログラム ボリ平ドラゴン式 (その2)
以前ここで「超シンプルな自動売買プログラム(2) ボリ平ドラゴン式」でとりあげた ボリ平ドラゴン