Squeeze Backtest Transformers v2.0


تخلیق کی تاریخ: 2024-04-28 14:09:26 آخر میں ترمیم کریں: 2024-04-28 14:09:26
کاپی: 0 کلکس کی تعداد: 536
1
پر توجہ دیں
1617
پیروکار

Squeeze Backtest Transformers v2.0

جائزہ

اسٹریٹجک ٹریڈنگ کا ایک ایسا نظام ہے جو اسٹریٹجک حکمت عملیوں پر مبنی ہے۔ اسٹریٹجک ٹریڈنگ کا ایک ایسا نظام ہے جو اسٹریٹجک حکمت عملیوں پر ایک مخصوص وقت کی حد میں واپسی کرتا ہے۔ اسٹریٹجک ٹریڈنگ کی حمایت کرتا ہے ، جس سے تجارت کی سمت کو زیادہ یا کم کرنے کے لئے لچکدار بنایا جاسکتا ہے۔ اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل a ، اسٹریٹجک ٹریڈنگ کے ل for ، اسٹریٹجک ٹریڈنگ کے ل for ، اسٹریٹجک ٹریڈنگ کے ل for ، اسٹریٹجک ٹریڈنگ کے ل for ، اسٹریٹجک ٹریڈنگ کے ل for ، اسٹریٹجک ٹریڈنگ کے ل.

حکمت عملی کا اصول

  1. سب سے پہلے صارف کی طرف سے سیٹ کی گئی پیمائش مدت پیرامیٹرز کی بنیاد پر پیمائش کے آغاز اور اختتام کے وقت کا تعین کریں۔
  2. ریٹرننگ کی مدت کے دوران ، اگر اس وقت کوئی پوزیشن نہیں ہے اور قیمت داخلہ کی قیمت کو چھو رہی ہے (کھولنے کی شرح کے مطابق) ، تو پوزیشن کھولیں اور ایک ہی وقت میں اسٹاپ نقصان اور اسٹاپ کی قیمت طے کریں (کھولنے کی شرح کے مطابق) ۔
  3. اگر پوزیشن پہلے ہی رکھی گئی ہے تو ، سابقہ اسٹاپ اسٹاپ آرڈر منسوخ کریں اور نئی اسٹاپ اسٹاپ قیمت دوبارہ ترتیب دیں (موجودہ پوزیشن کی اوسط قیمت کے مطابق) ۔
  4. اگر زیادہ سے زیادہ پوزیشن رکھنے کا وقت مقرر کیا گیا ہے تو ، جب پوزیشن رکھنے کا وقت زیادہ سے زیادہ قیمت تک پہنچ جاتا ہے تو ، پوزیشن کو صاف کرنے پر مجبور کریں۔
  5. اس حکمت عملی کے تحت دونوں سمتوں میں تجارت کی جاسکتی ہے۔

اسٹریٹجک فوائد

  1. پیرامیٹرز کی ترتیب لچکدار ہے اور مختلف مارکیٹ کے حالات اور ٹریڈنگ کی ضروریات کے مطابق ایڈجسٹ کیا جا سکتا ہے.
  2. کثیر جہتی تجارت کی حمایت کرتا ہے ، جس سے مارکیٹ کے مختلف حالات میں منافع حاصل کیا جاسکتا ہے۔
  3. اس کے علاوہ ، اس میں بہت سارے پیمائش کی مدت کے اختیارات ہیں جو آپ کو آسانی سے تاریخی اعداد و شمار کی پیمائش اور تجزیہ کرنے کی اجازت دیتے ہیں۔
  4. اسٹاپ نقصان اور اسٹاپ سیٹنگ خطرے کو مؤثر طریقے سے کنٹرول کرتی ہے اور فنڈز کے استعمال کی کارکردگی کو بہتر بناتی ہے۔
  5. زیادہ سے زیادہ پوزیشن وقت کی ترتیب مارکیٹ کے خطرے سے بچنے کے لئے پوزیشن کو زیادہ سے زیادہ رکھنے سے بچنے کے لئے.

اسٹریٹجک رسک

  1. داخلہ کی قیمت، سٹاپ نقصان کی قیمت اور سٹاپ بندش کی قیمت کی ترتیبات حکمت عملی کی آمدنی پر بہت زیادہ اثر انداز کرتی ہیں، اور غیر مناسب پیرامیٹرز کی ترتیبات کو نقصان پہنچ سکتا ہے.
  2. مارکیٹ میں شدید اتار چڑھاو کے دوران ، پوزیشن کھولنے کے فورا بعد ہی اسٹاپ نقصان کا سبب بن سکتا ہے ، جس سے نقصان ہوتا ہے۔
  3. اگر پوزیشن رکھنے کے دوران زیادہ سے زیادہ پوزیشن رکھنے کی مدت کے لئے فلیٹ پوزیشن کو متحرک کیا جاتا ہے تو ، اس کے نتیجے میں منافع کمانے کے مواقع ضائع ہونے کا خطرہ ہے۔
  4. یہ حکمت عملی کچھ خاص حالات میں (جیسے کہ زلزلے والے بازاروں میں) خراب ہوسکتی ہے۔

حکمت عملی کی اصلاح کی سمت

  1. مزید تکنیکی اشارے یا مارکیٹ کے جذبات کے اشارے متعارف کرانے پر غور کیا جاسکتا ہے ، تاکہ داخلے ، نقصان اور روکنے کے حالات کو بہتر بنایا جاسکے ، اور حکمت عملی کی استحکام اور منافع بخش صلاحیت کو بہتر بنایا جاسکے۔
  2. زیادہ سے زیادہ پوزیشن رکھنے کے وقت کی ترتیب کے لئے ، مارکیٹ میں اتار چڑھاؤ اور پوزیشن رکھنے کے نقصانات کے حالات کے مطابق متحرک طور پر ایڈجسٹ کیا جاسکتا ہے ، تاکہ فکسڈ ٹائم پلے آؤٹ پوزیشن سے ہونے والی مواقع کی لاگت سے بچا جاسکے۔
  3. زلزلے کی مارکیٹ کی خصوصیات کے ل، ، زلزلے کے زون میں توڑنے یا رجحان کی تبدیلی کی تصدیق جیسے منطق کو شامل کیا جاسکتا ہے ، جس سے بار بار تجارت کی لاگت کو کم کیا جاسکتا ہے۔
  4. پوزیشن مینجمنٹ اور فنڈ مینجمنٹ کی حکمت عملی کو شامل کرنے پر غور کریں ، ایک ہی تجارت کے خطرے کے سوراخ کو کنٹرول کریں ، فنڈ کے استعمال کی کارکردگی اور استحکام کو بہتر بنائیں۔

خلاصہ کریں۔

اسٹریٹجی کی کارکردگی پیرامیٹرز کی ترتیب سے زیادہ متاثر ہوتی ہے۔ حکمت عملی کی استحکام اور منافع بخش صلاحیت کو بڑھانے کے لئے حکمت عملی کی استحکام اور منافع بخش صلاحیت کو بہتر بنانے کے لئے اصلاحات اور اصلاحات کی ضرورت ہے۔ مستقبل میں ، زیادہ سے زیادہ تکنیکی اشارے ، زیادہ سے زیادہ پوزیشن رکھنے کے وقت کو متحرک طور پر ایڈجسٹ کرنے ، اتار چڑھاؤ کی مارکیٹ کی حکمت عملی کو بہتر بنانے اور پوزیشن اور فنڈ مینجمنٹ کو مضبوط بنانے جیسے اصلاحات پر غور کیا جاسکتا ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

strategy(title="Squeeze Backtest by Shaqi v2.0", overlay=true, pyramiding=0, currency="USD", process_orders_on_close=true, commission_type=strategy.commission.percent, commission_value=0.075, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, backtest_fill_limits_assumption=0)
R0 = "6 Hours"
R1 = "12 Hours"
R2 = "24 Hours"
R3 = "48 Hours"
R4 = "1 Week"
R5 = "2 Weeks"
R6 = "1 Month"
R7 = "Maximum"

BL = "low"
BH = "high"
BO = "open"
BC = "close"
BHL= "mid (hl)"
BOC = "mid (oc)"

LONG = "LONG"
SHORT = "SHORT"

direction = input.string(title="Direction", defval=LONG, options=[LONG, SHORT], group="Squeeze Settings")
strategy.risk.allow_entry_in(direction == LONG ? strategy.direction.long : strategy.direction.short)
openPercent = input.float(1.4, "Open, %", minval=0.01, maxval=100, step=0.1, inline="Percents", group="Squeeze Settings") * 0.01
closePercent = input.float(0.6, "Close, %", minval=0.01, maxval=100, step=0.1, inline="Percents", group="Squeeze Settings") * 0.01
stopPercent = input.float(0.8, "Stop Loss, %", minval=0.01, maxval=100, step=0.1, inline="Percents", group="Squeeze Settings") * 0.01
isMaxBars = input.bool(true, "Max Bars To Sell", inline="MaxBars", group="Squeeze Settings")
maxBars = input.int(10, title="", minval=0, maxval=1000, step=1, inline="MaxBars", group="Squeeze Settings")
bind = input.string(BC, "Bind", options=[BL, BH, BO, BC, BHL, BOC], group="Squeeze Settings")
isRange = input.bool(true, "Fixed Range", inline="Range", group="Backtesting Period")
rangeStart = input.string(R2, "", options=[R0, R1, R2, R3, R4, R5, R6, R7], inline="Range", group="Backtesting Period")
periodStart = input(timestamp("12 Apr 2024 00:00 +0000"), "Backtesting Start", group="Backtesting Period")
periodEnd = input(timestamp("20 Apr 2024 00:00 +0000"), "Backtesting End", group="Backtesting Period")

int startDate = na
int endDate = na
if isRange
    if rangeStart == R0
        startDate := timenow - 21600000
        endDate := timenow
    else if rangeStart == R1
        startDate := timenow - 43200000
        endDate := timenow
    else if rangeStart == R2
        startDate := timenow - 86400000
        endDate := timenow
    else if rangeStart == R3
        startDate := timenow - 172800000
        endDate := timenow
    else if rangeStart == R4
        startDate := timenow - 604800000
        endDate := timenow
    else if rangeStart == R5
        startDate := timenow - 1209600000
        endDate := timenow
    else if rangeStart == R6
        startDate := timenow - 2592000000
        endDate := timenow
    else if rangeStart == R7
        startDate := time
        endDate := timenow
else 
    startDate := periodStart
    endDate := periodEnd
    
float bindOption = na
if bind == BL
    bindOption := low
else if bind == BH
    bindOption := high
else if bind == BO
    bindOption := open
else if bind == BC
    bindOption := close
else if bind == BHL
    bindOption := hl2
else
    bindOption := ohlc4

afterStartDate = (time >= startDate)
beforeEndDate = (time <= endDate)
periodCondition = true
notInTrade = strategy.position_size == 0
inTrade = strategy.position_size != 0

barsFromEntry = ta.barssince(strategy.position_size[0] > strategy.position_size[1])
entry = strategy.position_size[0] > strategy.position_size[1]
entryBar = barsFromEntry == 0
notEntryBar = barsFromEntry != 0
openLimitPrice = direction == LONG ? (bindOption - bindOption * openPercent) : (bindOption + bindOption * openPercent)

closeLimitPriceEntry = openLimitPrice * (direction == LONG ? 1 + closePercent : 1 - closePercent)
closeLimitPrice = strategy.position_avg_price * (direction == LONG ? 1 + closePercent : 1 - closePercent)

stopLimitPriceEntry = direction == LONG ? openLimitPrice - openLimitPrice * stopPercent : openLimitPrice + openLimitPrice * stopPercent
stopLimitPrice = direction == LONG ? strategy.position_avg_price - strategy.position_avg_price * stopPercent : strategy.position_avg_price + strategy.position_avg_price * stopPercent

if periodCondition and notInTrade
    strategy.entry(direction == LONG ? "BUY" : "SELL", direction == LONG ? strategy.long : strategy.short, limit = openLimitPrice, stop = stopLimitPriceEntry)
    strategy.exit("INSTANT", limit = closeLimitPriceEntry, stop = stopLimitPriceEntry, comment_profit = direction == LONG ? 'INSTANT SELL' : 'INSTANT BUY', comment_loss = 'INSTANT STOP')
if inTrade 
    strategy.cancel("INSTANT")
    strategy.exit(direction == LONG ? "SELL" : "BUY", limit = closeLimitPrice, stop = stopLimitPrice, comment_profit = direction == LONG ? "SELL" : "BUY", comment_loss = "STOP")
if isMaxBars and barsFromEntry == maxBars
    strategy.close_all(comment = "TIMEOUT STOP", immediately = true)



showStop = stopPercent <= 0.20

// plot(showStop ? stopLimitPrice : na, title="Stop Loss Limit Order", force_overlay=true, style=plot.style_linebr, color=#c50202, linewidth=1, offset=1)
// plot(closeLimitPrice, title="Take Profit Limit Order", force_overlay=true, style=plot.style_linebr, color = direction == LONG ? color.red : color.blue, linewidth=1, offset=1)
// plot(strategy.position_avg_price, title="Buy Order Filled Price", force_overlay=true, style=plot.style_linebr, color=direction == LONG ? color.blue : color.red, linewidth=1, offset=1)
plot(showStop ? stopLimitPrice : na, title="Stop Loss Limit Order", force_overlay=true, style=plot.style_linebr, color=#c50202, linewidth=1, offset=0)
plot(closeLimitPrice, title="Take Profit Limit Order", force_overlay=true, style=plot.style_linebr, color = direction == LONG ? color.red : color.blue, linewidth=1, offset=0)
plot(strategy.position_avg_price, title="Buy Order Filled Price", force_overlay=true, style=plot.style_linebr, color=direction == LONG ? color.blue : color.red, linewidth=1, offset=0)

plot(openLimitPrice, title="Trailing Open Position Limit Order", style=plot.style_stepline, color=color.new(direction == LONG ? color.blue : color.red, 30), offset=1)
plot(closeLimitPriceEntry, title="Trailing Close Position Limit Order", style=plot.style_stepline, color=color.new(direction == LONG ? color.red : color.blue, 80), offset=1)
plot(stopLimitPriceEntry, title="Trailing Stop Position Limit Order", style=plot.style_stepline, color=color.new(#c50202, 80), offset=1)