سکیز بیک ٹیسٹ ٹرانسفارمر v2.0 ایک سکیز حکمت عملی پر مبنی ایک مقداری تجارتی نظام ہے۔ داخلہ ، اسٹاپ نقصان ، منافع کی فیصد ، اور زیادہ سے زیادہ ہولڈنگ وقت جیسے پیرامیٹرز کی ترتیب سے ، یہ ایک مخصوص وقت کی حد میں حکمت عملی کا بیک ٹیسٹ کرتا ہے۔ حکمت عملی کثیر سمت کی تجارت کی حمایت کرتی ہے اور تجارتی سمت کو لچکدار طور پر طویل یا مختصر میں ترتیب دے سکتی ہے۔ اسی وقت ، حکمت عملی بیک ٹیسٹ کی مدت کی ترتیب کے لئے بھرپور اختیارات بھی فراہم کرتی ہے ، جو آسانی سے ایک مقررہ وقت کی حد یا زیادہ سے زیادہ بیک ٹیسٹ کا وقت منتخب کرسکتی ہے۔
اسکیز بیک ٹیسٹ ٹرانسفارمر v2.0 ایک مقداری تجارتی نظام ہے جس کی بنیاد ایک سکڑ حکمت عملی پر ہے جو لچکدار پیرامیٹر کی ترتیبات اور کثیر سمت ٹریڈنگ کی حمایت کے ذریعہ مختلف مارکیٹ ماحول میں تجارت کرسکتا ہے۔ اسی وقت ، امیر بیک ٹیسٹ مدت کی ترتیب کے اختیارات اور منافع اور نقصان کی روک تھام کی ترتیبات صارفین کو تاریخی ڈیٹا تجزیہ اور رسک کنٹرول کرنے میں مدد فراہم کرسکتی ہیں۔ تاہم ، حکمت عملی کی کارکردگی پیرامیٹر کی ترتیبات سے بہت متاثر ہوتی ہے اور اس کی استحکام اور منافع بخش کو بہتر بنانے کے لئے مارکیٹ کی خصوصیات اور تجارتی ضروریات کی بنیاد پر اس کی اصلاح اور بہتری کی ضرورت ہے۔ مستقبل میں ، ہم زیادہ سے زیادہ تکنیکی اشارے متعارف کرانے ، زیادہ سے زیادہ انعقاد کے وقت کو متحرک طور پر ایڈجسٹ کرنے ، ضمنی حکمت عملیوں کو بہتر بنانے ، اور مارکیٹ کی پوزیشن اور دارالحکومت کے انتظام کو بہتر بنانے کے لئے مضبوط بنانے پر غور کرسکتے ہیں۔
/*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)