دوہری اشارے ہائبرڈ مقداری تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-12-20 10:31:06 آخر میں ترمیم کریں: 2023-12-20 10:31:06
کاپی: 0 کلکس کی تعداد: 613
1
پر توجہ دیں
1621
پیروکار

دوہری اشارے ہائبرڈ مقداری تجارتی حکمت عملی

جائزہ

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

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

اس حکمت عملی کا فیصلہ کرنے کے لئے تین اشارے کے سیٹوں کا استعمال کیا جاتا ہے۔ پہلے ، مختصر مدت کے رجحانات کا فیصلہ کرنے کے لئے تیز رفتار لائن EMA ((26 سائیکل) اور درمیانی رفتار لائن EMA ((50 سائیکل) کا سنہری فورک ڈائیفورک۔ دوسرا ، درمیانی مدت کے رجحانات کا فیصلہ کرنے کے لئے اس حد کو توڑنے کے لئے اس حد کو توڑنے کا فیصلہ کرنے کے لئے چینل کی حد کا حساب لگانا۔ آخر میں ، طویل مدتی اوسط لائن SMA ((200 سائیکل) کا حساب لگانا ، اور قیمت کے مقابلے میں اہم رجحانات کی سمت کا فیصلہ کرنا۔ صرف تینوں فیصلوں کے نتائج ایک جیسے ہونے پر ہی تجارتی سگنل جاری کیا جاتا ہے۔

اس کے علاوہ، اس کے بارے میں سوچنے کی منطق یہ ہے کہ:

  1. تیز رفتار لائن اور درمیانی رفتار لائن کی کراسنگ ((گولڈ فورک اوپر ، ڈیڈ فورک نیچے) قلیل مدتی رجحان کی سمت کا تعین کرتی ہے۔

  2. اگر قیمت چینل کی حد کو توڑتی ہے تو ، اس کا اندازہ درمیانی مدت کے رجحان کی سمت سے ہوتا ہے۔ چینل کی حد طویل مدتی اوسط سے مل کر اے ٹی آر کو کم کرنے کے ایک فیکٹر سے ضرب دی جاتی ہے۔ اگر قیمت اوپر کی حد کو توڑتی ہے تو ، یہ بیعانہ ہے؛ اگر نیچے کی حد کو توڑتی ہے تو ، یہ بیعانہ ہے۔

  3. قیمتوں اور طویل مدتی اوسط سائز کا موازنہ کرنے سے اہم رجحانات کی سمت کا تعین ہوتا ہے۔

آخر میں ، صرف اس صورت میں جب مختصر ، درمیانے اور طویل تینوں فیصلوں کے نتائج ایک جیسے ہوں گے تب ہی تجارتی سگنل جاری کیا جائے گا۔ اس طرح کا مخلوط فیصلہ جعلی سگنل کو مؤثر طریقے سے فلٹر کرنے اور استحکام کو بہتر بنانے میں مدد فراہم کرتا ہے۔

اسٹریٹجک فوائد

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

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

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

  3. رجحان ٹریڈنگ اور بینڈ ٹریڈنگ کے ساتھ مل کر ◄ درمیانی قلیل مدتی اشارے رجحانات کو پکڑتے ہیں ، طویل مدتی اشارے بینڈ کی وضاحت کرتے ہیں ، مجموعی طور پر رجحانات اور الٹ حکمت عملی کے فوائد کے ساتھ ◄

  4. فنڈز کے استعمال میں بہت زیادہ کارکردگی۔ فنڈز کو موثر طریقے سے استعمال کرنے اور غیر ضروری تجارت سے بچنے کے لئے صرف اس صورت میں آرڈر کریں جب متعدد اشارے کے نتائج متفق ہوں۔

اسٹریٹجک رسک

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

  1. پیرامیٹرز کو ترتیب دینے کا خطرہ۔ حرکت پذیر اوسط کی مدت اور چینل کی حد کے پیرامیٹرز کو مناسب طریقے سے ترتیب دینے کی ضرورت ہے ، اگر مناسب طریقے سے نہیں تو یہ رجحانات کو مؤثر طریقے سے دریافت کرنے میں ناکام ہوسکتا ہے یا بہت زیادہ غلط سگنل پیدا کرسکتا ہے۔

  2. ڈبل اشارے کے ساتھ تجارت کے مواقع کی لاگت میں اضافہ ہوتا ہے۔ ایک ہی اشارے کی حکمت عملی کے مقابلے میں ، کچھ تجارت کے مواقع سے محروم رہنا ممکن ہے ، بہترین نقطہ پر داخلہ اور باہر نکلنے سے قاصر ہے۔

  3. اسٹاپ نقصان کی حکمت عملی کو محتاط رہنے کی ضرورت ہے۔ اس حکمت عملی میں توڑنے والے اسٹاپ نقصان کا طریقہ کار غیر ضروری نقصان کا سبب بن سکتا ہے ، اور اسٹاپ نقصان کی تناسب کو محتاط طریقے سے ترتیب دینے کی ضرورت ہے۔

  4. یہ حکمت عملی زیادہ تر رجحانات کے ساتھ مارکیٹ کے ماحول کے لئے موزوں ہے.

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

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

  1. مختلف پیرامیٹرز کے مجموعے کی جانچ کریں اور بہترین پیرامیٹرز تلاش کریں۔ آپ زیادہ سے زیادہ تاریخی ڈیٹا ٹیسٹنگ کے ذریعہ بہترین پیرامیٹرز کی ترتیب تلاش کرسکتے ہیں۔

  2. خود کار طریقے سے اسٹاپ نقصان کا طریقہ کار شامل کریں۔ اس کو متحرک طور پر اسٹاپ نقصان کی حد کو ایڈجسٹ کرنے کے لئے Volatility Indicator کے ساتھ جوڑا جاسکتا ہے۔

  3. پیمائش کی صلاحیت کو بڑھانے کے لئے معاون فیصلے کریں۔ اہم مقامات پر پوزیشن کی حد کا تعین کرنے میں معاون ، فنڈز کے استعمال کی کارکردگی کو بہتر بنائیں۔

  4. داخلے کی منطق کو بہتر بنائیں۔ لاگت کی اوسط حکمت عملی پر زیادہ غور کریں ، جس سے داخلے کا خطرہ کم ہوجائے۔

  5. مشین لرننگ ماڈل کے ساتھ مل کر فیصلہ کریں۔ ماڈل کی مضبوطی اور فٹ ہونے کی خوبی کا فیصلہ کرنے کے لئے نیورل نیٹ ورکس جیسے ماڈل متعارف کروائیں۔

خلاصہ کریں۔

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

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

//@version=5
// Indicator to combines:
//           Trend Channel[Gu5] (SMA 200) +
//           EMA's cross  (26, 50 ) +
//           Golden Cross (50, 200)
// Author: @gu5tavo71 08/2019
// v2.3.6, 2022.02.18
// Trend Channel [Gu5] // Author: @gu5tavo71 08/2019
//
// This source code is subject to these terms:
// Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
// https://www.safecreative.org/work/2202190517452-mix1-ema-cross-trend-channel-gu5-
// You are free to:
// Share, copy and redistribute this script
// Adapt, transform and build on this script
// Under the following terms:
// Non-commercial: You cannot sell my indicator. You can't sell my work.
// Attribution: If you post part of my code, you must give me proper credit
//
// I am using part of this code published by @PineCoders and Public Library
// Disclaimer: I am not a financial advisor.
//             For purpose educate only. Use at your own risk.
strategy(title = 'Mix1 : Ema Cross + Trend Channel [Gu5] - Backtest', shorttitle = 'Mix01', overlay = true,
  initial_capital = 100,
  default_qty_value = 100,
  default_qty_type = strategy.percent_of_equity,
  commission_value = 0.075,
  commission_type = strategy.commission.percent,
  format = format.price,
  precision = 2,
  process_orders_on_close = true)


// ---------   Inputs                       "=============================="           |
i_maSrc      = input.source     (close,     'MA Source'                     , group    = 'EMAs')
i_maFast1    = input.int        (26,        'EMA Fast'                      , group    = 'EMAs')
i_maFast2    = input.int        (50,        'EMA Medium'                    , group    = 'EMAs')
i_maLen      = input.int        (200,       'MA Trend'                      , group    = 'Trend Channel')
o_maLen1     =                              'EMA'
o_maLen2     =                              'SMA'
i_maLenSel   = input.string     (o_maLen2,  'MA Type'                       , group    = 'Trend Channel',
               options = [o_maLen1, o_maLen2],
               tooltip = "EMA or SMA")
i_htf        = input.timeframe  ('',        'Select Higher Timeframe'       , tooltip  = 'Only for MA Trend'  , group    = 'Trend Channel')
i_rangeLen   = input.float      (0.618,     'Channel Range Length'          , tooltip  = 'ATR of the MA Trend', group    = 'Trend Channel')
i_slOn       = input.bool       (false,     '■ Stop Loss On/Off'            , group    = 'Stop Loss')
i_sl         = input.float      (2.618,     'SL %'                          , step     = 0.1, group    = 'Stop Loss')
i_periodSw   = input.bool       (true,      '■ Period On/Off'               , group    = 'Period')
o_start      = timestamp        (           '2020-01-01 00:00 GMT-3'        )
o_end        = timestamp        (           '2099-12-31 00:00 GMT-3'        )
i_periodStar = input       (o_start,   'Start Time'                    , group    = 'Period')
i_periodEnd  = input       (o_end,     'End Time'                      , group    = 'Period')
o_posSel1    =                              'Only Long'
o_posSel2    =                              'Only Short'
o_posSel3    =                              'Both'
i_posSel     = input.string     (o_posSel3, 'Position Type'                 , group   = 'Strategy',
               options = [o_posSel1, o_posSel2, o_posSel3],
               tooltip = "Only Long, Only short or Both")
o_typeS1     =                              'Strategy 1'
o_typeS2     =                              'Strategy 2'
i_typeS      = input.string     (o_typeS2,  'Strategy Type'                 , group   = 'Strategy',
               options = [o_typeS1, o_typeS2],
               tooltip = "Strategy 1:\nLong, when the price (close) crosses the ema.\nStrategy 2:\nLong, only when ema goes up")
i_barColOn   = input.bool       (true,      '■ Bar Color On/Off'            , group   = 'Display')
i_alertOn    = input.bool       (false,     '■ Alert On/Off'                , group   = 'Display')
i_channelOn  = input.bool       (false,     '■ Channel Range On/Off'        , tooltip = 'If the price (close) is over than the channel, the trend is bullish. If the price is under, bearish. And if the price is in the channel, it is in range', group   = 'Display')
i_goldenOn   = input.bool       (false,     '■ Golden Cross On/Off'         )
o_alert      =                              '{{strategy.order.comment}}'
i_alert      = input.string     (o_alert,   'Setting alert'                 , tooltip = 'For Alerts, just copy {{strategy.order.comment}} and paste in alert window.', group   = 'Display')

// ---------   Calculations
maFast1      = ta.ema(i_maSrc, i_maFast1)
maFast2      = ta.ema(i_maSrc, i_maFast2)
maDir        = maFast1 > maFast2 ? 1 : -1
maTrend      = request.security(syminfo.tickerid, i_htf,
               i_maLenSel == "SMA" ? ta.sma(close, i_maLen)[1] : ta.ema(close, i_maLen)[1],
               lookahead = barmerge.lookahead_on)  //No repaint
maTrendDir   = i_maSrc >= maTrend ? 1 : -1
rangeAtr     = ta.atr(i_maLen) * i_rangeLen
rangeTop     = maTrend + rangeAtr
rangeBot     = maTrend - rangeAtr
rangeCh      = (open <= rangeTop or close <= rangeTop) and
               (open >= rangeBot or close >= rangeBot)
trendDir     = i_typeS  ==  'Strategy 1'                            ?
               rangeCh                                                ?  0 :
               maTrendDir ==  1 and maDir ==  1 and maTrend > maFast2 ?  0 :
               maTrendDir == -1 and maDir == -1 and maTrend < maFast2 ?  0 :
               maTrendDir ==  1 and maDir ==  1                       ?  1 :
               maTrendDir == -1 and maDir == -1                       ? -1 : 0 :
               rangeCh                                                ?  0 :
               maTrendDir ==  1 and maDir ==  1                       ?  1 :
               maTrendDir == -1 and maDir == -1                       ? -1 : 0
GCross       = i_goldenOn ? ta.crossover (maFast2, maTrend) : na
DCross       = i_goldenOn ? ta.crossunder(maFast2, maTrend) : na

period       = true
// Set initial values
condition    = 0.0
entryLong    = trendDir ==  1 and
               i_posSel != 'Only Short' and
               (i_periodSw ? period : true)
entryShort   = trendDir == -1 and
               i_posSel != 'Only Long' and
               (i_periodSw ? period : true)
exitLong     = (trendDir !=  1 or maDir == -1) and
               condition[1] == 1 and 
               i_posSel != 'Only Short' and
               (i_periodSw ? period : true)
exitShort    = (trendDir != -1 or maDir ==  1) and
               condition[1] == -1 and
               i_posSel != 'Only Long' and
               (i_periodSw ? period : true)
closeCond    = exitLong or exitShort
// Stop Loss (sl)
slEntry      = close * i_sl / 100
slTop        = close + slEntry
slBot        = close - slEntry
slTopBuff    = ta.valuewhen(condition[1] !=  1 and entryLong,  slBot, 0)
slBotBuff    = ta.valuewhen(condition[1] != -1 and entryShort, slTop, 0)
slLine       = condition[1] == -1 and entryLong  ? slTopBuff :
               condition[1] ==  1 and entryShort ? slBotBuff :
               condition[1] ==  1  or entryLong  ? slTopBuff :
               condition[1] == -1  or entryShort ? slBotBuff : na
slTopCross   = condition[1] ==  1 and ta.crossunder(close, slLine) or high > slLine and low < slLine
slBotCross   = condition[1] == -1 and ta.crossover (close, slLine) or high > slLine and low < slLine
slExit       = i_slOn ? slTopCross or slBotCross : na
// Conditions
condition   := condition[1] !=  1 and entryLong  ?  1 :
               condition[1] != -1 and entryShort ? -1 :
               condition[1] !=  0 and slExit     ?  0 :
               condition[1] !=  0 and exitLong   ?  0 :
               condition[1] !=  0 and exitShort  ?  0 : nz(condition[1])
long         = condition[1] !=  1 and condition ==  1
short        = condition[1] != -1 and condition == -1
xl           = condition[1] ==  1 and exitLong and not slExit
xs           = condition[1] == -1 and exitShort and not slExit
sl           = condition[1] !=  0 and slExit

// ---------   Colors
c_green      = #006400  //Green
c_greenLight = #388e3c  //Green Light
c_red        = #8B0000  //Red
c_redLight   = #b71c1c  //Red Light
c_emas       = xl                             ? color.new(color.orange, 99) :
               xs                             ? color.new(color.orange, 99) :
               trendDir ==  1 and maDir ==  1 ? color.new(c_green,      99) :
               trendDir == -1 and maDir == -1 ? color.new(c_red,        99) :
               color.new(color.orange, 99)
c_maFill     = xl                             ? color.new(color.orange, 70) :
               xs                             ? color.new(color.orange, 70) :
               trendDir ==  1 and maDir ==  1 ? color.new(c_green,      70) :
               trendDir == -1 and maDir == -1 ? color.new(c_red,        70) :
               color.new(color.orange, 70)
c_maTrend    = trendDir ==  0                           ? color.new(color.orange,  0) :
               trendDir ==  1 and maTrend[1]  < maTrend ? color.new(c_green,       0) :
               trendDir ==  1 and maTrend[1] >= maTrend ? color.new(c_greenLight,  0) :
               trendDir == -1 and maTrend[1]  < maTrend ? color.new(c_redLight,    0) :
               trendDir == -1 and maTrend[1] >= maTrend ? color.new(c_red,         0) : na
c_ch         = trendDir ==  0                           ? color.new(color.orange, 50) :
               trendDir ==  1                           ? color.new(c_green,      50) :
               trendDir == -1                           ? color.new(c_red,        50) : na
c_slLineUp   = ta.rising (slLine, 1)
c_slLineDn   = ta.falling(slLine, 1)
c_slLine     = c_slLineUp ? na :
               c_slLineDn ? na : color.red
c_barCol     = trendDir ==  0                   ? color.new(color.orange,  0) :
               trendDir ==  1 and open <= close ? color.new(c_green,       0) :
               trendDir ==  1 and open  > close ? color.new(c_greenLight,  0) :
               trendDir == -1 and open >= close ? color.new(c_red,         0) :
               trendDir == -1 and open  < close ? color.new(c_redLight,    0) :
               color.new(color.orange, 0)

// ---------   Plots
p_maFast1    = plot(
  maFast1,
  title      = 'EMA Fast 1',
  color      = c_emas,
  linewidth  = 1)
p_maFast2    = plot(
  maFast2,
  title      = 'EMA Fast 2',
  color      = c_emas,
  linewidth  = 2)
fill(
  p_maFast1, p_maFast2,
  title      = 'EMAs Fill',
  color      = c_maFill)
plot(
  maTrend,
  title      = 'SMA Trend',
  color      = c_maTrend,
  linewidth  = 3)
p_chTop      = plot(
  i_channelOn   ? rangeTop : na,
  title      = 'Top Channel',
  color      = c_maTrend,
  linewidth  = 1)
p_chBot      = plot(
  i_channelOn   ? rangeBot : na,
  title      = 'Bottom Channel',
  color      = c_maTrend,
  linewidth  = 1)
fill(
  p_chTop, p_chBot,
  title      = 'Channel',
  color      = c_ch)
plot(
  i_slOn and condition != 0 ? slLine : na,
  title      = 'Stop Loss Line',
  color      = c_slLine,
  linewidth  = 1,
  style      = plot.style_linebr)

// ---------   Alerts
barcolor(i_barColOn ? c_barCol : na)

plotshape(
  i_alertOn and long ? high : na,
  title      = 'Long Label',
  text       = 'Long',
  textcolor  = color.white,
  color      = color.new(c_green, 0),
  style      = shape.labelup,
  size       = size.normal,
  location   = location.belowbar)
plotshape(
  i_alertOn and short ? low : na,
  title      = 'Short Label',
  text       = 'Short',
  textcolor  = color.white,
  color      = color.new(c_red, 0),
  style      = shape.labeldown,
  size       = size.normal,
  location   = location.abovebar)
plotshape(
  i_alertOn and (xl or xs) ? close : na,
  title      = 'Close Label',
  text       = 'Close',
  textcolor  = color.orange,
  color      = color.new(color.orange, 0),
  style      = shape.xcross,
  size       = size.small,
  location   = location.absolute)
plotshape(
  i_alertOn and sl ? slLine : na,
  title      = 'Stop Loss',
  text       = 'Stop\nLoss',
  textcolor  = color.orange,
  color      = color.new(color.orange, 0),
  style      = shape.xcross,
  size       = size.small,
  location   = location.absolute)
plotshape(
  i_alertOn and i_goldenOn and GCross ? maTrend : na,
  title      = 'Golden Cross Label',
  text       = 'Golden\nCross',
  textcolor  = color.white,
  color      = color.new(color.orange, 0),
  style      = shape.labelup,
  size       = size.normal,
  location   = location.absolute)
plotshape(
  i_alertOn and i_goldenOn and DCross ? maTrend : na,
  title      = 'Death Cross Label',
  text       = 'Death\nCross',
  textcolor  = color.white,
  color      = color.new(color.orange, 0),
  style      = shape.labeldown,
  size       = size.normal,
  location   = location.absolute)

bgcolor(
  i_periodSw and not period ? color.new(color.gray, 90) : na,
  title      = 'Session')

// ---------   Backtest
if long  and strategy.position_size == 0 and barstate.isconfirmed
    strategy.entry('Long',  strategy.long,  comment = 'long')
if short and strategy.position_size == 0 and barstate.isconfirmed
    strategy.entry('Short', strategy.short, comment = 'short')
strategy.exit(
  id         = 'XL',
  from_entry = 'Long',
  stop       = i_slOn ? slLine : na)
strategy.exit(
  id         = 'XS',
  from_entry = 'Short',
  stop       = i_slOn ? slLine : na)
strategy.close(
  'Long',
  comment    = 'Close',
  when       = xl)
strategy.close(
  'Short',
  comment    = 'Close',
  when = xs)