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

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

スポンサーサイト

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

問題点を解決したソースコード

「取引可能な曜日と時刻を指定するストラテジー」の作り方の続きです。
前回のはこちら
問題点を解決したソースコードを掲載します。

問題点:
1 時間帯が0時をまたぐ場合は正常に動作しない

問題点の解決方法:
1 「開始時刻>手仕舞い時刻」 と 「開始時刻<手仕舞い時刻」 に分ける
2 「開始時刻<手仕舞い時刻」の場合は、今まで通り
3 「開始時刻>手仕舞い時刻」の場合は、条件文を0時前と後に分ける

     **************************

strategy str_question_heikinashi_dotenn_TIMEfilter;
input buymode = true,sellmode = true,weekdaynumber = 0,starthour = 14,
startminute = 30,endhour= 19, endminute= 0, lots = 1;
vars lst = 1,ihour(number),iminute(number),iweekday(number),imonth(number),
i(number), c_line(series), o_line(series) ;

begin
/* 入力項目の説明
buymode trueにすると買い取引をする
sellmode trueにすると売り取引をする

weekdaynumber : 指定した曜日のみ取引を行います。 
             weekdaynumberを下記を参考に指定します。
             0:曜日フィルタOFF 1:日 2:月 3:火 4:水 5:木 6:金 7:土

starthour 開始時刻
startminute 開始分
endhour 手仕舞い時刻
endminute 手仕舞い分
*/

//タイムデータ読み込み
lst := back(close);
ihour := hour(timestamp[lst]);
iminute := minute(timestamp[lst]);
iweekday := weekday(timestamp[lst]);
imonth := month(timestamp[lst]);

//平均足データ読み込み
ind_heikinashi_openclose();
c_line := ind_heikinashi_openclose.close_line ;
o_line := ind_heikinashi_openclose.open_line ;



if iweekday = weekdaynumber or weekdaynumber = 0 then begin //曜日の指定

//指定時間帯が0時をまたがない場合
  if starthour < endhour then begin

if (ihour = starthour and iminute >= startminute)
or (ihour > starthour and ihour < endhour)
or (ihour = endhour and iminute < endminute) then begin

if buymode = true and sellmode = false then begin  //買いのみ

if crossup(c_line, o_line) then buy(lots);
if crossdown(c_line, o_line) then exitlong();
end;

if sellmode = true and buymode = false then begin //売りのみ
if crossdown(c_line, o_line) then sell(lots);
if crossup(c_line, o_line) then exitshort();
end;

if buymode = true and sellmode = true then begin //売り買い両方
if crossup(c_line, o_line) then begin
exitshort();
buy(lots);
end;
if crossdown(c_line, o_line) then begin
exitlong();
sell(lots);
end;
end;
end;
end;


//指定時間帯が0時をまたぐ場合
if starthour > endhour then begin

if (ihour = starthour and iminute >= startminute)
or (ihour > starthour and ihour <= 23)
or (ihour >= 0 and ihour < endhour)
or (ihour = endhour and iminute < endminute) then begin


if buymode = true and sellmode = false then begin  //買いのみ

if crossup(c_line, o_line) then buy(lots);
if crossdown(c_line, o_line) then exitlong();
end;

if sellmode = true and buymode = false then begin //売りのみ
if crossdown(c_line, o_line) then sell(lots);
if crossup(c_line, o_line) then exitshort();
end;

if buymode = true and sellmode = true then begin //売り買い両方
if crossup(c_line, o_line) then begin
exitshort();
buy(lots);
end;
if crossdown(c_line, o_line) then begin
exitlong();
sell(lots);
end;
end;
end;
end;

//時刻強制手仕舞い
if ihour = endhour and iminute = endminute then begin
exitlong();
exitshort();
end;
end;
end.

      *********************

参考になったらクリックよろしく 人気blogランキング

ソースコードはGFTのdealbook360に対応しています。
GFT

dealbook360の自動売買システムの基本を学ぶにはこちら

自前の検証をお勧めします
口座開設はこちらから
FX
スポンサーサイト

コメント

管理人のみ閲覧できます

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

  • 2009/06/28(日) 06:37:36 |
  • |
  • #
  • [ 編集]

コメントの投稿


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

トラックバック

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

FC2Ad

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