このシリーズの記事一覧 (クリックで開閉)
【 strategy解説(Pine) 】
strategy.entryとstrategy.orderのオプションに関する解説の第4回目である。
オプションは以下の中から
strategy.order(id, long, qty, limit, stop, oca_name, oca_type, comment, when)commentwhenを確認する。
今回が過去最高に簡単である。
これまでの記事通りサンプルとしてわかりやすいようにバーに数字を与えている。
コードは次
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の違いがなにか
指値・逆指値でエントリーするには
だけでも明確にしておくだけで全然コーディングがスムーズになるはずだ。
次回は今までのおさらいも兼ねて「トレーリングストップ」の実装を模索してみたい。
