हेन आशु और सुपर ट्रेंड रणनीति


निर्माण तिथि: 2023-11-02 16:15:18 अंत में संशोधित करें: 2023-11-02 16:15:18
कॉपी: 1 क्लिक्स: 1211
1
ध्यान केंद्रित करना
1617
समर्थक

हेन आशु और सुपर ट्रेंड रणनीति

अवलोकन

हाइने-एज और सुपरट्रेंड रणनीति एक प्रवृत्ति ट्रैकिंग रणनीति है जो हाइने-एज चार्ट और सुपरट्रेंड संकेतक को जोड़ती है। इस रणनीति का उद्देश्य प्रवृत्ति की दिशा की पहचान करना है, प्रवृत्ति क्षेत्रों में व्यापार करना है, और जब प्रवृत्ति उलट जाती है, तो जल्दी से बाहर निकल जाना है, जिससे गैर-प्रवृत्ति व्यापार से होने वाले नुकसान को कम किया जा सके।

रणनीति सिद्धांत

हाइना एट्यूरियन चार्ट एक विशेष प्रकार का K-लाइन चार्ट है, जो स्टॉक की कीमतों के उद्घाटन, समापन, उच्चतम और निम्नतम के औसत मानों का उपयोग करके स्टॉक की इकाई को चित्रित करता है, जिससे बाजार के शोर को फ़िल्टर करने में मदद मिलती है, जिससे चार्ट को स्पष्ट किया जा सकता है। सुपरट्रेंड इंडिकेटर दो वक्रों से बना है, जो गतिशील समर्थन और प्रतिरोध रेखाओं के माध्यम से प्रवृत्ति की दिशा का न्याय करता है।

यह रणनीति सबसे पहले हाइने एट्रिब्यूशन चार्ट की गणना करती है और फिर हाइने एट्रिब्यूशन K लाइन के आधार पर सुपरट्रेंड इंडिकेटर की गणना करती है। जब कीमत सुपरट्रेंड इंडिकेटर को तोड़ती है, तो एक ट्रेडिंग सिग्नल उत्पन्न होती है। विशेष रूप से, यह रणनीति हाइने एट्रिब्यूशन K लाइन का उपयोग करके वास्तविक तरंगों की गणना करती है, और फिर तरंगों और औसत कीमतों के संयोजन के साथ सुपरट्रेंड के ऊपर और नीचे की रेखाएं प्राप्त होती हैं। जब कीमत नीचे की रेखा से टकराव से उत्पन्न होती है तो एक मल्टी सिग्नल उत्पन्न होती है और जब ऊपरी रेखा से टकराव होता है तो एक रिक्त सिग्नल उत्पन्न होती है।

रणनीति ने सुपरट्रेंड संकेतक के लिए पैरामीटर अनुकूलन भी किया है, जो संकेतक की संवेदनशीलता को बढ़ाने के लिए सर्वोत्तम पैरामीटर संयोजन का उपयोग करता है। इसके अलावा, रणनीति में एक स्टॉप-लॉस तंत्र शामिल किया गया है, जो लाभ की गारंटी देते हुए जोखिम को नियंत्रित करने में सक्षम है।

श्रेष्ठता विश्लेषण

  • हाइना एथियोपिया के नक्शे का उपयोग करके शोर को फ़िल्टर किया जा सकता है, जिससे सिग्नल स्पष्ट हो सके।
  • सुपर ट्रेंड इंडिकेटर ट्रेंड में बदलाव को जल्दी से पकड़ता है और समय पर ट्रेडिंग सिग्नल भेजता है।
  • पैरामीटर अनुकूलन से सूचकांक की विश्वसनीयता बढ़ जाती है।
  • एक अंतर्निहित रोकथाम तंत्र जो जोखिम को प्रभावी ढंग से नियंत्रित करता है।
  • ट्रेंड ट्रैकिंग और मैकेनिकल ट्रेडिंग सिस्टम के संयोजन के साथ, उच्च स्तर की स्वचालन है।

जोखिम विश्लेषण

  • ट्रेडिंग सिस्टम अत्यधिक स्वचालित है और असामान्यताओं से बचने के लिए इसकी बारीकी से निगरानी की जाती है।
  • हालांकि यह ध्वनि को फ़िल्टर करता है, यह बहुत छोटे रिवर्स सिग्नल को भी छोड़ देता है।
  • सुपरट्रेंड सूचकांक में गलत संकेत हो सकते हैं, जिससे समय से पहले प्रवेश हो सकता है या नुकसान हो सकता है।
  • गलत स्टॉप पॉइंट सेटिंग भी अनावश्यक नुकसान का कारण बन सकती है।
  • अपर्याप्त प्रतिक्रिया डेटा के कारण एक अति-मिलान हो सकता है।

अनुकूलन दिशा

  • सुपरट्रेंड सूचकांक को और अधिक अनुकूलित करने के लिए कई संयोजनों का परीक्षण करें।
  • सुपरट्रेंड सिग्नल की पुष्टि करने के लिए अन्य संकेतकों को आज़माएं, गलत संकेत दर को कम करें।
  • लाभ की गारंटी के साथ अनावश्यक नुकसान को कम करने के लिए स्टॉप लॉस रणनीति का अनुकूलन करें।
  • मशीन लर्निंग एल्गोरिदम में वृद्धि, वास्तविक रुझानों को पहचानने के लिए बड़े डेटा प्रशिक्षण का उपयोग करने की क्षमता।
  • लंबी समय अवधि और अधिक विभिन्न बाजारों के ऐतिहासिक डेटा का उपयोग करके, यह विश्वसनीयता में सुधार करता है।

संक्षेप

हाइनेथियोस और सुपरट्रेंड रणनीति एक प्रवृत्ति ट्रैकिंग रणनीति है। यह प्रवृत्ति दिशा की पहचान करने, बड़े रुझान के तहत व्यापार करने, और पलटने पर तेजी से बंद करने में सक्षम है। रणनीति हाइनेथियोस पट्टिका के शोर फिल्टर और सुपरट्रेंड संकेतक की तेजी से प्रवृत्ति परिवर्तन को पकड़ने की क्षमता को एकीकृत करती है। पैरामीटर अनुकूलन और स्टॉप लॉस तंत्र की डिजाइन के माध्यम से, रिटर्न को बढ़ाने के साथ-साथ जोखिम को नियंत्रित करने में सक्षम है। भविष्य में, पैरामीटर को और अधिक अनुकूलित करके, पुष्टिकरण संकेतक को जोड़कर, रीमेक डेटा का विस्तार करके और अन्य तरीकों से रणनीति को अनुकूलित किया जा सकता है, जिससे सिस्टम की स्थिरता और विश्वसनीयता में सुधार हो सकता है।

रणनीति स्रोत कोड
/*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)