استراتژی طماع (Greedy)
تعریف
استراتژی طماع (GS)، یک دستور اولیه را درصورت وجودِ شکاف بین قیمتِ بازشدنِ فعلی و بالاترین یا پایینترین قیمتِ کندلِ قبلی راهاندازی میکند. دراین حال اگر قیمتِ بازشدن بیشتر از بالاترین قیمتِ قبلی باشد، استراتژی مذکور، موقعیت (پوزیشن) خرید (لانگ) را باز میکند و اگر قیمتِ بازشدن، کمتر از پایینترین قیمتِ قبلی باشد، موقعیت فروش (شورت) باز میشود. همچنین، پس از بازشدن پوزیشن، این استراتژی به پُرکردن دستورات در همان جهت ادامه میدهد به شرطیکه رنگِ کندل با موقعیت بازشده مطابقت داشته باشد، به این شکل که اگر پوزیشن فعلی در راستا افزایش قیمت و خرید باشد، دستورات خریدِ جدیدی برای هر کندلِ سبزِ بعدی ایجاد میشود و بالعکس. این روند تا زمانیکه کندل با رنگِ متفاوتی ظاهر شود یا حدِ مجازِ دستوراتِ پُرشده در یک روز به پایان برسد، ادامه خواهد داشت.
افزون بر آن، حد مجاز میتواند با ویرایش مقدارِ حداکثر اُردرهای پُرشده درون-روزانه (Max Intraday Filled Orders) در تنظیمات تغییر یابد. همچنین، تنظیماتِ سیو سود (TP) و استاپ لاس/توقف ضرر (SL) به کاربر امکان میدهد تا این دو گزینه را تدوین کنند. از طرف دیگر، مقدار ذکرشده نمایانگرِ تعدادِ حداقل علامت (minticks) بالاتر/پایینتر از قیمتِ پوزیشن است که TP و SL در آنجا قرار خواهند گرفت.
محاسبات
کد زبان برنامهنویسی پاین (Pine)
//@version=5
strategy(“Greedy Strategy”, pyramiding = 100, calc_on_order_fills=false, overlay=true)
tp = input(10)
sl = input(10)
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
lmP = strategy.position_avg_price + dir*tp*syminfo.mintick
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(“TP”, strategy.position_size < 0 ? strategy.long : strategy.short, XQty, lmP, nav, “TPSL”, strategy.oca.reduce, “TPSL”, when= not revCond and XQty > 0)
strategy.order(“SL”, strategy.position_size < 0 ? strategy.long : strategy.short, 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)
//plot(strategy.equity, title=”equity”, color=color.red, linewidth=2, style=plot.style_areabr)
خلاصه
استراتژی طماع بهمنظور بهرهبرداری از شکافها در هر دو جهت، ایجاد شده است. این استراتژی با بازی بر روی حرکتهای قیمتی به سمت بالا یا پایین، وارد این شکافها میشود و یک دستور اولیه را درصورت وجودِ شکاف بین قیمتِ بازشدنِ فعلی و بالاترین یا پایینترین قیمتِ کندلِ قبلی، باز میکند. درهمین راستا، اگر قیمتِ بازشدن بیشتر از بالاترین قیمتِ قبلی باشد، استراتژی ذکرشده، پوزیشن لانگ و اگر قیمتِ بازشدن، کمتر از پایینترین قیمتِ قبلی باشد، موقعیتِ فروش را باز میکند. همچنین، پس از بازشدن پوزیشن معاملاتی، این استراتژی به پُرکردن دستورات در همان جبهه ادامه میدهد. این امر به شرطی حادث میشود که رنگِ کندل با موقعیتِ بازشده مطابقت داشته باشد.