ہال انڈیکیٹر اور اسٹاکسٹک انڈیکیٹر کی مشترکہ تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-10-18 12:40:23 آخر میں ترمیم کریں: 2023-10-18 12:40:23
کاپی: 1 کلکس کی تعداد: 1028
1
پر توجہ دیں
1617
پیروکار

ہال انڈیکیٹر اور اسٹاکسٹک انڈیکیٹر کی مشترکہ تجارتی حکمت عملی

جائزہ

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

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

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

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

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

اس کے علاوہ ، حکمت عملی میں بے ترتیب اشارے کے حساب کتاب کے طریقوں کی بھی وضاحت کی گئی ہے ، جس میں K اور D اقدار کے حساب کتاب کے فارمولے شامل ہیں۔ K اقدار RSI کے SMA smoothed ہیں ، اور D اقدار K کے دوبارہ SMA smoothed ہیں۔

رجحان کی سمت کا تعین کرنے کے بعد ، اگر پائیڈ ہو تو ، جب بے ترتیب اشارے کی K لائن اوور سیل زون سے نیچے سے D لائن کو عبور کرتی ہے تو زیادہ کریں۔ اگر بیکار ہو تو ، جب K لائن اوور سیل زون سے اوپر سے D لائن کو عبور کرتی ہے تو خالی کریں۔

اس طرح ، ہال اشارے کے رجحانات کے فیصلے اور بے ترتیب اشارے کے اوپری خرید اوپری فروخت کے فیصلے کے ساتھ مل کر ، زیادہ مستحکم اور درست اندراج ممکن ہے۔

طاقت کا تجزیہ

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

خاص طور پر ، اس میں مندرجہ ذیل فوائد ہیں:

  1. ہال اشارے بڑے پیمانے پر پوزیشننگ کے لئے مارکیٹ کے رجحانات کی سمت کو مؤثر طریقے سے سمجھ سکتے ہیں؛

  2. اس کے علاوہ ، اس کے نتیجے میں ، اس نے مارکیٹ میں بہت زیادہ سرمایہ کاری کی ہے ، اور اس کے نتیجے میں ، اس نے مارکیٹ میں بہت زیادہ سرمایہ کاری کی ہے۔

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

  4. مختلف اقسام اور وقت کے دورانیے کے لئے لچکدار اور قابل اطلاق ، پیرامیٹرز کو ایڈجسٹ کرنے کے ذریعے؛

  5. اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ ، اس کے علاوہ

  6. STOP LOSS، EXIT ON TARGETS percent used to scale positions بڑے پیمانے پر پوزیشن کنٹرول

  7. Use of hull data Dictionary gives multiple asset class flexibility

  8. آپٹمائزیشن کی منتخب کردہ سمتوں سے حکمت عملی کی استحکام اور منافع میں اضافہ ہوتا ہے

خطرے کا تجزیہ

اس حکمت عملی میں کچھ خطرات بھی ہیں جن کے بارے میں آگاہ ہونا ضروری ہے، خاص طور پر:

  1. ہال انڈیکس میں تاخیر ہے ، اور اس سے رجحان کی تبدیلی سے محروم ہوسکتا ہے ، جس سے غیر ضروری نقصان ہوتا ہے۔

  2. بے ترتیب اشارے کے پیرامیٹرز کی غلط ترتیب سے اضافی سگنل پیدا ہوسکتے ہیں۔ K لائن اور D لائن کے کراس سگنل کو مناسب طریقے سے فلٹر کیا جانا چاہئے۔

  3. ہال اشارے بے ترتیب اشارے کے ساتھ مل کر استعمال کیا جاتا ہے ، اگر پیرامیٹرز کا میچنگ غلط ہے تو ، غلط سگنل بھی ہوسکتا ہے۔

  4. اوپر اور نیچے ریل کی چوڑائی بہت بڑی یا بہت چھوٹی ہوتی ہے جس سے ٹریڈنگ سگنل کے معیار پر اثر پڑتا ہے اور بہترین پیرامیٹرز کو تلاش کرنے کے لئے محتاط جانچ کی ضرورت ہوتی ہے۔

  5. حالیہ حالات غیر مستحکم ہیں ، اور طویل اور درمیانی لائن کے اشارے خراب ہوسکتے ہیں۔

  6. Data mismatches between hull and stoch causing false signals

  7. Sharp trend changes not caught by hull can cause losses

  8. Testing on more timeframes/symbols needed to verify robustness

ان خطرات کے لیے آپ کو مندرجہ ذیل نکات پر عمل کرنا چاہیے۔

  1. ہال اشارے کی لمبائی کو مناسب طریقے سے کم کریں تاکہ رجحانات کی تبدیلیوں کے لئے حساسیت میں اضافہ ہو۔

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

  3. اوپر اور نیچے کی ٹریک پیرامیٹرز کو ایڈجسٹ کریں ، بہترین چینل کی چوڑائی تلاش کریں

  4. دیگر اشارے کی توثیق سگنل شامل کریں ، جیسے MACD وغیرہ

  5. خطرے پر قابو پانے کے لئے اسٹاپ نقصان کی حکمت عملی میں اضافہ کریں۔

اصلاح کی سمت

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

  1. حکمت عملی کے استحکام کی تصدیق کے لئے زیادہ اقسام اور زیادہ ٹائم سائیکل پیرامیٹرز کی جانچ کریں۔

  2. نقصانات کو روکنے کا طریقہ کار شامل کریں۔ جیسے کہ تعاقب نقصانات ، متحرک نقصانات وغیرہ ، جو خطرے کو بہتر طور پر کنٹرول کرسکتے ہیں۔

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

  4. ہال اشارے کے راستے کو بہتر طریقے سے حمایت اور مزاحمت کی پوزیشنوں کا تعین کرنے کے لئے کس طرح استعمال کیا جا سکتا ہے.

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

  6. پیرامیٹرز کو بہتر بنائیں۔ جیسے ہال اشارے کی لمبائی ، بے ترتیب اشارے K ، D ہموار پیرامیٹرز وغیرہ کو بہتر بنائیں۔

  7. اضافی پوزیشن مینجمنٹ فنکشن۔ پوزیشن کا سائز ایڈجسٹ کریں جیسے واپسی اور جیت کی تعداد۔

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

  9. Optimize hull length parameter for better trend sensitivity

  10. Add additional filters or confirming indicators to improve signal quality

  11. Explore using hull bands to identify dynamic support/resistance levels

  12. Parameter optimization for stoch RSI lengths, overbought/oversold levels

  13. Introduce better position sizing and risk management rules

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*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)