2018/12/09

pine scriptで作るドテンくん2 -完成!pineの基本は大体これでOK-

前回の続き
それでは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 = maxCalculate(window)
lowline = minCalculate(window)
--------------------------------------------

↓highlineおよびlowlineをチャート上に表示している。
色は赤、太さは3で。
--------------------------------------------
plot(highline,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")
--------------------------------------------

で、結果はこうなる。



設定も変えられる。windowはこのように



テスト用パラメータはこのように

このパラメータだと負ける。

成り行き手数料おっきいし、
ブレイクアウト系で成り行きしちゃうと
スリッページも大きくなりがち。



0 件のコメント:

コメントを投稿