このシリーズの記事一覧 (クリックで開閉)
【 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.exitstrategy.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を使ったほうが直感的でかんたんかもしれない。
が、やはり実際の取引所を使う場合は指値、逆指値の理解は必須なのでできれば難しい方も覚えておきたい。
