ہین آشو اور سپر ٹرینڈ اسٹریٹیجی


تخلیق کی تاریخ: 2023-11-02 16:15:18 آخر میں ترمیم کریں: 2023-11-02 16:15:18
کاپی: 1 کلکس کی تعداد: 1217
1
پر توجہ دیں
1621
پیروکار

ہین آشو اور سپر ٹرینڈ اسٹریٹیجی

جائزہ

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

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

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

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

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

طاقت کا تجزیہ

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

خطرے کا تجزیہ

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

اصلاح کی سمت

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

خلاصہ کریں۔

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

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

//@version=5

strategy("Heiken Ashi & Super Trend_ARM", overlay=true,  pyramiding=1,initial_capital = 10000, 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.02)

///////////////////////////////////////////////////
////////////////////Function///////////////////////
///////////////////////////////////////////////////


heikinashi_open = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_high = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, high)
heikinashi_low  = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, low)
heikinashi_close= request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_color = heikinashi_open < heikinashi_close ? #53b987 : #eb4d5c
// plotbar(heikinashi_open, heikinashi_high, heikinashi_low, heikinashi_close, color=heikinashi_color)

x_sma(x, y) =>
    sumx = 0.0
    for i = 0 to y - 1
        sumx := sumx + x[i] / y
    sumx

x_rma(src, length) =>
	alpha = 1/length
	sum = 0.0
	sum := na(sum[1]) ? x_sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])

x_atr(length) =>
    trueRange = na(heikinashi_high[1])? heikinashi_high-heikinashi_low : math.max(math.max(heikinashi_high - heikinashi_low, math.abs(heikinashi_high - heikinashi_close[1])), math.abs(heikinashi_low - heikinashi_close[1]))
    //true range can be also calculated with ta.tr(true)
    x_rma(trueRange, length)

x_supertrend(factor, atrPeriod) =>
	src = (heikinashi_high+heikinashi_low)/2
	atr = x_atr(atrPeriod)
	upperBand = src + factor * atr
	lowerBand = src - factor * atr
	prevLowerBand = nz(lowerBand[1])
	prevUpperBand = nz(upperBand[1])

	lowerBand := lowerBand > prevLowerBand or heikinashi_close[1] < prevLowerBand ? lowerBand : prevLowerBand
	upperBand := upperBand < prevUpperBand or heikinashi_close[1] > prevUpperBand ? upperBand : prevUpperBand
	int direction = na
	float superTrend = na
	prevSuperTrend = superTrend[1]
	if na(atr[1])
		direction := 1
	else if prevSuperTrend == prevUpperBand
		direction := heikinashi_close > upperBand ? -1 : 1
	else
		direction := heikinashi_close < lowerBand ? 1 : -1
	superTrend := direction == -1 ? lowerBand : upperBand
	[superTrend, direction]
	

///////////////////////////////////////////////////
////////////////////Indicators/////////////////////
///////////////////////////////////////////////////

factor = input.float(3.0, "Factor", step = 0.01)
atrPeriod = input(10, "ATR Length")


[supertrend, direction] = x_supertrend(factor, atrPeriod)

bodyMiddle = plot((heikinashi_open + heikinashi_close) / 2, display=display.none)
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color = color.green, style=plot.style_linebr)
downTrend = plot(direction < 0? na : supertrend, "Down Trend", color = color.red, style=plot.style_linebr)

fill(bodyMiddle, upTrend, color.new(color.green, 90), fillgaps=false)
fill(bodyMiddle, downTrend, color.new(color.red, 90), fillgaps=false)

///////////////////////////////////////////////////
////////////////////Strategy///////////////////////
///////////////////////////////////////////////////

var bool longCond                    = na, var bool shortCond                   = na, longCond := nz(longCond[1]), shortCond := nz(shortCond[1])
var int CondIni_long                 = 0, var int CondIni_short                 = 0, CondIni_long := nz(CondIni_long[1]), CondIni_short := nz(CondIni_short[1])
var float open_longCondition         = na, var float open_shortCondition   = na


long  = ta.change(direction) < 0
short = ta.change(direction) > 0


longCond        :=                                                              long
shortCond       :=                                                              short

CondIni_long    :=                                                              longCond[1] ? 1 : shortCond[1] ? -1 : nz(CondIni_long[1])
CondIni_short   :=                                                              longCond[1] ? 1 : shortCond[1] ? -1 : nz(CondIni_short[1])
longCondition   =                                                               (longCond[1] and nz(CondIni_long[1]) == -1)
shortCondition  =                                                               (shortCond[1] and nz(CondIni_short[1]) == 1)


open_longCondition             :=                                          long ? close[1] :                                                      nz(open_longCondition[1])
open_shortCondition            :=                                          short ? close[1] :                                                     nz(open_shortCondition[1])


//TP
tp                    = input.float(1.1  , "TP [%]",                      step = 0.1) 

//BACKTESTING inputs --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

testStartYear       =                   input.int(2000,                             title="start year",                                         minval = 1997, maxval = 3000,                                                   group= "BACKTEST") 
testStartMonth      =                   input.int(01,                               title="start month",                                        minval = 1, maxval = 12,                                                        group= "BACKTEST")
testStartDay        =                   input.int(01,                               title="start day",                                          minval = 1, maxval = 31,                                                        group= "BACKTEST")
testPeriodStart     =                   timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear        =                   input.int(3333,                             title="stop year",                                          minval=1980, maxval = 3333,                                                     group= "BACKTEST")
testStopMonth       =                   input.int(12,                               title="stop month",                                         minval=1, maxval=12,                                                            group= "BACKTEST")
testStopDay         =                   input.int(31,                               title="stop day",                                           minval=1, maxval=31,                                                            group= "BACKTEST")
testPeriodStop      =                   timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)
testPeriod          =                   time >= testPeriodStart and time <= testPeriodStop ? true : false

// Backtest  ==================================================================================================================================================================================================================================================================================================================================


if longCond
    strategy.entry("L", strategy.long, when=testPeriod)

if shortCond
    strategy.entry("S", strategy.short, when=testPeriod)
    

strategy.exit("TP_L", "L", profit =((open_longCondition   *       (1+(tp/100))) - open_longCondition)/syminfo.mintick)

strategy.exit("TP_S", "S", profit =((open_shortCondition  *       (1+(tp/100))) - open_shortCondition)/syminfo.mintick)