इचिमोकू किन्को हियो और औसत दिशात्मक सूचकांक पर आधारित मात्रात्मक व्यापार रणनीति


निर्माण तिथि: 2024-01-23 11:14:54 अंत में संशोधित करें: 2024-01-23 11:14:54
कॉपी: 0 क्लिक्स: 820
1
ध्यान केंद्रित करना
1617
समर्थक

इचिमोकू किन्को हियो और औसत दिशात्मक सूचकांक पर आधारित मात्रात्मक व्यापार रणनीति

अवलोकन

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

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

पहली नजर में संतुलन तालिका में तीन चलती औसत शामिल हैं, पूर्व-परिवर्तन रेखा, बेंचमार्क रेखा और विलंब रेखा। जब कीमत ऊपर से पूर्व-परिवर्तन रेखा और बेंचमार्क रेखा को पार करती है, तो यह एक खरीद संकेत देता है; जब कीमत नीचे से इन दोनों लाइनों को पार करती है, तो यह एक बेचने का संकेत देता है। इसके अलावा, पहली नजर में संतुलन तालिका ने महत्वपूर्ण समर्थन और प्रतिरोध क्षेत्रों की पहचान की।

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

प्रवृत्ति निर्धारण के लिए एक समतुल्यता सूचकांक और प्रवृत्ति की ताकत के लिए एडीएक्स फ़िल्टरिंग का उपयोग करके, प्रवृत्ति के उन क्षेत्रों की पहचान की जा सकती है जहां कीमतों में अधिक उतार-चढ़ाव होता है।

रणनीतिक लाभ

  • दो संकेतकों के संयोजन का उपयोग करना, ट्रेडिंग सिग्नल को अधिक विश्वसनीय बनाता है
  • ADX का उपयोग करने से गलत लेनदेन से बचा जाता है
  • बेहतर रिटर्न्स, अधिक जोखिम के साथ लाभ

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

  • यह रणनीति ट्रेंडिंग स्टॉक के लिए अधिक उपयुक्त है, और संचित स्टॉक के लिए सिग्नल कम हो सकते हैं
  • पहली नजर में संतुलन तालिका में ही प्रतिक्रिया में देरी की समस्या है, जो तेजी से पलटने का अवसर खो सकती है
  • एडीएक्स के आकलन में त्रुटिपूर्णता है, और गलतफहमी की संभावना है

अनुकूलन दिशा

  • विभिन्न मापदंडों के संयोजनों का परीक्षण किया जा सकता है, जैसे रूपांतरण रेखा, आधार रेखा की आवृत्ति में समायोजन
  • MACD, KD आदि जैसे अन्य संकेतकों के साथ और अधिक अनुकूलित किया जा सकता है
  • विभिन्न ADX फ़िल्टरिंग नियमों या शर्तों का अध्ययन किया जा सकता है

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-10 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Ichimoku + ADX", shorttitle="Ichimoku & ADX Backtest", overlay=true)

//------------------------------
//------------------------------
// ICHIMOKU
//------------------------------
//------------------------------

conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")

donchian(len) => avg(lowest(len), highest(len))

Tenkan = donchian(conversionPeriods)
Kijun = donchian(basePeriods)
SSA = avg(Tenkan, Kijun)
SSB = donchian(laggingSpan2Periods)

SSAdisp = SSA[displacement]
SSBdisp = SSB[displacement]

// Plot Ichimoku
// --------------------

plot(Tenkan, color=color.red, title="Tenkan")
plot(Kijun, color=color.blue, title="Kijun")
plot(close, offset = -displacement + 1, color=#459915, title="Chikou")


p1 = plot(SSA, offset = displacement - 1, color=color.green,
 title="Senkou A")
p2 = plot(SSB, offset = displacement - 1, color=color.red, 
 title="Senkou B")
fill(p1, p2, color = SSA > SSB ? color.green : color.red)

//------------------------------
//------------------------------
// ADX
//------------------------------
//------------------------------

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
keyLevel = input(23, title="key level for ADX")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]

adx(dilen, adxlen) => 
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[sig, up, down] = adx(dilen, adxlen)

// Plot ADX
// --------------------

//plot(sig, color=color.black, title="ADX")
//plot(up, color=color.green, title="+DI",linewidth=2, style=plot.style_columns, transp=40)
//plot(down, color=color.red, title="-DI",linewidth=2, style=plot.style_columns, transp=40)
//plot(keyLevel, color=color.white, title="Key Level")



//------------------------------
//------------------------------
// STRATEGY
//------------------------------
//------------------------------

// Buy & Sell Signals
// --------------------

// ADX
ABuy1 = up > keyLevel and up - down >5 and sig > down and sig < keyLevel * 2
ASell1 = down > keyLevel and down - up >5 and sig > up and sig < keyLevel * 2


// ICHIMOKU

Bull = close >= max(SSAdisp, SSBdisp)
Bear = close <= min(SSAdisp, SSBdisp)

//  1. Bull
Buy1 = (close >= max(SSAdisp, SSBdisp)) ? 1 : 0
Buy2 = (Tenkan - Kijun >= 0.001) ? 1 : 0
Buy3 = SSA > SSB ? 1 : 0
Buy4 = sig > 20 ? 1 : 0
Buy4a = close - close[displacement] >=0.001 ? 1:0
Buy5 = Buy1 and Buy2 and Buy3 and Buy4 and Buy4a and not(Buy1[1] and Buy2[1] and Buy3[1])

//  1. Bear
Sell1 = (close <= min(SSAdisp, SSBdisp)) ? 1 : 0
Sell2 = (Kijun - Tenkan >= 0.001) ? 1 : 0
Sell3 = SSA < SSB ? 1 : 0
Sell4 = sig > 20 ? 1 : 0
Sell4a = close <= close[displacement]
Sell5 = Sell1 and Sell2 and Sell3 and Sell4 and Sell4a and not(Sell1[1] and Sell2[1] and Sell3[1])


// CONSOLIDATED

buysignal = Buy5
buyexitsignal = crossunder(close,Kijun)

sellsignal = Sell5 
sellexitsignal = crossover(close,Kijun)    

longCondition = buysignal
shortCondition = sellsignal
    
// Plot Indicators
// --------------------

// ----- Buy & Sell

//plotshape(longCondition, title = "Buy Signal", text ="BUY", textcolor =#FFFFFF , style=shape.labelup, size = size.tiny, location=location.belowbar, color = #1B8112, transp = 0)
//plotshape(shortCondition, title = "Short Signal", text ="SHORT", textcolor =#FFFFFF , style=shape.labeldown, size = size.tiny, location=location.abovebar, color = #000000, transp = 0)

// ----- Ichimoku Signals

//plotshape(Sell2, title = "Sell Signal", text ="Kumo Twist", textcolor =#FFFFFF , style=shape.labelup, size = size.tiny, location=location.top, color = color.black, transp = 0)
//plotshape(Sell3, title = "Sell Signal", text ="TK/KJ", textcolor =#FFFFFF , style=shape.labelup, size = size.tiny, location=location.bottom, color = color.black, transp = 0)

//plotshape(Buy4, title = "Buy Signal", text ="Kumo Twist", textcolor =#FFFFFF , style=shape.diamond, size = size.tiny, location=location.belowbar, color = color.blue, transp = 0)
//plotshape(Buy3, title = "Buy Signal", text ="TK/KJ", textcolor =#FFFFFF , style=shape.circle, size = size.tiny, location=location.abovebar, color = color.green, transp = 0)
//plotshape(Buy4, title = "Buy Signal", text ="TK/KJ", textcolor =#FFFFFF , style=shape.circle, size = size.tiny, location=location.belowbar, color = color.red, transp = 0)



//plotshape(buyexitsignal, title = "Buy Exit", style=shape.triangledown, size = size.tiny, location=location.abovebar, color = color.green, transp = 0)
//plotshape(sellexitsignal, title = "Buy Exit", style=shape.triangleup, size = size.tiny, location=location.belowbar, color = color.black, transp = 0)

//------------------------------
//------------------------------
// EXECUTION
//------------------------------
//------------------------------


// Test Range
// --------------------

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 2, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2015, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// Orders
// --------------------


if longCondition
    strategy.entry("Buy", strategy.long, when=window())
    
if buyexitsignal 
    strategy.close("Buy")
    
if shortCondition
    strategy.entry("Sell", strategy.short, when=window())

if sellexitsignal
    strategy.close("Sell")