इचिमोकू किन्को ह्यो मूविंग एवरेज ट्रेंड फॉलोइंग स्ट्रैटेजी


निर्माण तिथि: 2023-11-24 17:32:47 अंत में संशोधित करें: 2023-11-24 17:32:47
कॉपी: 0 क्लिक्स: 797
1
ध्यान केंद्रित करना
1617
समर्थक

इचिमोकू किन्को ह्यो मूविंग एवरेज ट्रेंड फॉलोइंग स्ट्रैटेजी

अवलोकन

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

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

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

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

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

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

पैरामीटर अनुकूलन के मामले में, स्टॉप लॉस स्टॉप सेटिंग भी इस रणनीति के जोखिम को नियंत्रित करती है। अंत में, एक नए तकनीकी संकेतक के रूप में पहली बार संतुलित चलती औसत, जो कई लोगों के लिए अपरिचित है, इस रणनीति को लागू करने के लिए अग्रिम लाभ प्रदान करता है।

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

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

इसके अलावा, किसी भी ट्रेंड को ट्रैक करने वाली रणनीति में ट्रेंड रिवर्स होने का जोखिम होता है। जब कीमतें औसत रेखा को तोड़ती हैं लेकिन जल्दी से बदल जाती हैं, तो रणनीति को बहुत अधिक नुकसान होता है। इसलिए, स्टॉप पॉइंट की स्थापना महत्वपूर्ण है।

अनुकूलन दिशा

इस रणनीति को और भी बेहतर बनाया जा सकता है:

  1. एक समतुल्य चलती औसत के लिए length पैरामीटर का अनुकूलन करें और इष्टतम संतुलन बिंदु ढूंढें।

  2. विभिन्न स्टॉप लॉस पैरामीटर सेटिंग्स का परीक्षण करें और सबसे अच्छा संयोजन निर्धारित करें। बहुत अधिक स्टॉप लॉस लाभ सीमा को सीमित करता है, बहुत कम स्टॉप लॉस जोखिम को सीमित करता है।

  3. अन्य तकनीकी संकेतकों को जोड़ें, जैसे कि एमएसीडी, केडी आदि, बहु-सूचक सहमति बनाने के लिए, और गलत संकेतों से बचने के लिए।

  4. विभिन्न किस्मों और चक्रों के लिए प्रतिक्रिया परीक्षण करें, सबसे अच्छा रणनीति लागू करने के लिए परिदृश्य निर्धारित करें।

  5. मशीन लर्निंग मॉडल को शामिल करने पर विचार करें, पैरामीटर के गतिशील अनुकूलन और रणनीति के अनुकूलन को लागू करें।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

strategy("Ichimoku Backtester with TP and SL", overlay=true, 
     currency = currency.USD, default_qty_type = strategy.percent_of_equity, 
     default_qty_value = 95)
//@version=4

//Inputs
ts_bars = input(9, minval=1, title="Tenkan-Sen Bars")
ks_bars = input(26, minval=1, title="Kijun-Sen Bars")
ssb_bars = input(52, minval=1, title="Senkou-Span B Bars")
cs_offset = input(26, minval=1, title="Chikou-Span Offset")
ss_offset = input(26, minval=1, title="Senkou-Span Offset")
long_entry = input(true, title="Long Entry")
short_entry = input(true, title="Short Entry")

wait_for_cloud = input(true, title="Wait for Cloud Confirmation")

use_short_stop_loss = input(true, title="Use Short Stop Loss")
short_stop_loss = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.1, 
     defval=5) * 0.01
use_long_stop_loss = input(true, title="Use Long Stop Loss")
long_stop_loss = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.1, 
     defval=5) * 0.01
     
use_short_take_profit = input(true, title="Use Short Take Profit")
short_take_profit = input(title="Short Take Profit (%)", type=input.float, minval=0.0, step=0.1,
     defval = 20) * .01
use_long_take_profit = input(true, title="Use Long Take Profit")
long_take_profit = input(title="Long Take Profit (%)", type=input.float, minval=0.0, step=0.1,
     defval = 20) * .01

// === INPUT SHOW PLOT ===
showDate  = input(defval = false, title = "Show Date Range", type = input.bool)

// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)



// === FUNCTION EXAMPLE ===
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

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

// Ichimoku Components
tenkan = middle(ts_bars)
kijun = middle(ks_bars)
senkouA = avg(tenkan, kijun)
senkouB = middle(ssb_bars)

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)  // plot within time window

// Plot Ichimoku Kinko Hyo
plot(tenkan, color=#0496ff, title="Tenkan-Sen")
plot(kijun, color=#991515, title="Kijun-Sen")
plot(close, offset=-cs_offset+1, color=#459915, title="Chikou-Span")
sa=plot(senkouA, offset=ss_offset-1, color=color.green, title="Senkou-Span A")
sb=plot(senkouB, offset=ss_offset-1, color=color.red, title="Senkou-Span B")
fill(sa, sb, color = senkouA > senkouB ? color.green : color.red, title="Cloud color")

ss_high = max(senkouA[ss_offset-1], senkouB[ss_offset-1])
ss_low = min(senkouA[ss_offset-1], senkouB[ss_offset-1])

// Entry/Exit Signals
tk_cross_bull = tenkan > kijun
tk_cross_bear = tenkan < kijun
cs_cross_bull = mom(close, cs_offset-1) > 0
cs_cross_bear = mom(close, cs_offset-1) < 0
price_above_kumo = close > ss_high
price_below_kumo = close < ss_low
senkou_green = senkouA > senkouB ? true : false

bullish = tk_cross_bull and cs_cross_bull and price_above_kumo
bearish = tk_cross_bear and cs_cross_bear and price_below_kumo

if (wait_for_cloud)
    bullish := bullish and senkou_green
    bearish := bearish and not senkou_green

longStopPrice  = strategy.position_avg_price * (1 - long_stop_loss)
shortStopPrice = strategy.position_avg_price * (1 + short_stop_loss)
longLimitPrice = strategy.position_avg_price * (1 + long_take_profit)
shortLimitPrice = strategy.position_avg_price * (1 - short_take_profit)

in_long = false
in_long := in_long[1]


open_long = bullish and not in_long
open_short = bearish and in_long


if (open_long)
    in_long := true
if (open_short)
    in_long := false

strategy.entry("Long", strategy.long, when=open_long and long_entry and  (showDate ? window() : true))
strategy.entry("Short", strategy.short ,when=open_short and short_entry and (showDate ? window() : true))

if (strategy.position_size > 0.0)
    if (use_long_stop_loss and not use_long_take_profit)
        strategy.exit("Long", stop = longStopPrice)
    if (use_long_take_profit and not use_long_stop_loss)
        strategy.exit("Long", limit = longLimitPrice)
    if (use_long_take_profit and use_long_stop_loss)
        strategy.exit("Long", stop = longStopPrice, limit=longLimitPrice)
if (strategy.position_size < 0.0)
    if (use_short_stop_loss and not use_short_take_profit)
        strategy.exit("Short", stop = shortStopPrice)
    if (use_short_take_profit and not use_short_stop_loss)
        strategy.exit("Short", limit = shortLimitPrice)
    if (use_short_take_profit and use_short_stop_loss)
        strategy.exit("Short", stop = shortStopPrice, limit = shortLimitPrice)

strategy.close("Long", when=bearish and not short_entry and (showDate ? window() : true))
strategy.close("Short", when=bullish and not long_entry and (showDate ? window() : true))