وسائل لوڈ ہو رہے ہیں... لوڈنگ...

لزی بیئر سکیچ مومنٹم حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-02-02 17:42:58
ٹیگز:

img

جائزہ

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

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

حکمت عملی منطق

لیزی بیئر سکیز مومنٹم حکمت عملی مندرجہ ذیل تین اشارے پر مبنی فیصلے کرتی ہے:

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

جب بولنگر کا اوپری بینڈ کیلٹنر کی اوپری لائن سے نیچے ہوتا ہے اور بولنگر کا نچلا بینڈ کیلٹنر کی نچلی لائن سے اوپر ہوتا ہے تو ہم اس بات کا تعین کرتے ہیں کہ مارکیٹ ایک سکڑ میں ہے۔ اس کا مطلب عام طور پر یہ ہوتا ہے کہ رجحان کی حرکت شروع ہونے والی ہے۔

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

فوائد کا تجزیہ

لیزی بیئر سکیز مومنٹم حکمت عملی کے اہم فوائد:

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

خطرے کا تجزیہ

لیزی بیئر سکیز مومنٹم کی حکمت عملی میں بھی کچھ خطرات ہیں:

  1. Bollinger & Keltner کی طرف سے جھوٹے سگنل کا امکان
  2. رفتار کی عدم استحکام، بہترین اندراجات کی کمی
  3. اصلاح کے بغیر خراب کارکردگی
  4. مصنوعات کے انتخاب کے ساتھ اعلی تعلق

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

اصلاح کی ہدایات

کارکردگی کو مزید بہتر بنانے کے لئے اہم سمتیں:

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

سخت جانچ اور اصلاح کے ذریعے، حکمت عملی کے برتری اور منافع کو بہت بہتر بنایا جا سکتا ہے.

نتیجہ

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


/*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()


مزید