忍者ブログ

私から見るマーケットの姿

デイトレ~スイングまで毎日こっそりやってます。 システムで本来出るはずだった損を裁量で防ぐスタイルのシステム売買を目指し、毎日のマーケットの感想を書いています^-^/

出来高の単位で困ってる人へ

一回Fchartをアンインストールしたとに、新しく株価をダウンロードすると日経平均なんかの出来高の棒グラフが異様に長くなって(10倍に程度になって)発狂しそうな人はいませんか?


f8637303.jpeg

 こんな感じです。





そーゆーときは、データの参照先をYAHOO(現在株価)にするといいです。

また、それ以外で解決したい人へは、以下の文章が参考になるんじゃないかなぁっと思うので、載せときます。
えっと、Fchartの内部にあるマニュアルや、ネットでの情報交換のサークルでも確認できます。


マニュアルでketと検索してます
------------------------------------------------------------------------------------------------------------

株価データの桁ファイル

データソースにより、同じ銘柄でも株価、出来高がまちまちになっています。  Fchartでは、各データソース間の桁の違いにに対応するため、データソース毎に桁ファイル(datadot.ket, mujinzo.ket, kabujoho.ket, pan.ket)を用意しています。 Fchartの表示桁が合わない場合は、データソースの株価の桁とFchartの桁を、その桁ファイルで調整して下さい。桁ファイルはテキストなのでメモ帳で編集することが出来ます。

コードの後の1桁目が株価、2桁目が出来高の桁修正。
1で10倍、2で100倍、-1で1/10、-2で1/100になります。

9020,-2,-2

この例では、NTTの株価と出来高を2桁づつ落としています。

--------------------------------------------------------------------------------------------

 

PR


必勝法のマクロここにあり

    |ii||iii;;;i;;;;ii;iill|
    |ii||iii;;;i;;;;ii;iill|
    |ii||iiii;;i((Oill|
    |ii||iii;;;i;;;;Y/ ̄ ̄ ヽ,
    |ii||iii;;;i;;;/        ',     _/\/\/\/\/\/\/\/\/\/\
    |ii||iii;;;i;;;{0}  /¨`ヽ {0},    \                          /
    |ii||iii;;;i;;;l   ヽ._.ノ   i    <  うそです。  己の力で探せ     >
    |ii||iii;;;i;;;リ   `ー'′  l   /                          \
    |ii||iii;;;i;/  /⌒     i     ̄|/\/\/\/\/\/\/\/\/\/\/
   r^-、ii;;ii_/  ィ    / )
   ヾ.__,、____,,/    /'"
    |ii||iii;;;i|      ノ
   / ̄ ̄ヽ、     ノ
   (,           |
    ',  \     ,  i
    |ii',   ';;ヽ _,ノ_ノ
    |ii||',  ',;;ii;iill|/
    |ii||ii) ヽi;iill|
    |ii/ __.ノ;iill|
    |(__/;i;;;;ii;iill|
    |ii||iii;;;i;;;;ii;iill| 



過度の最適化を行っておらず、
シャープレシオ、IRRがよくて、
マックスドローダウンが低いトレード方法など、
己で見つける以外ない。

readkabudataについて

ちょっととっつきにくいreadkabudataについてマニュアルのマクロにそって簡単な解説などを書いていこうと思います

まず、readkabudataは

ReadKabuData(DataV, AshiS ,CodeN ,[ReadAllDataFlagB ,CheckDateFlagB ,SaveFpacDataFlagB ] )N 

のように使います。
(例、readkabudata(data,'hiashi',1010,true,true))  これ例では対象は日経平均になります。

で、このreadkabudataはどのように機能するかと言うと、codenの部分に指定した銘柄の日付、始値、高値、安値、終値、出来高などを自動的にdataへ収納する機能を持ちます。

Data[Dno,0]が日付、
Data[Dno,1]=始値、
Data[Dno,2]=高値、
Data[Dno,3]=安値、
Data[Dno,4]=終値、
Data[Dno,5]=出来高

という感じです。

下記のマクロは日経平均を使ったreadkabudataの機能を出力するマクロなので、readkabudataがちょっととっつきにくいという人は一度このマクロを起動させてみてください。
実際に自分の目で見てみたほうがわかりやすいと思います。

/---------------------------------------------------------------------

sisuname:='test';
sisuerror:=off;

var Dnum,data,temp;

begin
 
  Dnum:=readkabudata(data,'hiashi',1010,true,true);
  if Dnum>0 then begin
      debugout(data[dno,0],' ',data[dno,1],' ',data[dno,2],' ',data[dno,3],' ',data[dno,4],' ',data[dno,5]);
      temp:=data[dno,0]+' '+data[dno,1]+' '+data[dno,2]+' '+data[dno,3]+' '+data[dno,4]+' '+data[dno,5];
      appendtext(temp,'c:\fchart\data\test.txt');
    end;
end;

/-------------------------------------------------------------------

また、Dnoloop:=off;がいまいちわからないという人はこの記述にDnoloop:=off;を追加してみてください。



もうひとつ、日経平均のみではなく、複数の銘柄を扱っている同様のマクロを載せておきます。
重いので、なるべくチャートの表示期間を短くして試してみてください。(最短、推奨)

/-------------------------------------------------------------------

sisuname:='test';
sisuerror:=off;

var Dnum,data,temp,code;

begin
 
  for code:=9950 to 9999 do begin
    Dnum:=readkabudata(data,'hiashi',code,true,true);
    if Dnum>0 then begin
        debugout(data[dno,0],' ',meigaraname(code),' ',data[dno,1],' ',data[dno,2],' ',data[dno,3],' ',data[dno,4],' ',data[dno,5]);
        temp:=data[dno,0]+' '+code+' '+data[dno,1]+' '+data[dno,2]+' '+data[dno,3]+' '+data[dno,4]+' '+data[dno,5];
        appendtext(temp,'c:\fchart\data\test.txt');
    end;
  end;
end;

/-------------------------------------------------------------------

もし、検索期間を指定したいなら、このブログの記事の’期間のある全数検索の出力’を参照。


期間のある全数検索の出力

一応、readkabudataを使ってシミュレーションの編集画面で期間のある全数検索をして、Debugoutとappendtextができるようになったのでマクロを貼っておきます。今回の例では、カイリ率を使っています。

Runボタンで実行しますが、かなり重いです。Debugoutとappendtextのcalckairi(i,25)を消すと速くなります。

今の設定では東証1部で証券番号が8888~9999だけで検索するようになっていますので、使いたいときには1001~9999にしてください。
マクロのマニュアルの「マクロによる銘柄検索2」を参考にしてください。

また、出力される情報は

・日にち(data[i,0])
・検索ヒット数(count)
・証券番号(code)
・銘柄名(Meigaraname(code))
・終値(data[i,4])
・25日平均のカイリ率(calcKairi(i,25))

です。よかったら使ってください。

間違っているかも知れませんが、この記述の中ではopen[dno]やclose[dno]などは使えません
open[dno]→data[i,1]; (始値)
close[dno]→data[i,4]; (終値)
です。(マニュアルのreadkabudataを参照)


/----------------マクロの始まり------------------------------

sisuname:=’全数検索’;
Dnoloop:=off;
var i,stdno,code,varA,Dnum,SMAP,fnSMA,fnkairi,count,data[5000,6],p,a,temp;
begin

{$definit}



{$defend}

for code:=8888 to 9999 do
if (sijo(code)=0) then begin
Dnum:=readkabudata(data,'hiashi',code,true,true);
for i:=1 to Dnum do begin
statusout(code);
/--------------必要な条件を記述-----------------------------

if (calckairi(i,25) < -10)






/-----------------------------------------------------------
then begin
temp:=data[i,0]+' '+count+' '+code+' '+meigaraname(code)+' '+data[i,4]+' '+calckairi(i,25);
appendtext(temp,'c:\fchart\data\test.txt');
count:=count+1;
debugout(data[i,0],' ',count,' ',code,' ',meigaraname(code),' ',data[i,4],' ',calckairi(i,25))
end;
end;
end;
if count=0 then message('検出銘柄はありません')
else message(count+'銘柄が検出されました');
end;



/---------------ユーザー定義関数----------------------------

function CalcSMA(d,Dnum);
var a,i;
begin
a:=0;
if Dnum<=0 then exit;
if (d-Dnum)>0 then begin
for i:=d-Dnum+1 to d do
a:=a+data[i,4];
end;
result:=a/Dnum;
end;

function Calckairi(d,Dnum);
var a,b,i;
begin
a:=0;
if Dnum<=0 then exit;
if (d-Dnum)>0 then begin
for i:=d-Dnum+1 to d do begin
b:=calcSMA(i,25);
a:=data[i,4];
end;
end;
result:=((a-b)/b) *100;
end;


・今後の課題は、期間を指定できるようになること(Encdateで可能かな?)
・Buy,Sell関数を組み込むこと
・BuyP=0のナンピン防止のシステムを組み込むこと

です。
最終的な目標はExcelでシャープレシオ、IRRなどを計算できるようにすることです。


なにか、分からないことがあったらメールかコメントしてください。


Debugoutについて2

/---------------------------------------------------------------------------
for Code:=1001 to 9999 do
    //東証1部のみ
    if (Sijo(Code)=0)
  then
  begin
    /データ読み込み
    Dnum:=ReadkabuData(Data,'HiAshi',Code);

/(中略)

  if CheckIdoHeikin(CheckEndDno,Para1,Para2,Para3) then begin
    count:=count+1;
    Debugout(count,': ',Code,' ',MeigaraName(Code),' ',data[Dnum,0]);
    end;
/---------------------------------------------------------------------------

これだけでは使えませんが、上記のDebugoutを使うことで検索にヒットした銘柄の

1.順番
2.証券番号
3.銘柄名
4.ヒットした日付

を得ることができます


重要なのはこの部分ですね
count:=count+1;
Debugout(count,': ',Code,' ',MeigaraName(Code),' ',data[Dnum,0]);
end;


calcAVなどを使うときのちょっとしたコツ

-calcAVなどを使うときのちょっとしたコツ-


calcAVなどのcalc○○を使うときにはcalcAV('配列変数',Dno-varA+1)という風にしないといけません

で、'close'などを使う際にはそのままでいいのですが、自分で独自の計算を組んでcalcAVを使いたいと思ったときにちょっと困っていませんか?

そんなときは


usertemp1[dno]:=組みたい独自の計算

calcAV('usertemp1',Dno-varA+1)


のようにすれば、自分が組みたい計算を簡単に使えます


以下に、使用例を書いておきます(5日移動平均の3日移動平均)

varA:=5;
varB:=3;

usertemp1[dno]:=calcAV('close',Dno-varA+1);
usersisu1[dno]:=calcAV('close',Dno-varB+1);


これができるようになるとマクロの幅が広がると思いますので