ہل چلتی اوسط اور اسٹوکاسٹک آر ایس آئی کے مجموعی تجارتی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-18 12:40:23
ٹیگز:

img

جائزہ

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

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

اس حکمت عملی کے اہم اجزاء رجحان کی سمت کے لئے ہل چلتی اوسط اور ٹائمنگ انٹری سگنل کے لئے اسٹوکاسٹک آر ایس آئی ہیں۔

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

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

اسٹوکاسٹک آر ایس آئی کا حساب بھی متعین کیا گیا ہے ، جس میں ہموار K اور D اقدار شامل ہیں۔ K قدر RSI پر SMA ہموار کا استعمال کرتی ہے ، جبکہ D قدر K پر دوسرا SMA ہموار ہے۔

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

ہل ٹرینڈ فلٹر اور اسٹاک آر ایس آئی اوور بک / اوور سیل تجزیہ کو یکجا کرنے سے تجارت میں داخل ہونے کے لئے ایک مضبوط کثیر عنصر نقطہ نظر فراہم ہوتا ہے۔

فوائد

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

  1. ہیل ایم اے مؤثر طریقے سے مارکیٹ کی مجموعی رجحان کی سمت کی نشاندہی کرتا ہے.

  2. اسٹاک آر ایس آئی وقت کے اندراجات پر زیادہ خرید / زیادہ فروخت کی سطح کا تعین کرتا ہے۔

  3. دونوں کو ایک ساتھ استعمال کرنے سے غلط سگنل کم ہوتے ہیں اور طاقت کو یکجا کرتے ہیں۔

  4. مختلف علامتوں اور وقت کے فریم کے لئے پیرامیٹرز کو بہتر بنانے کے لئے لچکدار.

  5. ہول بینڈ ممکنہ متحرک حمایت اور مزاحمت کی نشاندہی کرتے ہیں.

  6. اس میں پوزیشن سائزنگ اور رسک مینجمنٹ کے قواعد شامل ہیں۔

  7. کروز ڈیٹا ڈکشنری کے ذریعے کثیر اثاثہ صلاحیت.

  8. منافع میں اضافہ اور استعمال کو کم کرنے کے لئے بہتر اجزاء.

خطرات

غور کرنے کے لیے کچھ خطرات:

  1. ہل ایم اے میں تاخیر ہے اور رجحان کی تبدیلیوں کو نظر انداز کر سکتا ہے.

  2. اگر پیرامیٹرز کو بہتر نہیں کیا جاتا ہے تو اسٹاک آر ایس آئی زیادہ سگنل پیدا کرسکتا ہے۔

  3. ہل اور اسٹوک پیرامیٹرز کے درمیان عدم مطابقت خراب سگنل کا سبب بن سکتی ہے.

  4. ہول بینڈ بہت وسیع یا تنگ سگنل کی کیفیت کو متاثر کرے گا.

  5. حالیہ غیر مستحکم مارکیٹوں نے درمیانی / طویل مدتی اشارے کو چیلنج کیا ہے۔

  6. ہل اور اسٹاک کے درمیان ڈیٹا کی عدم مطابقت غلط سگنل کا سبب بنتا ہے.

  7. ہل کی طرف سے نہیں پکڑے جانے والے تیز رجحان کی تبدیلی نقصانات کا سبب بن سکتی ہے.

  8. متعدد ٹائم فریم اور علامتوں پر توسیع ٹیسٹنگ کی ضرورت ہے.

ان مسائل سے نمٹنے کے کچھ طریقے:

  1. زیادہ سے زیادہ رجحان حساسیت کے لئے ہول ایم اے کی لمبائی کو کم کریں.

  2. غلط کراسز کو فلٹر کرنے کے لئے اسٹوک آر ایس آئی کو بہتر بنائیں.

  3. بہترین ہول بینڈ چینل کی چوڑائی تلاش کریں.

  4. MACD جیسے اضافی تصدیق کرنے والے اشارے شامل کریں۔

  5. خطرے کو کنٹرول کرنے کے لئے سٹاپ نقصان کی حکمت عملی شامل کریں.

اصلاح کے مواقع

اس حکمت عملی کو بہتر بنانے کے کچھ طریقے:

  1. مضبوطی کی تصدیق کے لئے مختلف وقت کے فریموں میں زیادہ علامتوں پر ٹیسٹ کریں.

  2. سٹاپ نقصان میکینکس شامل کریں جیسے ٹریلنگ اسٹاپ یا چلتی اوسط.

  3. داخلہ قوانین کو بہتر بنائیں، جھوٹے سگنل کو کم کرنے کے لئے سخت فلٹرز مقرر کریں.

  4. حمایت اور مزاحمت کو بہتر طور پر بیان کرنے کے لئے ہول بینڈ کا استعمال کرتے ہوئے دریافت کریں.

  5. سگنل کی وشوسنییتا کو بہتر بنانے کے لئے اضافی تصدیق کرنے والے اشارے کا جائزہ لیں۔

  6. لمبائی، overbought / oversold سطحوں، وغیرہ کے لئے پیرامیٹر کی اصلاح

  7. بہتر پوزیشن سائزنگ اور رسک مینجمنٹ متعارف کروانا۔

  8. لائیو ٹریڈنگ کے لئے ضروری اندراج، سٹاپ نقصان اور منافع لینے کے قواعد شامل کریں.

  9. بہتر رجحان حساسیت کے لئے ہول کی لمبائی کو بہتر بنائیں.

  10. سگنل کے معیار کو بہتر بنانے کے لئے فلٹرز یا تصدیق کرنے والے اشارے شامل کریں.

  11. متحرک حمایت / مزاحمت کی سطح کے لئے hull بینڈ کی تلاش.

  12. اسٹاک آر ایس آئی پیرامیٹرز کو بہتر بنائیں جیسے لمبائی، زیادہ خرید/زیادہ فروخت۔

  13. اعلی درجے کی پوزیشن سائزنگ اور رسک مینجمنٹ کو نافذ کریں۔

نتیجہ

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


/*backtest
start: 2023-10-16 00:00:00
end: 2023-10-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
//Converted to Strategy by DashTrader
strategy("Hull Suite + Stoch RSI Strategy v1.1", overlay=true, pyramiding=1, initial_capital=100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.023)
strat_dir_input = input(title="Strategy Direction", defval="all", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

stoch_upper_input = input(88, "Stoch Upper Threshold", type=input.float)
stoch_lower_input = input(5, "Stoch Lower Threshold", type=input.float)
sl = input(0.7, "SL %", type=input.float, step=0.1)
tp = input(2.1, "TP %", type=input.float, step=0.1)
// slowEMA = ema(close, slowEMA_input)

// vwap = vwap(close)
// rsi = rsi(close, rsi_input)


// stoch rsi
smoothK = 3
smoothD = 3
lengthRSI = 14
lengthStoch = 14
rsi1 = rsi(close, 14)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
src = input(close, title="Source")
modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(180, title="Length(180-200 for floating S/R , 55 for swing entry)")
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - 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, length)
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)

bgcolor(color = k < stoch_lower_input  and crossover(k, d) ? color.green : na)
bgcolor(color = d > stoch_upper_input and crossover(d, k) ? color.red : na)

notInTrade = strategy.position_size == 0

if notInTrade and HULL[0] > HULL[2] and testPeriod() and k < stoch_lower_input and crossover(k, d)
// if HULL[0] > HULL[2] and testPeriod()
    stopLoss = close * (1 - sl / 100) 
    profit25 = close * (1 + (tp / 100) * 0.25)
    profit50 = close * (1 + (tp / 100) * 0.5)
    takeProfit = close * (1 + tp / 100)
    
    
    strategy.entry("long", strategy.long, alert_message="buy")
    strategy.exit("exit long 25%", "long", stop=stopLoss, limit=profit25, qty_percent=25, alert_message="profit_25")
    strategy.exit("exit long 50%", "long", stop=stopLoss, limit=profit50, qty_percent=25, alert_message="profit_50")
    strategy.exit("exit long", "long", stop=stopLoss, limit=takeProfit)
    
    // line.new(bar_index, profit25, bar_index + 4, profit25, color=color.green)
    // line.new(bar_index, profit50, bar_index + 4, profit50, color=color.green)
    // box.new(bar_index, stopLoss, bar_index + 4, close, border_color=color.red, bgcolor=color.new(color.red, 80))
    // box.new(bar_index, close, bar_index + 4, takeProfit, border_color=color.green, bgcolor=color.new(color.green, 80))

    
if notInTrade and HULL[0] < HULL[2] and testPeriod() and d > stoch_upper_input and crossover(d, k)
// if HULL[0] < HULL[2] and testPeriod()
    stopLoss = close * (1 + sl / 100)
    profit25 = close * (1 - (tp / 100) * 0.25)
    profit50 = close * (1 - (tp / 100) * 0.5)
    takeProfit = close * (1 - tp / 100)
    
    

    strategy.entry("short", strategy.short, alert_message="sell")
    strategy.exit("exit short 25%", "short", stop=stopLoss, limit=profit25, qty_percent=25, alert_message="profit_25")
    strategy.exit("exit short 50%", "short", stop=stopLoss, limit=profit50, qty_percent=25, alert_message="profit_50")
    strategy.exit("exit short", "short", stop=stopLoss, limit=takeProfit)
    
    // line.new(bar_index, profit25, bar_index + 4, profit25, color=color.green)
    // line.new(bar_index, profit50, bar_index + 4, profit50, color=color.green)
    // box.new(bar_index, stopLoss, bar_index + 4, close, border_color=color.red, bgcolor=color.new(color.red, 80))
    // box.new(bar_index, close, bar_index + 4, takeProfit, border_color=color.green, bgcolor=color.new(color.green, 80))

// var table winrateDisplay = table.new(position.bottom_right, 1, 1)
// table.cell(winrateDisplay, 0, 0, "Winrate: " + tostring(strategy.wintrades / strategy.closedtrades * 100, '#.##')+" %", text_color=color.white)

مزید