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