last update 2012-01-23
編集画面で直接実行します。
いままでよりもマクロは複雑ですが、これができるようになると、すごく、使用方法の幅が広がります。

今回、試すのは以下のとおり。
/注目銘柄Aを検索し、
/20日平均より上で引けて、乖離率2%以下の銘柄を買い、注目銘柄Bへセット。
/20日平均より下で引けて、乖離率-2%以上の銘柄を売り、注目銘柄Cへセット。
/同時に、print窓へ乖離率を出力

まず、注目銘柄Aに適宜銘柄を入れます。
注目銘柄B、Cは更新されますので、注意してください。
その後、マクロ編集画面を開きます。
今回は、どこでもいいです。
ちなみに、株価データを使用するときに、現在チャートが表示されている範囲が対象になります。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6001.jpg)

編集画面に入力します。
今回は流石に長いので、サンプルでテキストデータを置いておきます。
右クリックで保存
(.txtだと改行がなくなるので、.rtfでアップしました。)

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6002.jpg)

dnoloopをoffにします。
基本的に、編集画面で直接実行する場合は、お約束で定義しておきます。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6004.jpg)

今回定義する変数たちです。
文中で//を置くと、その後ろはコメントになります。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6005.jpg)

最初に、注目銘柄B、Cをクリアします。
クリアしない場合、追加されます。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6006.jpg)

第一関門。for to do文です。
基本の書式は、for (A) to (B) do (C)です。
まず(A)に、繰り返しの初めの値を代入します。
(B)が終わりです。
(A)が(B)になるまで(C)しなさい、という意味です。
①で、zzcodeが1001~9999になるまで繰り返します。
②はif then 文です。codeが株式銘柄として有効なものか、注目銘柄Aに指定されているかをチェックします。
③で、更にfor to do文が出てきます。

つまり、一番最初の処理としては、
①1001がzzcodeに代入されます。
②で、1001は銘柄コードとして有効ではないので、処理終了し、①へ戻ります。
注目銘柄Aで一番最初の銘柄コード(例:1820:西松建設)がzzcodeに代入されたら、③のfor to do 文へ移行します。
zzcode=1820の状態で、zzdnoがenddno(今日)の20日前から、今日まで、begin2 以下の処理を行う、という意味です。
追記2012/1/23
今回は、enddno時点での計算結果だけを演算対象にしているので、極端にデータが少なくなければ、今日をenddnoにしておけばOK。
enddno-1(昨日)の指数などを独自に計算する場合は、直接検索・月足のように、ちょっと工夫が必要。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6007.jpg)

23、24行目の「sijo」です。
このチェックをしないと、銘柄コードでない番号が入った状態で処理を行うことになり、その時点でエラーになってしまいます。
25行目で注目銘柄Aのチェックもしているので、要らない気がするんですが、なぜか必要な記述のようです。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6008.jpg)

第2関門。readkabudataです。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6009.jpg)
この関数はちょっと特殊で、ヘルプをじっくり読んだ上で使用する必要があります。
とにかく複雑なので、試しつつ覚えるしかないのですが。
まず、「zzdno:=」というのが引っかかります。
この関数においては、:=は代入の意味ではなく、株価データナンバーの位置、つまりdnoを意味します。
zzdnoの位置でreadkabudataしなさい、という意味ですね。
そして、変数が6つもあります。
①が株価データを格納する変数。1つのzzdnoの位置に、日付など6種類のzzdataが格納されます。
②は足の種類。
③が銘柄コード
④read_all_data_flag。falseは、マクロ編集画面に来る前に、チャートが表示されていた範囲のデータを参照する、という意味です。
⑤check_data_flag。dnoloop:=off;で使用するときはfalseにするしかないと思います。多分。
⑥save_fpac_data_flag。trueにしておくと、①に格納したデータをcloseなどの変数で使用できます。これがfalseでしか使えない時があって、その時にはまた苦労します。今回は大丈夫。

ヘルプはこんな感じです。
読んでもよくわからないのですが、こういう複雑な関数はこれ以上解説のしようがないと思います。
とにかく使って覚えるしかないです。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6010.jpg)

enddno(今日)の20日平均と乖離率を計算します。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6011.jpg)

条件を満たす銘柄を注目銘柄BCにセットし、print窓に出力します。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6012.jpg)

各beginをendで括ります。
最後に、refreshchumokuして、注目銘柄を整理します。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6013.jpg)

checkボタンを押して問題なければ、runボタンを押します。
ハードディスクがカリカリして、データを一生懸命読んでいる感じがすると思います。
debug窓に、処理中の銘柄コードを表示することも可能だと思いますが、今回はやっていません。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6014.jpg)

print窓です。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6015.jpg)

注目銘柄画面です。

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (マクロ6016.jpg)




管理人も、ここ数ヶ月でようやく出来るようになってきたので、まだ至らないところがいっぱいあると思います。
詳しい人がいたら、編集、よろしくお願いします。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2012年01月23日 22:36