このシリーズの記事一覧 (クリックで開閉)
【 strategy解説(Pine) 】
strategy.entry
とstrategy.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)
最初の数字は適当に私の方で調整しただけであり、各ユーザーは無視すること。
こんな感じでラベルがつく。これは以前からやっているのでおなじみのコードである。
comment
これはポジションを持った時に画面に表示する文字列を指定するだけである。
例えば
comment
なしだと
if (bar_no == 1)
strategy.entry("LONG", strategy.long)
ID
に文字列を入れてしまってもよいがoca
や複雑なエントリーをする場合は正しく動作しなくなるので、コメントを使おう。
if (bar_no == 1)
strategy.entry("LONG", strategy.long,comment="ロングしました")
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=
の中はそのまま条件式通常React
やVue.js
などではこういうパターンのコードはイコールのあと中括弧でかこって{ここにコード}
というように置かないとエラーになるのだが
どうやらpine
では中括弧のようなものはいらない様子。
先程の例でも出したが ==
の前後のようにスペースを入れてもコード上エラーがなければ問題ない。
もちろんand
条件なども付けることができる。
strategy.entry("LONG", strategy.long,comment="ロングしました", when=bar_no == 1 and close < 10000000)
約一週間かけてstrategy.order
とstrategy.entry
を解説した。
Pine
でバックテストを書く上で絶対に使用するコードであるため長くなったができれば全部覚えておきたい。
特に
order
とentry
の違いがなにか
指値・逆指値でエントリーするには
だけでも明確にしておくだけで全然コーディングがスムーズになるはずだ。
次回は今までのおさらいも兼ねて「トレーリングストップ」の実装を模索してみたい。