前回、ExcelマクロのVBAがよくわからず
関数のみで作成を開始して、失敗したバックテストツールの続きですw
もうVBAからは逃れられない・・・(ざわざわ
そもそもどうやってマクロ化すればいいんだろうか?
と考えていたら気づいてしまいました。
はっ!
match(offsetなんて使わなくても
andifで高値>ポジ<安値すれば済むことじゃんベース文字列もいらないし
自分でややこしくしてるだけだった— Yagisan82🐐兼業投資家【458万円運用中】 (@yagigoat2) November 25, 2020
基本となる文字列がなくても、IF(ANDで出来るじゃん!!!!!
(円基軸:255~0、その他基軸:2.2~0)
ツイートでは間違えていますが
新規ポジは、高値>ポジ>安値
決済ポジは、高値>ポジ+利幅>安値
これでいいじゃん!!!!
MATCH(OFFSETを使って、自分でややこしくしていた・・・
マクロ化はよくわからないけど、これで少しは動作が軽くなるはず
VBAを調べてみると思っていたより面白そうだった
一つ発見をした後、ついにVBAの勉強を始めました!やるぞー
単純計算をしたくて、前回は簡単なループ計算だけ試しましたが
VBAの書き方とか、できる事とか色々調べていくとなんだか面白そう
ただ単に食わず嫌いしていただけで、やってみると面白いし
VBA内で関数も使えるし、めっちゃ便利!
そう、VBA内で関数が使えるんです!
ワークシートファンクション(worksheetfunction)を書いてから
.(ピリオド)を打つと、使える関数が表示されます。
関数を使う範囲を
With Application.worksheetfunction
~
End With
で囲うと、範囲内では関数が使い放題です。ヤッター
関数が使えるなら、前回をそのまま活かせますね!
ポジ新規&決済の関数も簡単になったので、より作業が加速しました。
それっぽいのが完成
MATCHとOFFSETを使わず、IFだけで出来る事に気づきw
VBAにワークシートファンクションなるものがある事を知ったら加速しました🥳変数Dimは一行で出来るのに、Forの動きに翻弄されつつ
ほぼ完成マネスク日足(0.5万行)なら150欄で1分40秒前後
1時間足(3.1万行)なら11分50秒前後で完了します pic.twitter.com/Hp3AlFDui9— Yagisan82🐐兼業投資家【458万円運用中】 (@yagigoat2) November 27, 2020
前回の関数をそのままVBAに入力し
変数を利用して、できるだけ行数を減らしました。
(Twitterの画像で150欄1個分、これが12個並ぶ感じ・・・それでも多い)
最初は”1”が入らなければ、”0”を入れるようにしていたのですが
”0”を入れる処理を省き、計算後に全削除したら3分短縮しました!
ちょっとした修正で変化がわかるから、それも面白い
F8で動かしながら、どの数字が入っているとか
エラー箇所とかもわかるからめっちゃ楽しい
できた動きはこんな感じ
それっぽく出来たのがコレ
150欄×2では3分10秒かかりましたオジQ:6NZと1.5NZでテスト
日足5年分で年利21%と13%(資金54万円) pic.twitter.com/Xv04zyxFJI— Yagisan82🐐兼業投資家【458万円運用中】 (@yagigoat2) November 28, 2020
繰り返す回数(For x,y,z =~ To ~)を変えれば、150欄や300欄にも対応
yとzを変えれば、バックテストする時間軸も変えられます。
動作確認のため、No2まで作成して
オージー・キウイをバックテストしてみました。
(現在の設定:利幅を6NZと1.5NZ)
前回の利幅6NZとは違った結果が表示されました。
おや?と思いますが、前回は動作が重すぎて
PCからシュンシュン異音が出るぐらいだったので
処理が追い付かなかったり、飛んでたりしたのかな・・・?
なんて都合が良い様に考えてみましたww
実はまだ、全12個中の2個しか出来ていないので
もう一度よく見直しつつ完成させます。
今後の課題
今回は、複数通貨運用シミュレーターで
- ロスカットレート
- 下落時の必要資金額
- 維持率
などなど
上記のことがわかるので
単純に期間内の累計利益だけがわかるツールを作りました。
なので、バックテストツールでよく見る項目の
- 期間内の最大ポジション数
(必ずしもMAX持っている訳ではない) - その時の含み損
- その場合の必要資金額
上記はありません。
バックテストツールでよく見る項目がなく
めっちゃ単純版なのにもかかわらず
マクロ実行し出力するまでの時間が長い
(1時間足:約3.1万行の場合、No1だけで約11分50秒)
とりあえずは
複数通貨運用シミュ内に組み込めるバックテストツールができましたが
まだマネースクエア公式の日足対応版とします。
(日足:約0.5万行の場合、No1だけで約1分40秒)
今後は、出力までの時間短縮と上記項目の作り方を考えてみます。
(出力時間を犠牲にするなら、出した計算を都度消さず
最後に集計すれば上記項目を作れそうだけど
時間を気にするならそもそも作り直さないといけない気がする・・・知らんけど)
やっぱり、バックテストツールを自作している方達すごい。
→為替研究所:Yuki様
→『働きたくない』ガチ勢:アビ様
完成!③使い方へ続く→
