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

SystemTradingのブログ

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

新説フィボナッチ変動分析を売買戦略化したシグナルソースコードを公開

します。このソースコードは新説フィボナッチ変動分析を完全に再現したも

のではありません。

あくまでもフィボナッチ数列の性質が価格変動に隠れているかどうかを目的

とした売買戦略なので各自でアレンジしてみてください。

アメンバー記事で新説フィボナッチ変動分析を完全に解説できていないので

処理に不明な点もあると思いますが、時間に余裕ができたらアメンバー用の

記事を追加していきますのでお待ちください m(_ _ )m

 

 

 

【新説フィボナッチ売買戦略ソースコードの仕様】

フィボナッチ周期をソースコード上で求めますと桁数制限に引っかかり正確な

演算がされないので予め配列に入力してあります。処理に関しては下記記事

を参照してくださいね!

 

 

参考 : 新説フィボナッチ売買戦略を組んでみた

 

 

このソースコードは当日と前日の日付を監視してますので24時間動いている

銘柄の場合、当日と前日となるように時間帯を決めてセッション操作をする必要

があるので注意してください。以下のようなセッションは計算できない可能性が

あります。

 

 

ⅰ) セッション中に日付が変わる場合

ⅱ) 5分足以下のタイムフレームの場合

 

 

プロトタイプなので今後改善していきます。ちなみに可変変数の役割ですが、

 

 

EndTrade・・・・・・・デイトレにするための最終決済時間の設定

 

BaseHighPrice・・Closeのままをお勧めします

   ※ Highを入力すると終値ベースの高値を高値ベースの高値を取得するようになります

 

BaseLowPrice・・Closeのままをお勧めします

   ※ Lowを入力すると終値ベースの安値を安値ベースの安値を取得するようになります

 

 

となります。実は本来のソースコードと公開したソースコードはちょっと違います。

けど、その違いは銘柄毎のセッションに関わる内容なので戦略の中身には関わ

りません。

ちなみに銘柄に合わせて決済場面を変えたい時はEndTradeの時間を変更する

か、ソースコードの{MOC Setting}以下を書き換えてくださいね (^-^)/

 

 

 

 

【ソースコード】

 

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:
EndTrade(1530),BaseHighPrice(Close),BaseLowPrice(close);
Vars:
Barcount(0),Lastcount(0),BasePrice(0),HighPrice(0),LowPrice(0),UpDown(0),
count(0),Highcount(0),Lowcount(0),
Fhighcount(0),Flowcount(0),
CurrentHigh(0),CurrentLow(0),Signal(0),
PreLine(0),PrePoint(0);

//Bar Initial value
count=1;
condition1=(Date<>Date[1]);
condition2=(Date=Date[1]);
//Format
If condition1 then begin
Signal=0;
Barcount=2;
Lastcount=Barcount[1];
BasePrice=close[count];
HighPrice=close[count];
LowPrice=close[count];
If close>close[1] then UpDown=1
else If close<close[1] then UpDown=-1;
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];
Highcount=count;
end;
If LowPrice>BaseLowPrice[count] then begin
LowPrice=BaseLowPrice[count];
Lowcount=count;
end;
end;
end;
//Fibonacci Number
If condition1 then begin
Fhighcount=FiboNum[Highcount];
Flowcount= FiboNum[Lowcount];
end;
// Fibonacci Point
If condition2 and Barcount=Fhighcount then begin
CurrentHigh=BaseHighPrice;
Signal=1;
end else
If condition2 and Barcount<Fhighcount then CurrentHigh=BaseHighPrice;
If condition2 and Barcount=Flowcount then begin
CurrentLow=BaseLowPrice;
Signal=-1;
end else
If condition2 and Barcount<Flowcount then CurrentLow=BaseLowPrice;
//Predict Line
If Highcount<Lowcount then begin
PreLine=CurrentHigh;
PrePoint=1;
end;
If Highcount>Lowcount then begin
PreLine=CurrentLow;
PrePoint=-1;
end;

If condition2 then begin
condition10=(marketposition=0 and PrePoint=1 and Signal>Signal[1] and PrePoint*UpDown=1);
condition11=(marketposition=0 and PrePoint=-1 and Signal<Signal[1] and PrePoint*UpDown=-1);
If condition10 then sellshort next bar at market;
If condition11 then buy next bar at market;
end;


{Moc Setting*************************************************************************}
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;
 

 

 

ペタしてね