それではpineでどてんくんを実際に作っていきましょ
いきなりどかんと
完成版そーすこ-どのせるよ
※pineはにタブにうるさいのでこのままコピペじゃ動かんかも。
タブ部分を自分で消して、そのあと入れればたぶんOK
※(追記)これ、ちゃんとしたどてん君とちょっと違うわ
普通はminCalculateとmaxCalculateの中で、終値で値幅計算するんじゃなくて
highとlowで計算だわ。ま、ここはオリジナル要素ってことで
まずはどてんくんの復習
どてんくんは元ネタここ→(https://note.mu/akagami/n/n557905c2fc88)
1時間足18期間のドンチャンチャネルブレイクアウト戦略みたい
これをpineで解析します(失礼ながらnote買ってないのであくまで推測です)。
説明していくよ
↓は前回やったとこ
-------------------------------------------
//@version=3 ←pineのversionは3
strategy("Mr.Doten", overlay=true) ←チャートへの表示は”Mr.Doten”
インジはチャート上に表示するよ
-------------------------------------------
↓ではmaxCalculateっていう関数を作っているよ。
直近「w」のcloseつまり終値を見てその中で最大を見つける。
ここでfor文とif文,関数の作り方,宣言と代入を覚えてね。
最後のmaxnumが返り値、wが引数になります。
------------------------------------------
maxCalculate(w) =>
maxnum = 0.0
for i = 0 to w - 1
if(maxnum < close[i])
maxnum := close[i]
maxnum
--------------------------------------------
↓では同様に最小を見つけてる
--------------------------------------------
minCalculate(w) =>
minnum = 99999999.0
for i = 0 to w - 1
if(minnum > close[i])
minnum := close[i]
minnum
--------------------------------------------
↓ではwindowっていう変数に18を入れている
inputっていうやつを使うと、ソースコードを変えなくても数値を変えられます
--------------------------------------------
window = input(18)
--------------------------------------------
↓では作った関数を使用してる。
highlineおよびlowlineを宣言し、代入している
--------------------------------------------
highline = maxCalculate(window)
lowline = minCalculate(window)
--------------------------------------------
↓では作った関数を使用してる。
highlineおよびlowlineを宣言し、代入している
--------------------------------------------
↓では作った関数を使用してる。
highlineおよびlowlineを宣言し、代入している
--------------------------------------------
highline = maxCalculate(window)
lowline = minCalculate(window)
--------------------------------------------
↓highlineおよびlowlineをチャート上に表示している。
色は赤、太さは3で。
--------------------------------------------
↓highlineおよびlowlineをチャート上に表示している。
色は赤、太さは3で。
--------------------------------------------
plot(highline,color = red, linewidth = 3)
plot(lowline,color = red, linewidth = 3)
plot(lowline,color = red, linewidth = 3)
--------------------------------------------
↓はエントリー。
足が切り替わるたびに、lowlineにショートのストップ
highにロングのストップを仕掛ける
(同一方向への上限数を1にしておけば(後述)
ロングを持っていればさらにロング
ショートを持っているときにさらにショートはしない)
--------------------------------------------
strategy.entry("SE", strategy.short, stop=lowline, comment = "SE")
strategy.entry("LE", strategy.long, stop=highline, comment = "LE")
--------------------------------------------
↓はエントリー。
足が切り替わるたびに、lowlineにショートのストップ
highにロングのストップを仕掛ける
(同一方向への上限数を1にしておけば(後述)
ロングを持っていればさらにロング
ショートを持っているときにさらにショートはしない)
--------------------------------------------
strategy.entry("SE", strategy.short, stop=lowline, comment = "SE")
strategy.entry("LE", strategy.long, stop=highline, comment = "LE")
--------------------------------------------
で、結果はこうなる。
設定も変えられる。windowはこのように
テスト用パラメータはこのように
このパラメータだと負ける。
成り行き手数料おっきいし、
ブレイクアウト系で成り行きしちゃうと
スリッページも大きくなりがち。
0 件のコメント:
コメントを投稿