ہسٹوگرام بریک آؤٹ پر مبنی تجارتی حکمت عملی


تخلیق کی تاریخ: 2023-11-15 15:25:57 آخر میں ترمیم کریں: 2023-11-15 15:25:57
کاپی: 0 کلکس کی تعداد: 700
1
پر توجہ دیں
1617
پیروکار

ہسٹوگرام بریک آؤٹ پر مبنی تجارتی حکمت عملی

جائزہ

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

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

  1. تیز رفتار اوسط ((20 سائیکل) اور سست رفتار اوسط ((50 سائیکل) کا حساب لگائیں۔

  2. K لائن کی بنیاد پر یہ حساب لگائیں کہ آیا اوپر کی لمبائی ((close>open) یا نیچے کی لمبائی ((close

  3. اس بات کا تعین کریں کہ آیا لمبائی پچھلی K لائن کی اعلی ترین قیمت یا کم ترین قیمت کو توڑ رہی ہے۔ اگر یہ اوپر کی لمبائی ہے اور پچھلی K لائن کی اعلی ترین قیمت کو توڑتی ہے تو ، ایک کثیر سر توڑ سگنل پیدا ہوتا ہے۔ اگر یہ نیچے کی لمبائی ہے اور پچھلی K لائن کی کم ترین قیمت کو توڑتی ہے تو ، اس میں ایک خالی توڑ سگنل پیدا ہوتا ہے۔

  4. ایک ہی وقت میں فیصلہ کریں کہ آیا تیز رفتار حرکت پذیر اوسط سست رفتار حرکت پذیر اوسط سے اوپر ہے ، اگر ایسا ہے تو ، اس کا فیصلہ کثیر سر رجحان کے طور پر کیا جاتا ہے۔ اس کے برعکس ، اس کا فیصلہ خالی سر رجحان کے طور پر کیا جاتا ہے۔

  5. صرف اس صورت میں جب تیز اور سست میڈین لائن کا فیصلہ کثیر رخا رجحان کے طور پر کیا جائے تو کثیر رخا بریک سگنل موثر ہوتا ہے۔ صرف اس صورت میں جب تیز اور سست میڈین لائن کا فیصلہ ہوا ہوا رجحان کے طور پر کیا جائے تو ہوا ہوا بریک سگنل موثر ہوتا ہے۔ اس سے تالیف میں غلط سگنل پیدا ہونے سے بچا جاتا ہے۔

  6. جب ایک مؤثر کثیر سر بریک سگنل پیدا ہوتا ہے تو ، ایک مخصوص اسٹاپ نقصان اور اسٹاپ معیار کے مطابق ایک سے زیادہ ٹکٹ کھولیں۔ جب ایک مؤثر خالی سر بریک سگنل پیدا ہوتا ہے تو ، ایک مخصوص اسٹاپ نقصان اور اسٹاپ معیار کے مطابق خالی ٹکٹ کھولیں۔

  7. اگر فاسٹ اور سست حرکت پذیر اوسط کے مابین کوئی فورک ہوتا ہے تو ، موجودہ پوزیشن کو برابر کردیں۔

طاقت کا تجزیہ

  • براہ راست چارٹ کی سرحد کو ایک بریکآؤٹ کے طور پر استعمال کرنا ، جو ایک مضبوط بریک سگنل کی نمائندگی کرتا ہے۔

  • اس کے علاوہ، رجحانات کی سمت پر غور کریں، اور درستگی کو بہتر بنانے کے لئے غلط سگنل سے بچنے کے لئے.

  • رجحانات اور ٹرانسمیشنوں کو مدنظر رکھتے ہوئے، حکمت عملی کو رجحانات کے دوران بہترین کارکردگی کا مظاہرہ کرنا چاہئے.

  • پیرامیٹرز کی اصلاح کے ذریعے، مختلف اقسام اور وقت کے دورانیے کے مطابق ڈھال لیا جا سکتا ہے.

خطرات اور حل

  • ناکامی کا خطرہ۔ اس کا حل یہ ہے کہ بڑے سوراخوں کا انتخاب کیا جائے تاکہ اس بات کو یقینی بنایا جاسکے کہ اس میں زیادہ طاقت ہے۔

  • رجحان کا تعین کرنے میں غلطی کا خطرہ۔ اس کا حل اوسط لائن پیرامیٹرز کو ایڈجسٹ کرنا ہے ، یا رجحان کا تعین کرنے کے لئے دوسرے معاون اشارے شامل کرنا ہے۔

  • اس خطرے کا خطرہ ہے کہ اسٹاپ نقصان کی ترتیب بہت چھوٹی ہے جس کی وجہ سے اسٹاپ نقصان کی کثرت ہوتی ہے۔ اس کا حل یہ ہے کہ اسٹاپ نقصان کی شدت کو مختلف اقسام اور وقت کے دورانیے کی حرکیات کے مطابق ایڈجسٹ کیا جائے۔

  • منافع کے لئے جگہ کا خطرہ بہت کم ہے۔ اس کا حل یہ ہے کہ منافع اور نقصان کا تناسب مختلف اقسام اور وقت کے دورانیے کی حرکیات کے مطابق ترتیب دیا جائے۔

اصلاح کی سمت

  • مجموعی طور پر ، حرکت پذیر اوسط پیرامیٹرز ، توڑنے والے پیرامیٹرز ، اسٹاپ نقصان کی حد ، اور منافع اور نقصان کے مقابلے میں ان پیرامیٹرز کی جانچ اور اصلاح کی ضرورت ہوتی ہے تاکہ حکمت عملی کے پیرامیٹرز کو مختلف اقسام اور وقت کے دورانیوں کے مطابق بنایا جاسکے۔

  • مختلف قسم کے متحرک اوسط (جیسے ای ایم اے ، ایس ایم اے ، وغیرہ) کی جانچ کی جاسکتی ہے تاکہ زیادہ موزوں اوسط اشارے تلاش کیے جاسکیں۔

  • رجحانات کی درستگی کو بہتر بنانے کے لئے دیگر معاون فیصلے کے اشارے ، جیسے Momentum شامل کیے جاسکتے ہیں۔

  • مشین لرننگ اور دیگر طریقوں کے ذریعہ پیرامیٹرز کو متحرک طور پر بہتر بنایا جاسکتا ہے۔

  • کامیابی کی شرح کے لئے اعداد و شمار سیکھنے کے لئے، توڑ پیرامیٹرز کو ایڈجسٹ کریں.

خلاصہ کریں۔

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

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

//@version=4
//Backtested Time Frame: H1
//Default Settings: Are meant to run successfully on all currency pairs to reduce over-fitting.
//Risk Warning: This is a forex trading robot, backtest performance will not equal future performance, USE AT YOUR OWN RISK.
//Code Warning: Although every effort has been made for robustness, this code has not been vetted by independent 3rd parties.
strategy("Pin Bar Strategy v1", overlay=true)

// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=3,confirm=false)
atr_mult = input(title="Stop Loss (x*ATR, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=1.9,confirm=false)
trd_rewd = input(title="Risk : Reward (1 : x*SL, Float)",type=input.float,minval=0.1,maxval=100,step=0.1,defval=3.1,confirm=false)
sma_fast = input(title="Fast MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=20,confirm=false)
sma_slow = input(title="Slow MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=50,confirm=false)
atr_valu = input(title="ATR (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)
use_slpe = input(title="Use MA Slope (Boolean)",type=input.bool,defval=true,confirm=false)
slp_long = input(title="Bull Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=1,confirm=false)
slp_shrt = input(title="Bear Slope Angle (Deg)",type=input.integer,minval=-90,maxval=90,step=1,defval=-1,confirm=false)
emg_exit = input(title="Exit When MA Re-Cross (Boolean)",type=input.bool,defval=true,confirm=false)
ent_canc = input(title="Cancel Entry After X Bars (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=3,confirm=false)

// Create Indicators
fastSMA = sma(close, sma_fast)
slowSMA = sma(close, sma_slow)
bullishPinBar = ((close > open) and ((open - low) > 0.66 * (high - low))) or ((close < open) and ((close - low) > 0.66 * (high - low)))
bearishPinBar = ((close > open) and ((high - close) > 0.66 * (high - low))) or ((close < open) and ((high - open) > 0.66 * (high - low)))
atr = atr(atr_valu)

// Specify Trend Conditions
smaUpTrend = (fastSMA > slowSMA) and (fastSMA[1] > slowSMA[1]) and (fastSMA[2] > slowSMA[2]) and (fastSMA[3] > slowSMA[3]) and (fastSMA[4] > slowSMA[4])
smaDnTrend = (fastSMA < slowSMA) and (fastSMA[1] < slowSMA[1]) and (fastSMA[2] < slowSMA[2]) and (fastSMA[3] < slowSMA[3]) and (fastSMA[4] < slowSMA[4])
candleUpTrend = (close[5] > fastSMA[5]) and (open[5] > fastSMA[5]) and (close[6] > fastSMA[6]) and (open[6] > fastSMA[6]) and (close[7] > fastSMA[7]) and (open[7] > fastSMA[7]) and (close[8] > fastSMA[8]) and (open[8] > fastSMA[8]) and (close[9] > fastSMA[9]) and (open[9] > fastSMA[9]) and (close[10] > fastSMA[10]) and (open[10] > fastSMA[10])
candleDnTrend = (close[5] < fastSMA[5]) and (open[5] < fastSMA[5]) and (close[6] < fastSMA[6]) and (open[6] < fastSMA[6]) and (close[7] < fastSMA[7]) and (open[7] < fastSMA[7]) and (close[8] < fastSMA[8]) and (open[8] < fastSMA[8]) and (close[9] < fastSMA[9]) and (open[9] < fastSMA[9]) and (close[10] < fastSMA[10]) and (open[10] < fastSMA[10])

// Specify Piercing Conditions
bullPierce = ((low < fastSMA) and (open > fastSMA) and (close > fastSMA)) or ((low < slowSMA) and (open > slowSMA) and (close > slowSMA))
bearPierce = ((high > fastSMA) and (open < fastSMA) and (close < fastSMA)) or ((high > slowSMA) and (open < slowSMA) and (close < slowSMA))

// MA Slope Function
angle(_source) =>
    rad2degree=180/3.14159265359
    ang=rad2degree*atan((_source[0] - _source[1])/atr(atr_valu)) 

// Calculate MA Slope
fastSlope=angle(fastSMA)
slowSlope=angle(slowSMA)
slopingUp = fastSlope > slp_long
slopingDn = fastSlope < slp_shrt
    
// Specify Entry Conditions
longEntry = smaUpTrend and bullishPinBar and bullPierce
shortEntry = smaDnTrend and bearishPinBar and bearPierce
longEntryWithSlope = smaUpTrend and bullishPinBar and bullPierce and slopingUp
shortEntryWithSlope = smaDnTrend and bearishPinBar and bearPierce and slopingDn

// Specify Secondary Exit Conditions
longExit = crossunder(fastSMA, slowSMA)
shortExit = crossover(fastSMA, slowSMA)

// Long Entry Function
enterlong() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = low[1] - atr[1] * atr_mult
    entryPrice = high[1]
    units = risk / (entryPrice - stopLoss)
    takeProfit = entryPrice + trd_rewd * (entryPrice - stopLoss)
    strategy.entry("long", strategy.long, units, stop=entryPrice)
    strategy.exit("exit long", "long", stop=stopLoss, limit=takeProfit)
    
// Short Entry Function
entershort() =>
    risk = usr_risk * 0.01 * strategy.equity
    stopLoss = high[1] + atr[1] * atr_mult
    entryPrice = low[1]
    units = risk / (stopLoss - entryPrice)
    takeProfit = entryPrice - trd_rewd * (stopLoss - entryPrice)
    strategy.entry("short", strategy.short, units, stop=entryPrice)
    strategy.exit("exit short", "short", stop=stopLoss, limit=takeProfit)
    
// Execute Long Entry w/o Slope
if (longEntry and use_slpe == false)
    enterlong()
    
// Execute Long Entry w/ Slope
if (longEntryWithSlope and use_slpe == true)
    enterlong()

// Exit Long Due to Re-Cross
if(longExit and strategy.position_size > 0 and emg_exit)    
    strategy.order("exit long, re-cross", strategy.short, abs(strategy.position_size))

// Cancel the Long Entry
strategy.cancel("long", barssince(longEntry) > ent_canc)

// Execute Short Entry w/o Slope
if (shortEntry and use_slpe == false)
    entershort() 
    
// Execute Short Entry w/ Slope
if (shortEntryWithSlope and use_slpe == true)
    entershort() 

// Exit Short Due to Re-Cross
if(shortExit and strategy.position_size < 0 and emg_exit)    
    strategy.order("exit short, re-cross", strategy.long, abs(strategy.position_size))

// Cancel the Short Entry
strategy.cancel("short", barssince(shortEntry) > ent_canc)

// Plot Moving Averages to Chart
plot(fastSMA, color=color.red)
plot(slowSMA, color=color.blue)

// Plot Pin Bars to Chart
plotshape(bullishPinBar, style=shape.arrowup, location=location.abovebar, color=#FF0000, text='')
plotshape(bearishPinBar, style=shape.arrowdown, location=location.belowbar, color=#0000FF, text='')