新説フィボナッチ売買戦略ソースコード Ver1.5 | SystemTradingのブログ

SystemTradingのブログ

システムトレードに関するブログです

新説フィボナッチ売買戦略 Ver1.5のソースコードを公開します。内部は

作成中なので使用していない変数も混じっていますが、基本的に内部の

ロジックは簡単なので解読してみてください。

また、売買戦略の動作確認はしていますがセッションの区切りや決済条

件によっては正常に表示されないことがあります。どうしても表示ができ

ない時はコメントまで連絡ください。

 

ちなみにパラメータがありますが、パフォーマンスに影響を及ぼす観測枠

系統はありません。設定されるパラメータは多くの銘柄に適用するための

パラメータなので最適化も意味がありませんので注意してくださいね (^-^)/

 

 

 

 

【変更点】

売買に関する部分が大幅に変更されています。前回の条件ですとノイズ的

な売買の除去に苦労しましたので新説フィボナッチ変動分析に極力沿った

内容になっています。ただ、新説フィボナッチ変動分析では、

 

 

参考 : 波動別の予測ポイント

 

 

トップ ⇒ ボトムの取得順でトップを予測

ボトム ⇒ トップの取得順でボトムを予測

 

 

となっていますが、シミュレーションでは違った結果となってしまい、

 

 

トップ ⇒ ボトムの取得順でボトムを予測

ボトム ⇒ トップの取得順でトップを予測

 

 

となってしまいました。多くの検証では新説フィボナッチ変動分析の見方が

正しいはずなのですが・・謎な結果です。

恐らくは日が変わった時間経過が何かの作用を及ぼしていると考えていま

すが、時間的都合もあって検証しきれていないところです。ということで、

 

 

何かの仮説が思い付いたら差支えない範囲で報告

 

 

頂けると助かります (;^_^A

また進展があれば報告しますね ('-^*)/

 

 

 

 

【パラメータ解説】

主に市場と銘柄の仕様に関するパラメータとなります。高値・安値の取得

は終値ベースをお勧めします♪

 

 

Type       : TOCOM用の決済条件(Type=1)と他の市場の決済条件(Type=2)を切り替えるパラメータ

EndTrade     :他市場の決済条件における決済するバーの時間(最終バーの時間をセットしてください)

MinPricePoints : 銘柄の刻み(E-mini S&Pだったら0.25など)

BaseHighPrice : 高値を取得するベース(初期値は終値ベースの高値取得)

BaseLowPrice  : 安値を取得するベース(初期値は終値ベースの安値取得)

 

 

MinPricePointsの設定は忘れないようにしてください。これが正確でないと 

正確なパフォーマンスは出力されません。

 

 

 

 

【Multicharts用ソースコード】

ちなみにTOCOM用のセッション設定が決済部分にあります。エラーがでる時

はTOCOM用のセッション設定である、

 

If Type=1 then begin ~end;

 

までの部分を削除してください。それでもエラーが出る場合はコメントまでお願

いします m(_ _ )m

 

 

 

{
User Specifies***500
}
Arrays:
//Basic Array
FiboNum[2000](0);
//Fibonacci Period
FiboNum[2]=3;FiboNum[3]=8;FiboNum[4]=6;FiboNum[5]=20;FiboNum[6]=24;FiboNum[7]=16;
FiboNum[8]=12;FiboNum[9]=24;FiboNum[10]=60;FiboNum[11]=10;FiboNum[12]=24;
FiboNum[13]=28;FiboNum[14]=48;FiboNum[15]=40;FiboNum[16]=24;FiboNum[17]=36;
FiboNum[18]=24;FiboNum[19]=18;FiboNum[20]=60;FiboNum[21]=16;FiboNum[22]=30;
FiboNum[23]=48;FiboNum[24]=24;FiboNum[25]=100;FiboNum[26]=84;FiboNum[27]=72;
FiboNum[28]=48;FiboNum[29]=14;FiboNum[30]=120;FiboNum[31]=30;FiboNum[32]=48;
FiboNum[33]=40;FiboNum[34]=36;FiboNum[35]=80;FiboNum[36]=24;FiboNum[37]=76;
FiboNum[38]=18;FiboNum[39]=56;FiboNum[40]=60;FiboNum[41]=40;FiboNum[42]=48;
FiboNum[43]=88;FiboNum[44]=30;FiboNum[45]=120;FiboNum[46]=48;FiboNum[47]=32;
FiboNum[48]=24;FiboNum[49]=112;FiboNum[50]=300;
FiboNum[51]=72;FiboNum[52]=84;FiboNum[53]=108;FiboNum[54]=72;FiboNum[55]=20;
FiboNum[56]=48;FiboNum[57]=72;FiboNum[58]=42;FiboNum[59]=58;FiboNum[60]=120;
FiboNum[61]=60;FiboNum[62]=30;FiboNum[63]=48;FiboNum[64]=96;FiboNum[65]=140;
FiboNum[66]=120;FiboNum[67]=136;FiboNum[68]=36;FiboNum[69]=48;FiboNum[70]=240;
FiboNum[71]=70;FiboNum[72]=24;FiboNum[73]=148;FiboNum[74]=228;FiboNum[75]=200;
FiboNum[76]=18;FiboNum[77]=80;FiboNum[78]=168;FiboNum[79]=78;FiboNum[80]=120;
FiboNum[81]=216;FiboNum[82]=120;FiboNum[83]=168;FiboNum[84]=48;FiboNum[85]=180;
FiboNum[86]=264;FiboNum[87]=56;FiboNum[88]=60;FiboNum[89]=44;FiboNum[90]=120;
FiboNum[91]=112;FiboNum[92]=48;FiboNum[93]=120;FiboNum[94]=96;FiboNum[95]=180;
FiboNum[96]=48;FiboNum[97]=196;FiboNum[98]=336;FiboNum[99]=120;FiboNum[100]=300;
FiboNum[101]=50;FiboNum[102]=72;FiboNum[103]=208;FiboNum[104]=84;FiboNum[105]=80;
FiboNum[106]=108;FiboNum[107]=72;FiboNum[108]=72;FiboNum[109]=108;FiboNum[110]=60;
FiboNum[111]=152;FiboNum[112]=48;FiboNum[113]=76;FiboNum[114]=72;FiboNum[115]=240;
FiboNum[116]=42;FiboNum[117]=168;FiboNum[118]=174;FiboNum[119]=144;FiboNum[120]=120;
FiboNum[121]=110;FiboNum[122]=60;FiboNum[123]=40;FiboNum[124]=30;FiboNum[125]=500;
FiboNum[126]=48;FiboNum[127]=256;FiboNum[128]=192;FiboNum[129]=88;FiboNum[130]=420;
FiboNum[131]=130;FiboNum[132]=120;FiboNum[133]=144;FiboNum[134]=408;FiboNum[135]=360;
FiboNum[136]=36;FiboNum[137]=276;FiboNum[138]=48;FiboNum[139]=46;FiboNum[140]=240;
FiboNum[141]=32;FiboNum[142]=210;FiboNum[143]=140;FiboNum[144]=24;FiboNum[145]=140;
FiboNum[146]=444;FiboNum[147]=112;FiboNum[148]=228;FiboNum[149]=148;FiboNum[150]=600;
FiboNum[151]=50;FiboNum[152]=36;FiboNum[153]=72;FiboNum[154]=240;FiboNum[155]=60;
FiboNum[156]=168;FiboNum[157]=316;FiboNum[158]=78;FiboNum[159]=216;FiboNum[160]=240;
FiboNum[161]=48;FiboNum[162]=216;FiboNum[163]=328;FiboNum[164]=120;FiboNum[165]=40;
FiboNum[166]=168;FiboNum[167]=336;FiboNum[168]=48;FiboNum[169]=364;FiboNum[170]=180;
FiboNum[171]=72;FiboNum[172]=264;FiboNum[173]=348;FiboNum[174]=168;FiboNum[175]=400;
FiboNum[176]=120;FiboNum[177]=232;FiboNum[178]=132;FiboNum[179]=178;FiboNum[180]=120;
FiboNum[181]=90;FiboNum[182]=336;FiboNum[183]=120;FiboNum[184]=48;FiboNum[185]=380;
FiboNum[186]=120;FiboNum[187]=180;FiboNum[188]=96;FiboNum[189]=144;FiboNum[190]=180;
FiboNum[191]=190;FiboNum[192]=96;FiboNum[193]=388;FiboNum[194]=588;FiboNum[195]=280;
FiboNum[196]=336;FiboNum[197]=396;FiboNum[198]=120;FiboNum[199]=22;FiboNum[200]=300;

Inputs:
Type(1),EndTrade(1530),MinPricePoints(1),BaseHighPrice(Close),BaseLowPrice(close);
Vars:
count(0),Barcount(0),LastBarcount(0),PreLength(0),UpDown(0),Trade(0),
BasePrice(0),HighPrice(0),LowPrice(0),
HighWide(0),LowWide(0),Highcount(0),Lowcount(0),
FhighPricecount(0),FlowPricecount(0),Fhighcount(0),Flowcount(0),
config(0);

//Bar Initial value
count=1;
condition1=(Date<>Date[1]);
condition2=(Date=Date[1]);
//Format
If condition1 then begin
Trade=0;
Barcount=2;
LastBarcount=Barcount[1];
BasePrice=close[count];
HighPrice=close[count];
LowPrice=close[count];
PreLength=close-BasePrice;
end else Barcount=Barcount[1]+1;
//Parameter Getting
If condition1 then begin
While Date[count]=Date[count+1] begin
count=count+1;
If HighPrice<BaseHighPrice[count] then begin
HighPrice=BaseHighPrice[count];
HighWide=absvalue(HighPrice-BasePrice)/minpricepoints;
Highcount=count;
end;
If LowPrice>BaseLowPrice[count] then begin
LowPrice=BaseLowPrice[count];
LowWide=absvalue(LowPrice-BasePrice)/minpricepoints;
Lowcount=count;
end;
end;
end;
//Fibonacci Number
If condition1 then begin
If close>BasePrice then UpDown=1 else If close<BasePrice then UpDown=-1;
FhighPricecount=FiboNum[HighWide]*minpricepoints;
FlowPricecount =FiboNum[LowWide]*minpricepoints;
Fhighcount =FiboNum[Highcount];
Flowcount =FiboNum[Lowcount];
end;

//Fibonacci Signal
If Highcount<Lowcount and Fhighcount<Flowcount then begin
condition3=(Date[1]=Date[2] and FhighPricecount>PreLength);
If condition1 and condition3 then sellshort next bar at market;
config=1;
end;

If Highcount>Lowcount and Fhighcount>Flowcount then begin
condition3=(Date[1]=Date[2] and -FlowPricecount<PreLength);
If condition1 and condition3 then buy next bar at market;
config=-1;
end;

{Moc Setting*************************************************************************}
If Type=1 then begin
//TOCOM Floor time from 9:00 to 17:30
condition20=(endtime=0 and time>=1725);
condition21=(endtime=1 and time>=1525);

If condition20 and marketposition=1 then sell ("LMoc-1725") next bar at market;
If condition20 and marketposition=-1 then buytocover ("SMoc-1725") next bar at market;
//TOCOM Floor time from 9:00 to 17:30
If condition21 and marketposition=1 then sell ("LMoc-1525") next bar at market;
If condition21 and marketposition=-1 then buytocover ("SMoc-1525") next bar at market;
end;

If Type=2 then begin
//Other Floor time
If Time=EndTrade and marketposition=1 then sell ("LMoc") this bar on close;
If Time=EndTrade and marketposition=-1 then buytocover ("SMoc") this bar on close;
end;

 

 

 

ペタしてね