NOEMBLEM/エンブレムが設定されていません。

メールの詳細(メール表示)

件名:

マクロの実行

差出人: s.i.gさん <support…>
送信日時 2015/05/23 08:56
ML.NO [fchart:0066]
本文:

こんにちわ

下記は、マクロのマニュアルのサンプルにある3点チャージのマクロです。
Fchartで実行するものをマクロで表現したのもです。
MLのコピーでは段落が取れてみずらいですが、マニュアルのサンプルは
見やすくなっています。

<マクロの実行>

メニューのマクロ、ユーザー定義チャートの編集を開きます。
5つのWindowのどれか空いているところへ下記のマクロを貼り付けます。
終わりボタンをクリックし終了します。
メニューのマクロの貼り付けた番号のマクロにチェックを入れます。

これだけで、マクロが実行されます。

<マクロの利点>

修正、変更が可能なので、パラメーターだけでなく新しい機能の
追加も可能です。 Fchartにある多くのチャート、指数のマクロが
サンプルにあります。

Fchartの指数などがどのような計算で実行されているのか
マクロをみることで理解が可能です。

マクロもプログラムなので、少し難しいですが、
とりあえず、実行してみてください。

/------------------------------------------------
/
/ ユーザー関数ライブラリーを使った3点チャージ
/ Fchartの3点チャージと同じです。
/ このまま検索としても使用可能です。
/
/ 週足で実行してください。
/
/------------------------------------------------

/実行条件の定義
SisuName:=3点チャージ(Kairi=25:-15,VR=25:70,RSI=14:25);

/計算開始をDno-50に設定
SetStartDno:=50;

var KairiP,VrP,RsiP;
fnRSI,fnVR,fnKairi;

begin

/----- 初期値設定があればこの中に記載 ----------
{$definit}

KairiP:=26;
VrP :=25;
RsiP :=14;
CalcKairi(KairiP,fnKairi);
CalcVR(VrP,fnVR);
CalcRSI(RsiP,fnRSI);

{$defend}

/----- マクロ本体(Dnoによる自動ループ) --------------
/買い
if (fnKairi[Dno]<=-15) and (fnVR[Dno]<=70)
and (fnRSI[Dno]<=25) then begin
buy;
end
/売り
else if (fnKairi[Dno]>=15) and (fnVR[Dno]>=70)
and (fnRSI[Dno]>=25) then begin
sell;
end;

//print(DnoDate,fnKairi[Dno],fnVR[dno],fnRSI[dno]);

end;


/------------------- ユーザー関数 -----------------------
/
/ 下記の関数は、ユーザー関数ライブラリーにあるものと同じです。
/
/-------------------------------------------------------

function CalcVR(p;var fnVR);
var stDno,Dn,k,
sumUp,sumD,sumSame;
begin
if (StartDno<=p) then stDno:=p
else stDno:=startDno;
for Dn:=StDno to EndDno do begin
sumUp:=0; sumD:=0; sumSame:=0;
for k:=Dn-p+1 to Dn do begin
sumD:=sumD+Dekidaka(k);
if NowE(k)>NowE(k-1) then sumUp:=sumUp+Dekidaka(k)
else if NowE(k)=NowE(k-1) then sumSame:=sumSame+Dekidaka(k);
end;
fnVR[Dn]:=((sumUp+SumSame/2)/sumD)*100;
end;
end;

function CalcKairi(p;var fnKairi);
var stDno,Dn,fnSMA;
begin
CalcSMA(p,fnSMA);
if StartDno<=p then stDno:=p
else stDno:=StartDno;
for Dn:=StDno to EndDno do
fnKairi[Dn]:=((NowE(Dn)-fnSMA[Dn])/fnSMA[Dn])*100;
end;

/単純移動平均
function CalcSMA(p; var fnSMA);
var Dn,stDno;
begin
if StartDno<=p then stDno:=p
else stDno:=StartDno;
for Dn:=StDno to EndDno do
fnSMA[Dn] := CalcAV(close,Dn-p+1,Dn);
end;

/RSIの計算
function CalcRSI(p; var fnRSI);
var i,k,up,sumall;
begin
if p=0 then exit;
for i:=StartDno to EndDno do begin
up:=0;
sumall:=0;
if i>1 then
for k:=i-p+1 to i do begin
if NowE(k)>NowE(k-1) then up:=up+NowE(k)-NowE(k-1);
sumall:=sumall+abs(NowE(k)-NowE(k-1));
end;
fnRSI[i]:=(up/sumall)*100;
end;
end;


――――――――――――――――――――――――――――――

●過去の質問をまとめたFAQ
http://www.sankayo-jp.com/faq.htm

●各種情報を発信しています。
http://www.sankayo-jp.com/support.htm

――――――――――――――――――――――――――――――
エスアイジー(S.I.G)サポート
support@…

質問などは上記のアドレスへ直接お願いします。

このエントリーをはてなブックマークに追加
添付:

更新順メールリスト