2020-07-10

【Pine】strategy.exit「limitとstop」【Trading View】

strategy.exitを解説。今回はlimit(指値)とstop(逆指値)の2つに絞って解説する。

Article Image

前準備

これまで通りバーの上にわかりやすいようにラベルを表示させている。

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)

image-20200625214525219

次のコードは上のラベルが1の時に取引をするコードである。

if (bar_no == 1)
    strategy.entry("LONG", strategy.long)

このbar_noだけ私が用意した変数なので注意。足の頭に表示させた数字である。

strategy.exit

strategy.exitstrategy.closeも**「ポジションを決済するコード」**だ。

この記事は引き続きstrategy.exitに絞って解説する。

前回はidfrom_entryを解説した。

【Pine】strategy.exit「idとfrom_entry」【Trading View】

前回の内容は読んでいる前提で進める。

引数一覧

公式のドキュメントは次

Pineスクリプト言語リファレンスマニュアル — TradingView

まずは引数の一覧

strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when)

本日解説するのは次の2つ

  • limit: 指値決済
  • stop: 逆指値決済

※流れ的にqty, qty_percent, profitをスキップしているが別記事で解説する。初めにlimit, stopを理解していないと困るはず。

entry,orderlimit,stopを勉強済みでも復習を

以前の記事にてstrategy.orderlimitstopを詳しく解説した。

こちらの予備知識があれば基本的には同様だが

明示的にエントリー方向を指定するentry,orderと違いexit決済する対象のポジションに応じてlimitstopの挙動が変わるので注意だ。

※以下で解説するがショートを持っているときのexitlimitは現在価格より低い位置である必要があるが、ロングを持っているときのlimitは現在価格より高い位置である必要がある。

はじめに:limit,stopentry,orderと同時に発注して良い

コード

if (bar_no == 6)
    strategy.entry("LONG", strategy.long)
    strategy.exit("LONG_EXIT", "LONG", limit=1010000) //全く同じバーでentryとexitを同時に発行している=OK

これは正しく動作する。

なぜ、この項目を書いたかと言うとstrategy.exitではなく

strategy.closeの場合は同じバーで発注を出しても正しく決済されないという特性があるため。

予め注意しておきたい。もちろんバーを分けても正しく動作する。

わからんければ「なるほど、わからん」までスキップ

記事の最後ににわからん人用の簡易チャートを設けた。

わからんければ表を見て判断すれば良い。

limit:指値で決済

ではまず指値で決済するオプション。

コード

if (bar_no == 6)
    strategy.entry("LONG", strategy.long)
    strategy.exit("LONG_EXIT", "LONG", limit=1010000) //ここで101万円に指値決済を置く

image-20200710162804317

最初に成行でロング(99万7千あたり)し利確用の指値101万を配置。

正しく決済された例。

このようにlimitは**「利確」**で使う場合が多い。

指値価格に注意

exitの指値に指定している値は必ず次を守ること

  • ロングのlimit決済:exitするバーのcloseより高い価格を指定(主に利確)

  • ショートのlimit決済:exitするバーのcloseより低い価格を指定(主に利確)

参考:ロング決済のlimitを低い価格(NG)に置く実験

例えば先程のロングのexit指値を1円に指定(現在価格よりも低い=NG価格に)すると....

if (bar_no == 6)
    strategy.entry("LONG", strategy.long)
if (bar_no == 7)
    strategy.exit("LONG_EXIT", "LONG", limit=1) //ここで1円に指値(現在価格より低い価格)

結果は

image-20200710163800592

exitした次のバーのopenにて決済されてしまった。

※この方法によりexitを使って成行クローズもできるが、恐らく想定された方法ではないので価格を指定せず成行したい場合はstrategy.closeを使おう。

stop:逆指値で決済

stop逆指値を指定する。逆指値の意味がわからない場合は私の過去記事を参照。

【Pine】strategy.orderとstrategy.entryのオプション「 stop 」【Trading View】

逆指値、ということはlimitとは逆の位置に価格を置く。

  • ロングの決済:exitするバーのcloseより低い価格を指定(主に損切)

  • ショートの決済:exitするバーのcloseより高い価格を指定(主に損切)

例を見てみよう。

コード

if (bar_no == 6)
    strategy.entry("LONG", strategy.long)
    strategy.exit("LONG_EXIT", "LONG", stop=993000) //993000で損切りSTOP

image-20200710174300823

つまりstopは「損切り」で使うことが多い。

参考:ロング決済のstopを高い価格に置く実験

limit同様やってはいけない価格にstopをおいてみよう。

ここでは「現在価格より高い位置」にstopを置く。

通常はlimitで利確するはずのものをstopと間違えてしまった場合だ。

if (bar_no == 6)
    strategy.entry("LONG", strategy.long)
if (bar_no == 7)
    strategy.exit("LONG_EXIT", "LONG", stop=99999999999999) //ロングのstopに高すぎる価格を指定

image-20200710181738383

このようなコードは書かないようにしよう。

limitは利確, stopは損切りで使うのがベター

とおぼえておくと楽だ。

  • ロングの決済のlimit≒利確なので、高い位置

  • ロングの決済のstop≒損切りなので、低い位置

  • ショートの決済のlimit≒利確なので、低い位置

  • ショートの決済のstop≒損切りなので、高い位置

上級編:厳密には「limit=利確」「stop=損切」ではない

厳密にはlimit=利確とstop=損切りではないので一応注意。

次のケースはロングの損切りでlimitが機能する

if (bar_no == 6)
    strategy.entry("LONG", strategy.long)
    
if (bar_no == 10) //バーが10になってから発注 = 含み損になってからlimitを発注したので
    strategy.exit("LONG_EXIT", "LONG", limit=994000) //ロング地点よりも低い位置=損切り位置でもlimitが置ける

image-20200710182451235

価格が下から上に抜けたのでロング決済のlimit(ショート指値)は正しく動作している。

ここまでくると損切りをstopではなくlimitで行う上級者向けストラテジにしか実装しないと思われるので興味ある人だけわかっていれば良いと思う。

なるほど、わからん。

やっぱり、わからん人がいるはずだ。

うん。ちょっと小難しい。説明すればするほどわからんくなる。

というわけでチャートで表した。

image-20200710184903611

strategy.exitの**「limitは利確, stopは損切りで使うのがベター」**と覚えよう(厳密には違うが...)

難しければとりあえずこの表をみてlimit,stopを仕掛ければよいかと思う。

本日はここまで

指値と逆指値だけでも混乱するのに今回はそれを「決済」で使う方法であるため更に混乱を招く。

何度も使って覚えるのがベストだがそこまで頻繁にPineを組む人も少ないと思うので表を参考にしてもらえたらと思う。

わからなくなったらこの記事に帰ってきてもらうぐらいで良い。



この記事をシェア


謎の技術研究部 (謎技研)