کمپریشن اشارے پر مبنی ملٹی ٹائم فریم تجارتی حکمت عملی


تخلیق کی تاریخ: 2024-02-27 17:40:03 آخر میں ترمیم کریں: 2024-02-27 17:40:03
کاپی: 0 کلکس کی تعداد: 684
1
پر توجہ دیں
1617
پیروکار

کمپریشن اشارے پر مبنی ملٹی ٹائم فریم تجارتی حکمت عملی

جائزہ

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

اصول

اس حکمت عملی کی بنیادی منطق مندرجہ ذیل تین اشارے پر مبنی ہے۔

  1. بوم ہنٹر: ایک اشارے کمپریشن ٹیکنالوجی کا استعمال کرتے ہوئے ایک oscillator کی، دو اشارے (Quotient1 اور Quotient2) کے ایک کراس کی طرف سے خریدنے اور فروخت سگنل کا فیصلہ کرنے کے لئے.

  2. ہل سوٹ: ایک ہموار متحرک اوسط اشارے کا ایک سیٹ ، جو وسط اور اوپر اور نیچے کی ریلوں کے تعلقات کے ذریعے رجحان کی سمت کا فیصلہ کرتا ہے۔

  3. وولٹیلیٹی اوسیلیٹرقیمتوں میں اضافے کے بارے میں معلومات کی ایک مقدار کے طور پر استعمال کیا جاتا ہے.

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

اسٹاپ نقصان ایک خاص دورانیے میں ((ڈیفالٹ 20 K لائن) کی کم ترین وادی یا چوٹی کی تلاش کے ذریعہ طے کیا جاتا ہے ، جبکہ منافع اسٹاپ نقصان فی صد ضرب تعیناتی اسٹاپ تناسب ((ڈیفالٹ 3 گنا) کے ذریعہ حاصل کیا جاتا ہے۔ پوزیشنوں کا حساب کتاب اکاؤنٹ کے کل اثاثوں کے فیصد ((ڈیفالٹ 3٪) اور مخصوص اشارے کے اسٹاپ نقصان کی حد کے مطابق کیا جاتا ہے۔

فوائد

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

خطرات

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

حل:

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

اصلاح کرنا

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

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

  2. ٹائم فریم کی اصلاحمختلف ٹائم سائیکلوں کی جانچ کریں (مثال کے طور پر 1 منٹ، 5 منٹ، 30 منٹ وغیرہ) ، بہترین ٹریڈنگ سائیکل تلاش کریں

  3. پوزیشن کی اصلاح: ہر تجارت میں پوزیشنوں کے سائز اور تناسب کو تبدیل کریں اور فنڈز کے بہترین استعمال کا پتہ لگائیں

  4. سٹاپ نقصان کی اصلاح: مختلف تجارتوں کے مطابق اسٹاپ نقصان کی پوزیشن کو ایڈجسٹ کریں تاکہ بہترین رسک ٹو ریٹرن تناسب حاصل کیا جاسکے

  5. حالات کی اصلاح: زیادہ یا کم اشارے فلٹرنگ کی شرائط، زیادہ درست اندراج وقت حاصل کرنے کے لئے

خلاصہ کریں۔

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

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

// Strategy based on the 3 indicators:
//  - Boom Hunter Pro
//  - Hull Suite
//  - Volatility Oscillator
//
// Strategy was designed for the purpose of back testing. 
// See strategy documentation for info on trade entry logic.
// 
// Credits:
//  - Boom Hunter Pro: veryfid (https://www.tradingview.com/u/veryfid/)
//  - Hull Suite: InSilico (https://www.tradingview.com/u/InSilico/)
//  - Volatility Oscillator: veryfid (https://www.tradingview.com/u/veryfid/)

//@version=5
strategy("Boom Hunter + Hull Suite + Volatility Oscillator Strategy", overlay=false, initial_capital=1000, currency=currency.NONE, max_labels_count=500, default_qty_type=strategy.cash, commission_type=strategy.commission.percent, commission_value=0.01)

// =============================================================================
// STRATEGY INPUT SETTINGS
// =============================================================================

// ---------------
// Risk Management
// ---------------
swingLength = input.int(20, "Swing High/Low Lookback Length", group='Strategy: Risk Management', tooltip='Stop Loss is calculated by the swing high or low over the previous X candles')
accountRiskPercent = input.float(3, "Account percent loss per trade", step=0.1, group='Strategy: Risk Management', tooltip='Each trade will risk X% of the account balance')
profitFactor = input.float(3, "Profit Factor (R:R Ratio)", step = 0.1, group='Strategy: Risk Management')

// ----------
// Date Range
// ----------
start_year = input.int(title='Start Date', defval=2022, minval=2010, maxval=3000, group='Strategy: Date Range', inline='1')
start_month = input.int(title='', defval=1, group='Strategy: Date Range', inline='1', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
start_date = input.int(title='', defval=1, group='Strategy: Date Range', inline='1', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
end_year = input.int(title='End Date', defval=2023, minval=1800, maxval=3000, group='Strategy: Date Range', inline='2')
end_month = input.int(title='', defval=1, group='Strategy: Date Range', inline='2', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
end_date = input.int(title='', defval=1, group='Strategy: Date Range', inline='2', options = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
in_date_range = true

// =============================================================================
// INDICATORS
// =============================================================================

// ---------------
// Boom Hunter Pro
// ---------------
square = input.bool(true, title='Square Line?', group='Main Settings')
//Quotient
LPPeriod = input.int(6, title='Quotient | LPPeriod', inline='quotient', group='EOT 1 (Main Oscillator)')
K1 = input.int(0, title='K1', inline='quotient', group='EOT 1 (Main Oscillator)')
esize = 60  //, title = "Size", inline = "quotient2", group = "EOT 1 (Main Oscillator)")
ey = 50  //, title = "Y axis", inline = "quotient2", group = "EOT 1 (Main Oscillator)")
trigno = input.int(1, 'Trigger Length', group='EOT 1 (Main Oscillator)', inline='quotient2')
trigcol = input.color(color.white, title='Trigger Color:', group='EOT 1 (Main Oscillator)', inline='q2')

// EOT 2
//Inputs
LPPeriod2 = input.int(28, title='LPPeriod2', group='EOT 2 (Red Wave)', inline='q2')
K22 = input.float(0.3, title='K2', group='EOT 2 (Red Wave)', inline='q2')

//EOT 1
//Vars
alpha1 = 0.00
HP = 0.00
a1 = 0.00
b1 = 0.00
c1 = 0.00
c2 = 0.00
c3 = 0.00
Filt = 0.00
Peak = 0.00
X = 0.00
Quotient1 = 0.00
pi = 2 * math.asin(1)

//Highpass filter cyclic components
//whose periods are shorter than 100 bars
alpha1 := (math.cos(.707 * 2 * pi / 100) + math.sin(.707 * 2 * pi / 100) - 1) / math.cos(.707 * 2 * pi / 100)
HP := (1 - alpha1 / 2) * (1 - alpha1 / 2) * (close - 2 * nz(close[1]) + nz(close[2])) + 2 * (1 - alpha1) * nz(HP[1]) - (1 - alpha1) * (1 - alpha1) * nz(HP[2])

//SuperSmoother Filter
a1 := math.exp(-1.414 * pi / LPPeriod)
b1 := 2 * a1 * math.cos(1.414 * pi / LPPeriod)
c2 := b1
c3 := -a1 * a1
c1 := 1 - c2 - c3
Filt := c1 * (HP + nz(HP[1])) / 2 + c2 * nz(Filt[1]) + c3 * nz(Filt[2])

//Fast Attack - Slow Decay Algorithm
Peak := .991 * nz(Peak[1])
if math.abs(Filt) > Peak
    Peak := math.abs(Filt)
    Peak

//Normalized Roofing Filter
if Peak != 0
    X := Filt / Peak
    X

Quotient1 := (X + K1) / (K1 * X + 1)

// EOT 2
//Vars
alpha1222 = 0.00
HP2 = 0.00
a12 = 0.00
b12 = 0.00
c12 = 0.00
c22 = 0.00
c32 = 0.00
Filt2 = 0.00
Peak2 = 0.00
X2 = 0.00
Quotient4 = 0.00

alpha1222 := (math.cos(.707 * 2 * pi / 100) + math.sin(.707 * 2 * pi / 100) - 1) / math.cos(.707 * 2 * pi / 100)
HP2 := (1 - alpha1222 / 2) * (1 - alpha1222 / 2) * (close - 2 * nz(close[1]) + nz(close[2])) + 2 * (1 - alpha1222) * nz(HP2[1]) - (1 - alpha1222) * (1 - alpha1222) * nz(HP2[2])

//SuperSmoother Filter
a12 := math.exp(-1.414 * pi / LPPeriod2)
b12 := 2 * a12 * math.cos(1.414 * pi / LPPeriod2)
c22 := b12
c32 := -a12 * a12
c12 := 1 - c22 - c32
Filt2 := c12 * (HP2 + nz(HP2[1])) / 2 + c22 * nz(Filt2[1]) + c32 * nz(Filt2[2])

//Fast Attack - Slow Decay Algorithm
Peak2 := .991 * nz(Peak2[1])
if math.abs(Filt2) > Peak2
    Peak2 := math.abs(Filt2)
    Peak2

//Normalized Roofing Filter
if Peak2 != 0
    X2 := Filt2 / Peak2
    X2

Quotient4 := (X2 + K22) / (K22 * X2 + 1)
q4 = Quotient4 * esize + ey

//Plot EOT
q1 = Quotient1 * esize + ey
trigger = ta.sma(q1, trigno)
Plot3 = plot(trigger, color=trigcol, linewidth=2, title='Quotient 1')
Plot44 = plot(q4, color=color.new(color.red, 0), linewidth=2, title='Quotient 2')


// ----------
// HULL SUITE
// ----------

//INPUT
src = input(close, title='Source')
modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma'])
length = input(200, title='Length(180-200 for floating S/R , 55 for swing entry)')
lengthMult = input(2.4, title='Length multiplier (Used to view higher timeframes with straight band)')

useHtf = input(false, title='Show Hull MA from X timeframe? (good for scalping)')
htf = input.timeframe('240', title='Higher timeframe')

//FUNCTIONS
//HMA
HMA(_src, _length) =>
    ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>
    ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length)))
//THMA    
THMA(_src, _length) =>
    ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.wma(_src, _length), _length)

//SWITCH
Mode(modeSwitch, src, len) =>
    modeSwitch == 'Hma' ? HMA(src, len) : modeSwitch == 'Ehma' ? EHMA(src, len) : modeSwitch == 'Thma' ? THMA(src, len / 2) : na

//OUT
_hull = Mode(modeSwitch, src, int(length * lengthMult))
HULL = useHtf ? request.security(syminfo.ticker, htf, _hull) : _hull
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = MHULL > SHULL ? color.green : color.red

//PLOT
///< Frame
Fi1 = plot(-10, title='MHULL', color=hullColor, linewidth=2)

// -----------------
// VOLUME OSCILLATOR
// -----------------

volLength = input(80)
spike = close - open
x = ta.stdev(spike, volLength)
y = ta.stdev(spike, volLength) * -1
volOscCol = spike > x ? color.green : spike < y ? color.red : color.gray
plot(-30, color=color.new(volOscCol, transp=0), linewidth=2)


// =============================================================================
// STRATEGY LOGIC
// =============================================================================

// Boom Hunter Pro entry conditions
boomLong = ta.crossover(trigger, q4)
boomShort = ta.crossunder(trigger, q4)

// Hull Suite entry conditions
hullLong = MHULL > SHULL and close > MHULL
hullShort = MHULL < SHULL and close < SHULL

// Volatility Oscillator entry conditions
volLong = spike > x
volShort = spike < y

inLong = strategy.position_size > 0
inShort = strategy.position_size < 0

longCondition = boomLong and hullLong and volLong and in_date_range
shortCondition = boomShort and hullShort and volShort and in_date_range

swingLow = ta.lowest(source=low, length=swingLength)
swingHigh = ta.highest(source=high, length=swingLength)

atr = ta.atr(14)
longSl = math.min(close - atr, swingLow)
shortSl = math.max(close + atr, swingHigh)

longStopPercent = math.abs((1 - (longSl / close)) * 100)
shortStopPercent = math.abs((1 - (shortSl / close)) * 100)

longTpPercent = longStopPercent * profitFactor
shortTpPercent = shortStopPercent * profitFactor
longTp = close + (close * (longTpPercent / 100))
shortTp = close - (close * (shortTpPercent / 100))

// Position sizing (default risk 3% per trade)
riskAmt = strategy.equity * accountRiskPercent / 100
longQty = math.abs(riskAmt / longStopPercent * 100) / close
shortQty = math.abs(riskAmt / shortStopPercent * 100) / close

if (longCondition and not inLong)
    strategy.entry("Long", strategy.long, qty=longQty)
    strategy.exit("Long  SL/TP", from_entry="Long", stop=longSl, limit=longTp, alert_message='Long SL Hit')
    buyLabel = label.new(x=bar_index, y=high[1], color=color.green, style=label.style_label_up)
    label.set_y(id=buyLabel, y=-40)
    label.set_tooltip(id=buyLabel, tooltip="Risk Amt: " + str.tostring(riskAmt) + " Qty: " + str.tostring(longQty) + " Swing low: " + str.tostring(swingLow) + " Stop Percent: " + str.tostring(longStopPercent) + " TP Percent: " + str.tostring(longTpPercent))

if (shortCondition and not inShort)
    strategy.entry("Short", strategy.short, qty=shortQty)
    strategy.exit("Short  SL/TP", from_entry="Short", stop=shortSl, limit=shortTp, alert_message='Short SL Hit')
    sellLabel = label.new(x=bar_index, y=high[1], color=color.red, style=label.style_label_up)
    label.set_y(id=sellLabel, y=-40)
    label.set_tooltip(id=sellLabel, tooltip="Risk Amt: " + str.tostring(riskAmt) + " Qty: " + str.tostring(shortQty) + " Swing high: " + str.tostring(swingHigh) + " Stop Percent: " + str.tostring(shortStopPercent) + " TP Percent: " + str.tostring(shortTpPercent))