
यह रणनीति तीन मुख्य संकेतकों पर आधारित हैः रुझान सूचक, केल्टनर चैनल और डीएम सूचक।
प्रवृत्ति संकेतक एसएमए और ईएमए से बना है। जब ईएमए एसएमए को पार करता है, तो प्रवृत्ति में प्रवेश की पुष्टि की जाती है। केल्टनर चैनल को कैंडल के उद्घाटन और समापन मूल्य का निर्णय लेने के लिए उपयोग किया जाता है। डीएम संकेतक को बहुमुखी दिशा का निर्णय लेने के लिए उपयोग किया जाता है।
यदि आप निम्नलिखित प्रवेश आवश्यकताओं को पूरा करते हैं तो आप अधिक कर सकते हैंः
रणनीति दो स्टॉप और एक स्टॉप लॉस सेट करती है। अधिक लाभ प्राप्त करने के लिए ट्रैक किए गए स्टॉप का उपयोग करने पर विचार किया जा सकता है
ईएमए और एसएमए के गोल्डन फोर्क द्वारा प्रवृत्ति की दिशा का न्याय करें। ईएमए पैरामीटर 46 है, और एसएमए पैरामीटर 46 है। ईएमए पर एसएमए पार करते समय, यह संकेत दिया जाता है कि यह एक ऊपर की प्रवृत्ति में प्रवेश कर रहा है।
Keltner Corridor में तीन लाइनें होती हैंः मध्य रेखा, ऊपरी रेखा और निचली रेखा। मध्य रेखा समापन मूल्य के लिए SMA है, जिसकी लंबाई 81 है। ऊपरी और निचली रेखाओं को मध्य रेखा के ऊपर और नीचे निर्दिष्ट गुणांक के वास्तविक आयाम के रूप में सेट किया गया है। यहां मध्य रेखा के ऊपर और नीचे 2.5 गुना आयाम है।
Keltner चैनल मुख्य रूप से यह निर्धारित करने के लिए उपयोग किया जाता है कि क्या कीमतें चैनल के भीतर हैं, और चैनल के माध्यम से।
डीएम सूचक में तीन रेखाएं होती हैंः एडीएक्स, + डीआई और - डीआई. + डीआई उछाल की ताकत को मापता है, - डीआई गिरावट की ताकत को मापता है. एडीएक्स एक औसत प्रवृत्ति सूचक है जो प्रवृत्ति की ताकत को दर्शाता है।
यहां ADX पैरामीटर 10 और DI पैरामीटर 19 है। जब +DI लाइन पर सेट किया गया बेंचमार्क लाइन ((डिफ़ॉल्ट 27) पहना जाता है, तो यह संकेत देता है कि प्रवृत्ति मजबूत है और अधिक काम करने के लिए उपयुक्त है।
इस रणनीति में प्रवृत्ति, चैनल और मजबूत और कमजोर संकेतकों को शामिल किया गया है, जो मूल्य आंदोलन और बहुमुखी दिशा को प्रभावी ढंग से निर्धारित करता है। इसके निम्नलिखित फायदे हैंः
प्रवृत्ति का आकलन अपेक्षाकृत सटीक है, जिससे विपरीत संचालन से बचा जा सकता है।
Keltner चैनल स्पष्ट रूप से दिखाई देता है, समर्थन और दबाव बिंदुओं का निर्माण करता है।
डीएम संकेतक वायुमंडलीय बल को मापता है, जिससे यह सुनिश्चित होता है कि वायुमंडलीय दिशा सही है।
रणनीतिक शर्तें सख्त हैं, और झूठी सफलताओं को प्रभावी रूप से फ़िल्टर किया जा सकता है।
स्टॉप-स्टॉप-लॉस पॉइंट्स को सेट करना लाभ के अवसरों को पकड़ने में मदद करता है।
इस रणनीति में कुछ जोखिम भी हैं:
रुझान में बदलाव हो सकता है, ईएमए एसएमए के नीचे हो सकता है, समय पर बाहर निकलने के लिए सावधान रहें।
मजबूत स्थिति में, चैनल विफल हो सकता है और इसे सख्त समर्थन दबाव बिंदु के रूप में नहीं माना जा सकता है।
डीएम संकेतक गलत संकेत दे सकता है, कीमतों के साथ निर्णय लेना चाहिए।
एक झूठी तोड़-फोड़ से प्रवेश को ट्रिगर किया जा सकता है, लेकिन जल्द ही वापस आ जाता है, उचित स्टॉप लॉस सेट किया जाना चाहिए।
स्टॉप-स्टॉप-लॉस को बाजार में बदलाव के लिए लगातार अनुकूलित किया जाना चाहिए।
इस तरह के कुछ और अनुकूलन हैं:
पैरामीटर को समायोजित करें और विभिन्न रुझानों को निर्धारित करने के तरीकों की प्रभावशीलता का परीक्षण करें
चैनल मापदंडों को अनुकूलित करें ताकि वे वास्तविक उतार-चढ़ाव की सीमा के करीब हों।
विभिन्न डीएम मापदंडों के संयोजनों का परीक्षण करें और सबसे अच्छा चुनें।
विभिन्न प्रविष्टि शर्तों को सेट करें, जैसे कि लेनदेन की मात्रा के साथ फ़िल्टर।
स्टॉप-लॉस रणनीति को अनुकूलित करें, जैसे कि स्टॉप-लॉस ट्रैकिंग का उपयोग करके अधिक लाभ प्राप्त करें।
विभिन्न किस्मों के लिए अलग-अलग परीक्षणों के लिए, सर्वोत्तम पैरामीटर संयोजन का चयन करें।
यह रणनीति व्यापक रूप से प्रवृत्ति की दिशा, समर्थन दबाव और बहुमुखी शक्ति का पता लगाने के लिए कई संकेतकों का उपयोग करती है, जिससे प्रवृत्ति को प्रभावी ढंग से पकड़ने और जोखिम को नियंत्रित करने में मदद मिलती है। हालांकि, बाजार में बदलाव के लिए जोखिम पर ध्यान देने और मापदंडों को अनुकूलित करने की आवश्यकता है। कुल मिलाकर, इस रणनीति में एक मजबूत व्यावहारिकता है।
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Original Idea by: Wunderbit Trading
//@version=4
strategy("Keltner Channel ETH/USDT 1H", overlay=true, initial_capital=1000,pyramiding = 0, currency="USD", default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent,commission_value=0.07)
/// TREND
ribbon_period = input(46, "Period", step=1)
leadLine1 = ema(close, ribbon_period)
leadLine2 = sma(close, ribbon_period)
// p3 = plot(leadLine1, color= #53b987, title="EMA", transp = 50, linewidth = 1)
// p4 = plot(leadLine2, color= #eb4d5c, title="SMA", transp = 50, linewidth = 1)
// fill(p3, p4, transp = 60, color = leadLine1 > leadLine2 ? #53b987 : #eb4d5c)
//Upward Trend
UT=leadLine2 < leadLine1
DT=leadLine2>leadLine1
///////////////////////////////////////INDICATORS
// KELTNER //
source = close
useTrueRange = input(true)
length = input(81, step=1, minval=1)
mult = input(2.5, step=0.1)
// Calculate Keltner Channel
ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
plot(ma, title="Middle", color=color.orange)
p1=plot(upper, title="Upper", color=color.orange)
p2=plot(lower, title="Lower", color=color.orange)
fill(p1,p2)
// DMI INDICATOR //
adxlen = 10 // input(10, title="ADX Smoothing")
dilen = input(19, title="DI Length")
keyLevel = 23// 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)
benchmark=input(title="DMI Benchmark", defval=27, minval=1,step=1)
// plot(sig, color=color.red, title="ADX")
// plot(up, style=plot.style_histogram, color=color.green, title="+DI")
// plot(down, style=plot.style_histogram, color=color.red, title="-DI")
// plot(keyLevel, color=color.white, title="Key Level")
///////////////////////////////////////////////////////////
////////////////////////////////////////////////////Component Code Start
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(9999, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true
///// Component Code Stop //////////////////////////////////////////
//////////////// STRATEGY EXECUTION //////////////////////////
//LONG SET UP
// Take Profit / Stop Loss
long_tp1_inp = input(4.5, title='Long Take Profit 1 %', step=0.1)/100
long_tp1_qty = input(15, title="Long Take Profit 1 Qty", step=1)
long_tp2_inp = input(20, title='Long Take Profit 2%', step=0.1)/100
long_tp2_qty = input(100, title="Long Take Profit 2 Qty", step=1)
long_take_level_1 = strategy.position_avg_price * (1 + long_tp1_inp)
long_take_level_2 = strategy.position_avg_price * (1 + long_tp2_inp)
long_sl_inp = input(4, title='Long Stop Loss %', step=0.1)/100
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
// STRATEGY CONDITION
// LONG
entry_long = ((open > lower and open < upper) and close > upper) and up > down and up > benchmark // and volume[0] > volume[1]
entry_price_long=valuewhen(entry_long,close,0)
SL_long = entry_price_long * (1 - long_sl_inp)
exit_long = (close < lower) or low < SL_long
// STRATEGY EXECUTION
if testPeriod()
// LONG
if UT
strategy.entry(id="Long", long=true, when=entry_long, comment = "INSERT ENTER LONG COMMAND")
strategy.exit("TP1","Long", qty_percent=long_tp1_qty, limit=long_take_level_1) // PLACE TAKE PROFIT IN WBT BOT SETTINGS
strategy.exit("TP2","Long", qty_percent=long_tp2_qty, limit=long_take_level_2) // PLACE TAKE PROFIT IN WBT BOT SETTINGS
strategy.close(id="Long", when=exit_long, comment= "INSERT EXIT LONG COMMAND")
//PLOT FIXED SLTP LINE
// LONG POSITION
plot(strategy.position_size > 0 ? long_take_level_1 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="1st Long Take Profit")
plot(strategy.position_size > 0 ? long_take_level_2 : na, style=plot.style_linebr, color=color.green, linewidth=1, title="2nd Long Take Profit")
plot(strategy.position_size > 0 ? long_stop_level : na, style=plot.style_linebr, color=color.red, linewidth=1, title="Long Stop Loss")