このシリーズの記事一覧 (クリックで開閉)
【 strategy解説(Pine) 】
これまで通りバーの上にわかりやすいようにラベルを表示させている。
bar_no = 0
if(bar_index > 21699 and bar_index < 21750)
bar_no := bar_index - 21699
l = label.new(bar_index,high+10000,text=tostring(bar_no),color=color.blue, textcolor=color.white,style=label.style_labeldown,yloc=yloc.price)
次のコードは上のラベルが1
の時に取引をするコードである。
if (bar_no == 1)
strategy.entry("LONG", strategy.long)
このbar_no
だけ私が用意した変数なので注意。足の頭に表示させた数字である。
strategy.exit
strategy.exit
もstrategy.close
も**「ポジションを決済するコード」**だ。
この記事は引き続きstrategy.exit
に絞って解説する。
公式のドキュメントは次
Pineスクリプト言語リファレンスマニュアル — TradingView
まずは引数の一覧
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when)
qty
: ロット数qty_percent
: ロット数(%表記)profit
: 利確ラインloss
: 損切りライン上2つは簡単なので今回は主にprofit
, loss
の解説だと思ってもらえれば良い。
ロット数量。絶対値で指定した数量を発注。
exitの場合は決済する数量となる。
10ロットロングして、3ロットだけ損切りする例。
if (bar_no == 6)
strategy.entry("LONG", strategy.long, qty=10)
strategy.exit("LONG_EXIT", "LONG", stop=990000, qty=3)
結果
パーセンテージで決済する。
次は30%だけ損切りする場合は数値を30
にする。
if (bar_no == 6)
strategy.entry("LONG", strategy.long, qty=10)
strategy.exit("LONG_EXIT", "LONG", stop=990000, qty_percent=30) //30%の決済
結果は上と同様となる。
ただし次の条件だけ注意
条件については次の記事内で詳細に実験しているので気になる方は参照してほしい。
【Pine】strategy.closeの説明とexitの違い【Trading View】
以前limit
を使って利確を行ったが、もっとシンプルに利確したいときに使う。
覚えておくことは2つ。
profit
は利益という意味なので指定した利益になったら利確ではなく
profit
に指定した値幅で利確となる。
つまりqty
の影響を受けないので注意。
例えば次の例では
というコードなので、1000円幅で1万円となるためprofit=1000かも?という疑問がわくが
値幅なので10000を指定するのが正しい。
if (bar_no == 5)
strategy.entry("LONG", strategy.long, limit=1000000, qty=10) //ロット10
strategy.exit("LONG_EXIT", "LONG", profit=10000) //ロットに関係なく値幅1万で利確
結果
ロット数に関係なく1万円幅で正しく決済されていることがわかる。
上の例を見てもらえばわかるがバーの途中でも指定した値幅を達成したら決済される。
実際のトレードではここに成り行きの滑りや手数料が加算されるのを意識しておこう(指値決済ではないので)
今度は逆の損切りである。
指定した値幅、損する方向へ動いたときに決済される。
if (bar_no == 5)
strategy.entry("LONG", strategy.long, limit=1000000, qty=10) //100万円でlong
strategy.exit("LONG_EXIT", "LONG", loss=5000) //5000円の損=995000で決済
想定通りの結果となった。
profit
,loss
どっちが先に発動するかでは、両方とも同時に仕掛けたときどっちが優先されるだろうか
if (bar_no == 6) //同じ足で
strategy.entry("LONG", strategy.long)
strategy.exit("LONG_EXIT", "LONG", profit=1000) //profit
strategy.exit("LONG_EXIT2", "LONG", loss=1000) //loss を同時に仕掛ける
成り行きでエントリーし、同一の足でプラスにもマイナスにも千円幅動いているため両方刺さる想定のコードだ。
先にprofitの方で決済された。
2020/07/21:コードの2行目のIDが"LONG_EXIT"
となっていた箇所を"LONG_EXIT2"
と変更(テスト結果はこちらで行っている)
この場合のコードは**「先に記述したほうが優先される」**模様。
つまりID:"LONG_EXIT"
が先に決済される。
strategy.exit("LONG_EXIT2", "LONG", loss=1000)
を上に持っていくと...
loss
で決済される。
limit
とstop
の存在意義profit
とloss
があればlimit
, stop
なしでも決済ができる上にシンプルなので数字に対して直感的に決済ができる。
limit
とstop
いらないのでは?とさえ思うかもしれないが...
たしかに要らない気がする。
ただ、前回解説したように
含み損になってから損切りラインをlimit
で決定する
というような上級者向けストラテジにはprofit
, loss
は使えないので注意だ。
以前に難しいlimit
, stop
を解説したが
初心者はprofit
, loss
を使ったほうが直感的でかんたんかもしれない。
が、やはり実際の取引所を使う場合は指値、逆指値の理解は必須なのでできれば難しい方も覚えておきたい。