2020-06-29

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

オプション解説第四回目は最終回「comment」「when」について解説する。

Article Image

本日は残り

strategy.entrystrategy.orderのオプションに関する解説の第4回目である。

オプションは以下の中から

strategy.order(id, long, qty, limit, stop, oca_name, oca_type, comment, when)
  • comment
  • when

を確認する。

今回が過去最高に簡単である。

前準備

これまでの記事通りサンプルとしてわかりやすいようにバーに数字を与えている。

コードは次

bar_no = 0
if(bar_index > 21699)
    bar_no := bar_index - 21699
    l = label.new(bar_index,na,text=tostring(bar_no),color=color.blue, textcolor=color.white,style=label.style_labeldown,yloc=yloc.abovebar)

最初の数字は適当に私の方で調整しただけであり、各ユーザーは無視すること。

image-20200625214525219

こんな感じでラベルがつく。これは以前からやっているのでおなじみのコードである。

comment

これはポジションを持った時に画面に表示する文字列を指定するだけである。

例えば

commentなしだと

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

image-20200629123116858

IDに文字列を入れてしまってもよいがocaや複雑なエントリーをする場合は正しく動作しなくなるので、コメントを使おう。

if (bar_no == 1)
    strategy.entry("LONG", strategy.long,comment="ロングしました")

image-20200629123350601

when

これは今までif文でやってきた条件を発注の中にいれてしまうことができる。

つまり

if (bar_no == 1)
    strategy.entry("LONG", strategy.long,comment="ロングしました")

これは次と同義である

strategy.entry("LONG", strategy.long,comment="ロングしました", when=bar_no == 1)

シンプルに一行に纏まったのでこっちのほうが見やすいと感じる人もいるはずだ。

なら全部whenで良いのでは?

とは言い切れない。

例えば

var long_no = 0
if (bar_no == 1)
    strategy.entry("LONG", strategy.long,comment="ロングしました")
    long_no := bar_no

こんなコード。

結局ifを使わないとlong_noにデータを入れることが出来ないのでwhen使うだけ無駄+読みにくくになる

個人的にはifを好む

whenを使ったほうがインデントの数が減るのでwhenを好んで使う人もいるはずだ。

私個人的にはプログラミングしているうちにどんどんエントリーに付随するコードを付け加える事が多いのでwhenは余り使わない。

when=の中はそのまま条件式

通常ReactVue.jsなどではこういうパターンのコードはイコールのあと中括弧でかこって{ここにコード}というように置かないとエラーになるのだが

どうやらpineでは中括弧のようなものはいらない様子。

先程の例でも出したが == の前後のようにスペースを入れてもコード上エラーがなければ問題ない。

もちろんand条件なども付けることができる。

strategy.entry("LONG", strategy.long,comment="ロングしました", when=bar_no == 1 and close < 10000000)

以上!

約一週間かけてstrategy.orderstrategy.entryを解説した。

Pineでバックテストを書く上で絶対に使用するコードであるため長くなったができれば全部覚えておきたい。

特に

  • orderentryの違いがなにか

  • 指値・逆指値でエントリーするには

だけでも明確にしておくだけで全然コーディングがスムーズになるはずだ。

次回は今までのおさらいも兼ねて「トレーリングストップ」の実装を模索してみたい。



この記事をシェア


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