このシリーズの記事一覧 (クリックで開閉)
【 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は簡単だ
ただ、詳しいオプションを一つも解説していないのでまだ覚えることはたくさんある。
もう少しこのシリーズは続く予定。
