yuya_takahashi_

Pine講座㊳ バックテスト|Greedy Strategy の解説(GAP順張り&ピラミッティングの戦略)

教育
yuya_takahashi_ アップデート済   
FX:USDJPY   米ドル/円
今回は Greedy Strategy の解説です。

直訳すると「欲張り戦略」

ピラミッティングをすることから
この名称なのかなと思います。

※ TradingView内蔵のストラテジーを
  上から順番に解説しています

※ 解説はコードの中で

※ コードをコピペする場合は、[](全角)を (半角)に変更してください

=====
//@version=4
strategy("Greedy Strategy の解説", pyramiding = 100, calc_on_order_fills=false, overlay=true)

//take profit(利確)のティック
tp = input(10)

//stop loss(損切り)のティック
sl = input(10)

//1日のオーダー数の上限
maxidf = input(title="Max Intraday Filled Orders", defval=5)
strategy.risk.max_intraday_filled_orders(maxidf)

//窓の確認
upGap = open > high[1]
dnGap = open < low[1]

//売り保有&当日陰線
dn = strategy.position_size < 0 and open > close

//買い保有&当日陽線
up = strategy.position_size > 0 and open < close

//窓を空けて上昇 → 買いエントリー
strategy.entry("GapUp", strategy.long, stop = high[1], when = upGap)

//売り保有&陰線 → 売りエントリー
strategy.entry("Dn", strategy.short, stop = close, when = dn)

//窓を空けて下落 → 売りエントリー
strategy.entry("GapDn", strategy.short, stop = low[1], when = dnGap)

//買い保有&陽線 → 買いエントリー
strategy.entry("Up", strategy.long, stop = close, when = up)

//それぞれ条件を満たさなくなったら注文をキャンセル
strategy.cancel("GapUp", not upGap)
strategy.cancel("GapDn", not dnGap)
strategy.cancel("Up", not up)
strategy.cancel("Dn", not dn)

//保有ポジション数を確認
XQty = strategy.position_size < 0 ? -strategy.position_size : strategy.position_size
//買いか売りかを確認
dir = strategy.position_size < 0 ? -1 : 1

//limit price(利確する価格)の算出
lmP = strategy.position_avg_price + dir*tp*syminfo.mintick
//stoploss price(損切りする価格)の算出
slP = strategy.position_avg_price - dir*sl*syminfo.mintick

//データなし
float nav = na

//逆方向の窓の有無
revCond = strategy.position_size > 0 ? dnGap : (strategy.position_size < 0 ? upGap : false)

//strategy.order(id, long, qty, limit, stop, oca_name, oca_type, comment, when)
//long → trueで買い注文、falseで売り注文

//保有ポジションあり+逆方向の窓が出てない → 損切りの注文
strategy.order("TP", strategy.position_size < 0, XQty, lmP, nav, "TPSL", strategy.oca.reduce, "TPSL", when= not revCond and XQty > 0)
//保有ポジションあり+逆方向の窓が出てない → 利確の注文
strategy.order("SL", strategy.position_size < 0, XQty, nav, slP, "TPSL", strategy.oca.reduce, "TPSL", when= not revCond and XQty > 0)

//保有ポジションなし か 逆方向の窓で注文をチャンセル
strategy.cancel("TP", XQty == 0 or revCond)
strategy.cancel("SL", XQty == 0 or revCond)
=====
コメント:
次の講座

小次郎講師公式インジケーターのお申込
bit.ly/2vdSV4Q

小次郎講師のLINE@
bit.ly/2VZQFu3

小次郎講師のチャート情報局
bit.ly/2GvLAEp
免責事項

これらの情報および投稿は、TradingViewが提供または保証する金融、投資、取引、またはその他の種類のアドバイスや推奨を意図したものではなく、またそのようなものでもありません。詳しくは利用規約をご覧ください。