このシリーズの記事一覧 (クリックで開閉)
【 strategy解説(Pine) 】
今回は strategy.order
というコードを使う。
前回はstrategy.entry
を使ったが、どう違うのだろうか。
前回の記事:【Pine】strategy.entry関数【Trading View】
前回やったentry
の知識があればorder
はサクっと理解できるはずだ。
まず実験がわかりやすいように準備を行う。
こちらは前回の記事に同じなので詳細は省略するが、単にわかりやすいように足に番号を付けただけだ。
//@version=4
strategy("マイストラテジー", overlay=true)
bar_no = 0
if(bar_index > 21620)
bar_no := bar_index - 21620
l = label.new(bar_index,na,text=tostring(bar_no),color=color.blue, textcolor=color.white,style=label.style_labeldown,yloc=yloc.abovebar)
上についた番号を使って解説していく。
strategy.order
)1
と書かれたラベルのバーでロングでstrategy.order
する。
こちらも前回のコードをorder
に変えただけ。コメントも少し変えている。
//@version=4
strategy("マイストラテジー", overlay=true)
bar_no = 0
if(bar_index > 21620)
bar_no := bar_index - 21620
l = label.new(bar_index,na,text=tostring(bar_no),color=color.blue, textcolor=color.white,style=label.style_labeldown,yloc=yloc.abovebar)
//ロング1回
if (bar_no == 1)
strategy.order("ロング(Order)", strategy.long)
このようになる。
1
でオーダーしたのになぜ2
のバーで実際にロングが入っているかは前回の記事でも書いたが
1
のCLOSE
が確定した直後に注文が入るので実際には2
のオープンでロングされるからである。
ちなみにorder
ではなく前回のentry
では次のようになっていた。
order
では色が紫になっているようだ。
strategy.order
)前回と同様に3連続でロングをorder
してみる。
1
, 2
, 3
と続けてロングするということ。どうなるだろうか。
//バーを表示するコードは省略
//3連続でロングをorder
if (bar_no == 1)
strategy.order("ロング(Order)", strategy.long)
if (bar_no == 2)
strategy.order("ロング(Order)", strategy.long)
if (bar_no == 3)
strategy.order("ロング(Order)", strategy.long)
結果は
3回ともロングが成功している。つまり...
ということが分かる。
entry
では(デフォルトで)ピラミッディングはできないのでこの差がorder
なのである。
strategy.order
)では、この後order
で3連続ショートするとどうなるか。
//ロング3回
if (bar_no == 1)
strategy.order("ロング(Order)", strategy.long)
if (bar_no == 2)
strategy.order("ロング(Order)", strategy.long)
if (bar_no == 3)
strategy.order("ロング(Order)", strategy.long)
//ショート3回
if (bar_no == 4)
strategy.order("ショート(Order)", strategy.short)
if (bar_no == 5)
strategy.order("ショート(Order)", strategy.short)
if (bar_no == 6)
strategy.order("ショート(Order)", strategy.short)
もうおわかりかと思うが
3回ショートした。
entry
との違い:ドテンしない3回ロングを積んで3回ショートした。
結果どうなったかというとトータルポジションが0になった。
entry
では逆のポジションを取る時に倍の値を積んでドテンするという違いがある。
strategy.position_size
というビルトイン変数を使うと
**「今所持しているポジションの総数」**が取得できる。
つまりラベルの数字をこれにかえればポジション数が分かるはずだ。
label
のコードのオプションをtext=tostring(strategy.position_size)
にする。
本当にポジションがピラミッディングで3まで上がって、最後0になったか確認しよう。
ポジションが3まで登った後ショートも3回入り正しくポジションが0になっていることが確認できた。
そしてこれは先日の記事のように「設定項目のピラミッディング」の影響を受けないので設定を変更しても無意味である。
ユーザーが記述したorder
分だけピラミッディングするので正しいポジション管理が必要になってくる。
これを忘れないように。
strategy.order
は...
order
される。entry
の挙動を勉強してしまえばstrategy.order
は簡単だ
ただ、詳しいオプションを一つも解説していないのでまだ覚えることはたくさんある。
もう少しこのシリーズは続く予定。