तीन मूविंग एवरेज गोल्डन क्रॉस ट्रेडिंग रणनीति


निर्माण तिथि: 2024-01-16 18:18:02 अंत में संशोधित करें: 2024-01-16 18:18:02
कॉपी: 0 क्लिक्स: 724
1
ध्यान केंद्रित करना
1617
समर्थक

तीन मूविंग एवरेज गोल्डन क्रॉस ट्रेडिंग रणनीति

अवलोकन

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

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

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

जब अल्पकालिक चलती औसत पर मध्यवर्ती चलती औसत को पार करना, तो यह दर्शाता है कि कीमतें ऊपर की ओर टूटने लगी हैं; इस समय यदि मध्यवर्ती चलती औसत लंबी अवधि के चलती औसत से अधिक है, तो यह दर्शाता है कि यह वर्तमान में तेजी में है, इसलिए इस समय एक खरीद संकेत उत्पन्न होता है।

इसके विपरीत, जब अल्पकालिक चलती औसत मध्यवर्ती चलती औसत के नीचे से गुजरता है, तो यह दर्शाता है कि कीमतें नीचे की ओर टूटने लगी हैं; इस समय यदि मध्यवर्ती चलती औसत दीर्घकालिक चलती औसत से कम है, तो यह दर्शाता है कि यह वर्तमान में गिरावट में है, इसलिए इस समय एक बेचने का संकेत है।

इस रणनीति में एक साथ एक स्टॉप-लॉस और स्टॉप-ऑफ लाइन सेट की जाती है। ट्रेड के बाद, स्टॉप-लॉस और स्टॉप-ऑफ मूल्य की गणना सेट स्टॉप-लॉस और स्टॉप-ऑफ अनुपात के आधार पर की जाती है। यदि कीमत स्टॉप-लॉस या स्टॉप-ऑफ लाइन को छूती है, तो स्थिति को बंद कर दिया जाता है।

रणनीतिक लाभ

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

रणनीतिक जोखिम और समाधान

  • त्रिभुज एक दूसरे के साथ संरेखित होने पर, एक गलत संकेत उत्पन्न हो सकता है

समाधानः गलत संकेतों से बचने के लिए चलती औसत को ठीक से समायोजित करें

  • अत्यधिक स्टॉप लॉस स्टॉप अनुपात सेट करें

समाधानः स्टॉप लॉस स्टॉप अनुपात को ठीक से समायोजित करें, न तो बहुत बड़ा और न ही बहुत छोटा

  • अनुचित पैरामीटर सेटिंग, जिसके कारण लेनदेन की आवृत्ति बहुत अधिक या बहुत कम है

समाधानः विभिन्न मापदंडों का परीक्षण करें और सबसे अच्छा संयोजन खोजें

रणनीति अनुकूलन दिशा

त्रिकोणात्मक गोल्डन क्रॉस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः

  • विभिन्न प्रकार के और विभिन्न लंबाई के मापदंडों का परीक्षण करें और सर्वोत्तम मापदंड खोजें

सर्वोत्तम व्यापार के लिए विभिन्न लंबाई या विभिन्न प्रकार के चलती औसत संयोजनों का परीक्षण किया जा सकता है

  • फ़िल्टर सिग्नल के लिए अन्य तकनीकी संकेतक जोड़ें

KDJ, MACD, आदि जैसे अन्य संकेतकों को रणनीति में शामिल किया जा सकता है, मल्टी फैक्टर वेरिफिकेशन, फ़िल्टरिंग गलत संकेत

  • विभिन्न किस्मों की विशेषताओं के अनुसार चयन मापदंड

उच्च अस्थिरता वाली किस्मों के लिए चलती औसत चक्र को छोटा किया जा सकता है; कम अस्थिरता वाली किस्मों के लिए चलती औसत चक्र को बढ़ाया जा सकता है

  • इष्टतम पैरामीटर संयोजन खोजने के लिए मशीन सीखने का उपयोग करें

एल्गोरिदम के माध्यम से स्वचालित रूप से पैरामीटर स्पेस में घूमते हुए, तेजी से इष्टतम पैरामीटर का पता लगाएं

संक्षेप

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

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

//@version=3
strategy("Kozlod - 3 MA strategy with SL/PT", shorttitle="kozlod_3ma", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 5)

// 
// author: Kozlod
// date: 2018-03-25
// 

////////////
// INPUTS //
////////////

ma_type        = input(title = "MA Type",            defval = "SMA", options = ['SMA', 'EMA', 'WMA', 'VWMA', 'HMA', 'SMMA', 'DEMA'])
short_ma_len   = input(title = "Short MA Length",    defval = 5,     minval = 1)
short_ma_src   = input(title = "Short MA Source",    defval = close)
medium_ma_len  = input(title = "Medium MA Length",   defval = 20,    minval = 2)
medium_ma_src  = input(title = "Medium MA Source",   defval = close)
long_ma_len    = input(title = "Long MA Length",     defval = 100,   minval = 3)
long_ma_src    = input(title = "Long MA Source",     defval = close)

sl_lev_perc    = input(title = "SL Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)
pt_lev_perc    = input(title = "PT Level % (0 - Off)", type = float,   defval = 0,  minval = 0, step = 0.01)

// Set initial values to 0
short_ma  = 0.0
long_ma   = 0.0
medium_ma = 0.0

// Simple Moving Average (SMA)
if ma_type == 'SMA' 
    short_ma  := sma(short_ma_src,  short_ma_len)
    medium_ma := sma(medium_ma_src, medium_ma_len)
    long_ma   := sma(long_ma_src,   long_ma_len)

// Exponential Moving Average (EMA)
if ma_type == 'EMA'
    short_ma  := ema(short_ma_src,  short_ma_len)
    medium_ma := ema(medium_ma_src, medium_ma_len)
    long_ma   := ema(long_ma_src,   long_ma_len)

// Weighted Moving Average (WMA)
if ma_type == 'WMA'
    short_ma  := wma(short_ma_src,  short_ma_len)
    medium_ma := wma(medium_ma_src, medium_ma_len)
    long_ma   := wma(long_ma_src,   long_ma_len)

// Hull Moving Average (HMA)
if ma_type == 'HMA'
    short_ma  := wma(2*wma(short_ma_src,  short_ma_len  / 2) - wma(short_ma_src,  short_ma_len),  round(sqrt(short_ma_len)))
    medium_ma := wma(2*wma(medium_ma_src, medium_ma_len / 2) - wma(medium_ma_src, medium_ma_len), round(sqrt(medium_ma_len)))
    long_ma   := wma(2*wma(long_ma_src,   long_ma_len   / 2) - wma(long_ma_src,   long_ma_len),   round(sqrt(long_ma_len)))

// Volume-weighted Moving Average (VWMA)
if ma_type == 'VWMA'
    short_ma  := vwma(short_ma_src,  short_ma_len)
    medium_ma := vwma(medium_ma_src, medium_ma_len)
    long_ma   := vwma(long_ma_src,   long_ma_len)

// Smoothed Moving Average (SMMA)    
if ma_type == 'SMMA'
    short_ma  := na(short_ma[1])  ? sma(short_ma_src, short_ma_len)   : (short_ma[1]  * (short_ma_len  - 1) + short_ma_src)  / short_ma_len
    medium_ma := na(medium_ma[1]) ? sma(medium_ma_src, medium_ma_len) : (medium_ma[1] * (medium_ma_len - 1) + medium_ma_src) / medium_ma_len
    long_ma   := na(long_ma[1])   ? sma(long_ma_src,  long_ma_len)    : (long_ma[1]   * (long_ma_len   - 1) + long_ma_src)   / long_ma_len

// Double Exponential Moving Average (DEMA)
if ma_type == 'DEMA'
    e1_short  = ema(short_ma_src , short_ma_len)
    e1_medium = ema(medium_ma_src, medium_ma_len)
    e1_long   = ema(long_ma_src,   long_ma_len)
    
    short_ma  := 2 * e1_short  - ema(e1_short,  short_ma_len)
    medium_ma := 2 * e1_medium - ema(e1_medium, medium_ma_len)
    long_ma   := 2 * e1_long   - ema(e1_long,   long_ma_len)

/////////////
// SIGNALS //
/////////////

long_signal  = crossover( short_ma, medium_ma) and medium_ma > long_ma
short_signal = crossunder(short_ma, medium_ma) and medium_ma < long_ma

// Calculate PT/SL levels 
// Initial values 
last_signal    = 0
prev_tr_price  = 0.0
pt_level       = 0.0
sl_level       = 0.0

// Calculate previous trade price
prev_tr_price := (long_signal[1] and nz(last_signal[2]) != 1) or (short_signal[1] and nz(last_signal[2]) != -1) ? open : nz(last_signal[1]) != 0 ? prev_tr_price[1] : na

// Calculate SL/PT levels 
pt_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 + pt_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 - pt_lev_perc / 100)  : na
sl_level := nz(last_signal[1]) == 1 ? prev_tr_price * (1 - sl_lev_perc / 100) : nz(last_signal[1]) == -1 ? prev_tr_price * (1 + sl_lev_perc / 100)  : na

// Calculate if price hit sl/pt 
long_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  1 and close >= pt_level
long_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  1 and close <= sl_level

short_hit_pt = pt_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close <= pt_level
short_hit_sl = sl_lev_perc > 0 and nz(last_signal[1]) ==  -1 and close >= sl_level

// What is last active trade? 
last_signal := long_signal ? 1 : short_signal ? -1 : long_hit_pt or long_hit_sl or short_hit_pt or short_hit_sl ? 0 : nz(last_signal[1])

//////////////
// PLOTTING //
//////////////

// Plot MAs
plot(short_ma,  color = red,    linewidth = 2)
plot(medium_ma, color = green,  linewidth = 2)
plot(long_ma,   color = yellow, linewidth = 2)


// Plot Levels 
plotshape(prev_tr_price, style = shape.cross, color = gray, location  = location.absolute, size = size.small)


plotshape(sl_lev_perc > 0 ? sl_level : na, style = shape.cross, color = red,   location  = location.absolute, size = size.small)
plotshape(pt_lev_perc > 0 ? pt_level : na, style = shape.cross, color = green, location  = location.absolute, size = size.small)

//////////////
// STRATEGY //
//////////////

strategy.entry("long",  true,  when = long_signal)
strategy.entry("short", false, when = short_signal)

strategy.close("long",  when = long_hit_pt  or long_hit_sl)
strategy.close("short", when = short_hit_pt or short_hit_sl)