سست ریچھ کی رفتار کو دبانے کی حکمت عملی


تخلیق کی تاریخ: 2024-02-02 17:42:58 آخر میں ترمیم کریں: 2024-02-02 17:42:58
کاپی: 0 کلکس کی تعداد: 1171
1
پر توجہ دیں
1617
پیروکار

سست ریچھ کی رفتار کو دبانے کی حکمت عملی

جائزہ

اسکرین شارٹ ایک ایسی حکمت عملی ہے جو بلین بینڈ ، کیلتنر چینل اور ایک متحرک اشارے کے ساتھ مل کر تجارت کی جاتی ہے۔ اس میں بلین بینڈ اور کیلتنر چینل کا استعمال کیا جاتا ہے تاکہ یہ معلوم کیا جاسکے کہ آیا موجودہ مارکیٹ میں دباؤ کی حالت ہے یا نہیں ، اور پھر متحرک اشارے کے ساتھ مل کر ٹریڈنگ سگنل پیدا کیا جاتا ہے۔

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

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

اس کے علاوہ، اس نے تین اشارے کی بنیاد پر اس کی حکمت عملی کا اندازہ کیا:

  1. بولنگر بینڈ: اس میں درمیانی ، اوپری اور نچلی ریلیں شامل ہیں
  2. Keltner چینلز: درمیانی ، اوپری اور نچلی ریل پر مشتمل ہے
  3. لمحہ اشارے: موجودہ قیمت اور n دن پہلے کی قیمت کا فرق

جب بورن بیلٹ ٹرانسمیشن کیلنڈر چینل ٹرانسمیشن سے کم ہے اور بورن بیلٹ ٹرانسمیشن کیلنڈر چینل ٹرانسمیشن سے زیادہ ہے، تو ہم سمجھتے ہیں کہ مارکیٹ ایک دباؤ کی حالت میں ہے. اس کا مطلب یہ ہے کہ موجودہ رجحان سازی کا عمل شروع ہونے والا ہے.

داخلہ کے وقت کا تعین کرنے کے لئے، ہم قیمتوں میں تبدیلی کی رفتار کا اندازہ کرنے کے لئے متحرک اشارے کا استعمال کرتے ہیں. جب متحرک اپ اس کی اوسط توڑنے کے لئے ایک خرید سگنل پیدا کرتا ہے؛ جب متحرک نیچے اس کی اوسط سے نیچے گرنے کے لئے ایک فروخت سگنل پیدا کرتا ہے.

حکمت عملی کا تجزیہ

اس حکمت عملی کے اہم فوائد یہ ہیں:

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

خطرے کا تجزیہ

اس کے علاوہ، اس میں کچھ خطرات بھی ہیں:

  1. برن بیلٹ اور کیلٹنر چینل میں غلط سگنل کا امکان زیادہ ہے
  2. ٹرانسمیشن کی رفتار غیر مستحکم ہے اور ممکنہ طور پر بہترین نقطہ نظر سے محروم ہے
  3. پیرامیٹرز کو بہتر بنانے کی ضرورت ہے ، ورنہ یہ کام نہیں کرے گا
  4. اثر اور تجارت کی قسم کے درمیان زیادہ تعلق

خطرے کو کم کرنے کے لئے ، یہ مشورہ دیا جاتا ہے کہ برن بینڈ اور کیلٹنر چینلز کی لمبائی کے پیرامیٹرز کو بہتر بنایا جائے ، اسٹاپ نقصان کی پوزیشنوں کو ایڈجسٹ کیا جائے ، اور دیگر اشارے کے ساتھ مل کر زیادہ لیکویڈیٹی والی تجارت کی اقسام کا انتخاب کیا جائے۔

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

اس حکمت عملی کو مزید بڑھانے کے لئے ، بنیادی اصلاحات یہ ہیں:

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

کثیر جہتی ٹیسٹنگ اور اصلاح کے ذریعہ ، اس حکمت عملی کی جیت اور منافع میں نمایاں اضافہ کیا جاسکتا ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2024-01-31 00:00:00
end: 2024-02-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mtahreemalam original strategy by LazyBear

strategy(title = 'SQM Strategy, TP & SL',
         shorttitle = 'Squeeze.M Strat',
         overlay = true,
         pyramiding = 0,
         default_qty_type = strategy.percent_of_equity,
         default_qty_value = 100,
         initial_capital = 1000,
         commission_type=strategy.commission.percent, 
         commission_value=0.0,
         process_orders_on_close=true,
         use_bar_magnifier=true)
//Strategy logic
strategy_logic = input.string("Cross above 0", "Strategy Logic", options = ["LazyBear", "Cross above 0"])

// Date Range
testPeriodSwitch = input(false, "Custom Backtesting Date Range",group="Backtesting Date Range")
i_startTime = input(defval = timestamp("01 Jan 2022 00:01 +0000"), title = "Backtesting Start Time",group="Backtesting Date Range")
i_endTime = input(defval = timestamp("31 Dec 2022 23:59 +0000"), title = "Backtesting End Time",group="Backtesting Date Range")
timeCond = true
isPeriod = testPeriodSwitch == true ? timeCond : true

//// Stoploss and Take Profit Parameters
// Enable Long Strategy
enable_long_strategy = input.bool(true, title='Enable Long Strategy', group='SL/TP For Long Strategy', inline='1')
long_stoploss_value = input.float(defval=5, title='Stoploss %', minval=0.1, group='SL/TP For Long Strategy', inline='2')
long_stoploss_percentage = close * (long_stoploss_value / 100) / syminfo.mintick
long_takeprofit_value = input.float(defval=5, title='Take Profit %', minval=0.1, group='SL/TP For Long Strategy', inline='2')
long_takeprofit_percentage = close * (long_takeprofit_value / 100) / syminfo.mintick

// Enable Short Strategy
enable_short_strategy = input.bool(true, title='Enable Short Strategy', group='SL/TP For Short Strategy', inline='3')
short_stoploss_value = input.float(defval=5, title='Stoploss %', minval=0.1, group='SL/TP For Short Strategy', inline='4')
short_stoploss_percentage = close * (short_stoploss_value / 100) / syminfo.mintick
short_takeprofit_value = input.float(defval=5, title='Take Profit %', minval=0.1, group='SL/TP For Short Strategy', inline='4')
short_takeprofit_percentage = close * (short_takeprofit_value / 100) / syminfo.mintick

//// Inputs
//SQUEEZE MOMENTUM STRATEGY
length = input(20, title='BB Length', group = "Squeeze Momentum Settings")
mult = input(2.0, title='BB MultFactor', group = "Squeeze Momentum Settings")
source = close
lengthKC = input(20, title='KC Length', group = "Squeeze Momentum Settings")
multKC = input(1.5, title='KC MultFactor', group = "Squeeze Momentum Settings")
useTrueRange = input(true, title='Use TrueRange (KC)', group = "Squeeze Momentum Settings")
signalPeriod=input(5, title="Signal Length", group = "Squeeze Momentum Settings")
show_labels_sqm = input(title='Show Buy/Sell SQM Labels', defval=true, group = "Squeeze Momentum Settings")
h0 = hline(0)

// Defining MA
ma = ta.sma(source, length)

// Calculate BB
basis = ma
dev = mult * ta.stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
range_1 = useTrueRange ? ta.tr : high - low
rangema = ta.sma(range_1, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC


// SqzON | SqzOFF | noSqz
sqzOn = lowerBB > lowerKC and upperBB < upperKC
sqzOff = lowerBB < lowerKC and upperBB > upperKC
noSqz = sqzOn == false and sqzOff == false

// Momentum
val = ta.linreg(source - math.avg(math.avg(ta.highest(high, lengthKC), ta.lowest(low, lengthKC)), ta.sma(close, lengthKC)), lengthKC, 0)

red_line = ta.sma(val,signalPeriod)
blue_line = val

// lqm = if val > 0
//         if val > nz(val[1])
        // long_sqm_custom
        // if val < nz(val[1])
        // short_sqm_custom
// Plots
//plot(val, style = plot.style_line, title = "blue line", color= color.blue, linewidth=2)
//plot(ta.sma(val,SignalPeriod), style = plot.style_line, title = "red line",color = color.red, linewidth=2)

//plot(val, color=blue, linewidth=2)
//plot(0, color=color.gray, style=plot.style_cross, linewidth=2)
//plot(red_line, color=red, linewidth=2)

//LOGIC
//momentum filter
//filterMom = useMomAverage ? math.abs(val) > MomentumMin / 100000 ? true : false : true
//}

////SQM Long Short Conditions
//Lazy Bear Buy Sell Condition
// long_sqm_lazy = (blue_line>red_line)
// short_sqm_lazy = (blue_line<red_line)

long_sqm_lazy = ta.crossover(blue_line,red_line)
short_sqm_lazy = ta.crossunder(blue_line,red_line)


//Custom Buy Sell Condition
dir_sqm = val < 0 ? -1 : 1
long_sqm_custom = dir_sqm == 1 //and dir_sqm[1] == -1
short_sqm_custom = dir_sqm == -1 //and dir_sqm[1] == 1

long_sqm = strategy_logic == "LazyBear" ? long_sqm_lazy : long_sqm_custom 
short_sqm = strategy_logic == "LazyBear" ? short_sqm_lazy : short_sqm_custom 


// Plot Stoploss & Take Profit Levels
long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value / 100)
long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value / 100)
short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value / 100)
short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value / 100)
plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_percentage : na, color=color.red, style=plot.style_linebr, linewidth=2, title='Long SL Level')
plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_percentage : na, color=color.green, style=plot.style_linebr, linewidth=2, title='Long TP Level')
plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price : na, color=color.red, style=plot.style_linebr, linewidth=2, title='Short SL Level')
plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price : na, color=color.green, style=plot.style_linebr, linewidth=2, title='Short TP Level')


// Long Strategy
if long_sqm and enable_long_strategy == true
    strategy.entry('Long', strategy.long)
    strategy.exit('Long  SL/TP', from_entry='Long', loss=long_stoploss_percentage, profit=long_takeprofit_percentage)
    strategy.close('Long', comment = "L. CL")

// Short Strategy
if short_sqm and enable_short_strategy == true 
    strategy.entry('Short', strategy.short)
    strategy.exit('Short SL/TP', from_entry='Short', loss=short_stoploss_percentage, profit=short_takeprofit_percentage)
    strategy.close('Short', comment = "S.Cl")

plot_sqm_long = long_sqm and not long_sqm[1]
plot_sqm_short = short_sqm and not short_sqm[1]

plotshape(plot_sqm_long and show_labels_sqm, title='Buy', style=shape.labelup, location=location.belowbar, size=size.normal, text='Buy', textcolor=color.new(color.white, 0), color=color.new(color.green, 0))
plotshape(plot_sqm_short and show_labels_sqm, title='Sell', style=shape.labeldown, location=location.abovebar, size=size.normal, text='Sell', textcolor=color.new(color.white, 0), color=color.new(color.red, 0))

// Date Range EXIT
if (not isPeriod) 
    strategy.cancel_all()
    strategy.close_all()