【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);
}
//+——————————————————————+
インジケーター(コンパイル済み)
関連記事
###
関連記事
-
[FX] FX マイニング第2週前半
以前の記事「 FX マイニング開始 」の続きです。 FXマイニングとは私の造語で、自動売買プロ
-
アメリカ株投資 2021-5-31
前回「アメリカ株投資 2021-5-25」の続きですが、本日は純益(含み益)がはじめて 10
-
パウエルのおかげでずいぶん迷惑
いやあ、最近の急な円高には困ったものです。 12/8 に日銀のつぶやきを受けて 6円弱円高
-
スイスフラン暴騰騒動(2)
以前の記事「スイスフラン暴騰騒動」でも書きましたが、スイス銀行のおかげでスイスフランが一瞬で高騰
-
FX 大ダメージ 暴落対策用コードの導入
自動売買のデモ口座が今朝とんでもないことに。 昨日は調子よく、30万円プラ
-
郵便振替という過去の遺物
久しぶりにちょっと離れていた郵便局に行ってきました。 以前勤めていた大津市民病院の敷地に隣接し
-
【FX】FX相場は先月くらいから比較的堅調
ようやく魔の夏枯れ相場を脱し、9月初旬からうちの自動売買プログラムたちが調子を取り戻し始めま
-
生命保険の支払いの荷が降ろせそうな年頃
この前来た●●生命保険からの通知で、3つのうち2つが「保険料払込み済み」になっているのに気づきました
-
metatrader4 は linux で動きます
うちの Linux(Zorin6.4)マシンで、Windows 用の MetaTrader4
-
[FX] 無限回廊act1 バグなしバージョン
以前、MT4用のFX自動売買ソフト「無限回廊」システムact1 のバグありお試しバージョンを公開して