FX取引ルール確立のために

取引方針が定まらぬ臆病者の外国為替証拠金取引の行方。 取引ルールの柱にテクニカルな売買サインを導入中。システム開発状況を全て公開。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

平均値幅インジケータ・リミッター付

平均値幅インジケータ・リミッター付のソースコードを掲載します。

平均値幅インジケータ・リミッター付:
1日ごとに前日までの平均値幅と実値幅を描き比較できるようにする

考え方:
1 実際の日値幅と平均値幅を描く
2 リミット以上の値幅はカットして平均値幅の安定を図る

CTL:
1 高値安値インジケータを使い、各日の実値幅を計算する
2 実値幅ラインを表示する
3 1日づらした値幅ラインをもとに1日単位の移動平均(mma)を求める
3 その移動平均をもとに平均値幅ラインを表示する
4 ベ-スラインを移動させることにより、表示スケ-ルを拡大できる 
5 移動平均の種類を変更することにより、異なる平均値を求めることができる
  (例) SMA、MMA、WMA、EMA

使い方:
1 limitは、値幅をカットするレベルを入力する
  単位は、対象通貨ペアの価格。
  (例)ドル円 2.0   ユーロドル 0.035 等
2 リミットレベルは赤線で表示される
3 平均日数は2種類同時に表示できる

備考:
今回は、値幅が大きい場合の対応でしたが、極端に値幅が小さい場合の対応も考えられる。

実取引は1000通貨単位から売買可能のこちらの口座で行っています。


ランキング低迷中、励みのクリックよろしく 人気blogランキング
banner_11.gif

検証にはGFTのdealbook360を使っています
GFT
自前の検証をお勧めします
dealbook360口座開設はこちらから
FX
GFT

indicator ind_DayRange_hist_mma_limit ;
input starthour = 6, ave_days1 = 3, ave_days2 = 5,limit = 2.0, baseline=0 ;
draw DayRange("DayRange"), AV_Range1("AV1"),AV_Range2("AV2"),
limit_line("limit",solid_line,red),line_base("base") ;

vars fst(number), lst(number), i(number), j(number), k(number),
ave_range1(series),ave_range2(series), DayRange_delay(series),
Whigh (number),Wlow(number),line_high(series),line_low(series),
barminute(number), one_day_delay(number), DayRange_D(series) ;
  
begin
lst := back(close);
fst := front(close);
if lst < fst then return;

line_base := makeseries(front(close), back(close), baseline);
limit_line := makeseries(front(close), back(close), limit);

/* 1日のバーの本数を数える */
barminute := func_barminute();
one_day_delay := 1440/barminute;

/* 高値安値ライン */
{ チャ-ト初めにあるかもしれないゴミデ-タを無視する為、4番目のバ-からはじめる }
Whigh := close[fst+3] ;
Wlow := close[fst+3] ;
j := fst+3 ;

for i := fst+1+3 to lst do begin
 { スタ-ト時刻になるとこれまでの高値安値ラインを引く }
if hour(timestamp[i]) >= starthour and hour(timestamp[i-1]) < starthour then begin
for k := j to i-1 do begin 
line_high[k] := Whigh ;
line_low[k] := Wlow ;
end;

Whigh := close[i];
Wlow := close[i];
j :=i ;
end;

{ その日の高値安値を更新する }
if high[i] > Whigh then Whigh := high[i];
if low[i] < Wlow then Wlow := low[i];
end;

{ 本日のラインを引く }
{ jは直近のstathourのインデックス }
for k := j to lst do begin
line_high[k] := Whigh ;
line_low[k] := Wlow ;
end;

/* その日の値幅と1日分づらした値幅を求める */
for i:=lst downto fst+3 do
DayRange[i] := line_high[i] - line_low[i] ;
for i:=lst downto fst+3+2*one_day_delay do begin
DayRange_delay[i] := line_high[i-one_day_delay] - line_low[i-one_day_delay] ;
if DayRange_delay[i] > limit then DayRange_delay[i]:= limit ;
end;
/* 1日分づらした値幅ラインをもとに、1日ごとの移動平均を求める */

j := lst;
DayRange_D[lst] := DayRange_delay[lst];
for i := lst-1 downto fst+3+2*one_day_delay do begin
if hour(timestamp[i+1]) >= starthour and hour(timestamp[i]) < starthour then begin
j := j - 1;
DayRange_D[j] := DayRange_delay[i];
end;
end;

ave_range1 := mma(DayRange_D, ave_days1);
ave_range2 := mma(DayRange_D, ave_days2);

/* 平均値幅のラインを引く */
k := lst;
AV_Range1[lst]:= ave_range1[lst];
AV_Range2[lst]:= ave_range2[lst];

for i := lst-1 downto fst+3 do begin
if hour(timestamp[i+1]) >= starthour and hour(timestamp[i]) < starthour then begin
k := k - 1;
AV_Range1[i] := ave_range1[k];
AV_Range2[i] := ave_range2[k];
end else begin
AV_Range1[i] := AV_Range1[i+1];
AV_Range2[i] := AV_Range2[i+1];
end;
end;
end.
スポンサーサイト

テーマ:FXでシステムトレード - ジャンル:株式・投資・マネー

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

  • 2009/03/17(火) 05:42:21 |
  • |
  • #
  • [ 編集]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://fxrun.blog55.fc2.com/tb.php/1078-4fb1f098
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。