
द्वि-समान रेखा क्रॉसिंग रणनीति एक क्लासिक ट्रेंड-ट्रेसिंग ट्रेडिंग रणनीति है। यह रणनीति दो चलती औसत का उपयोग करती है, एक तेजी से चलती औसत और दूसरी धीमी गति से चलती औसत। जब तेजी से चलती औसत धीमी गति से चलती औसत को ऊपर से नीचे की ओर से पार करती है, तो इसे “गोल्डन क्रॉसिंग” कहा जाता है, यह दर्शाता है कि एक ऊंची प्रवृत्ति हो सकती है, और अधिक पदों को खोला जाता है। जब तेजी से चलती औसत धीमी गति से चलती औसत को ऊपर से नीचे की ओर से पार करती है, तो इसे “डेथ क्रॉसिंग” कहा जाता है, यह दर्शाता है कि नीचे की प्रवृत्ति हो सकती है, और खाली पदों को खोला जाता है। यह रणनीति कोड सरल चलती औसत (एसएमए) और डिजिटल चलती औसत (ईएमए) का उपयोग करने के लिए समर्थित है, और स्टॉप लॉस सेट कर सकती है।
इस रणनीति का मूल यह है कि प्रवृत्ति की दिशा और स्थिति खोलने के समय को निर्धारित करने के लिए प्रवृत्ति की विशेषता और क्रॉसिंग सिग्नल का उपयोग करें। सबसे पहले, एक तेज चलती औसत (डिफ़ॉल्ट 50) और धीमी चलती औसत (डिफ़ॉल्ट 200) की आवृत्ति को पैरामीटर के साथ सेट करें, और एसएमए या ईएमए का उपयोग करने का विकल्प चुनें। फिर दो चलती औसत की गणना करें और उनके क्रॉसिंग का न्याय करेंः
द्वि-समान रेखा क्रॉसिंग रणनीति एक सरल क्लासिक प्रवृत्ति ट्रैकिंग रणनीति है, जो दो अलग-अलग चक्रों की चलती औसत के क्रॉसिंग के माध्यम से प्रवृत्ति की दिशा और स्थिति खोलने के समय का आकलन करती है, जो मध्यम और दीर्घकालिक प्रवृत्ति को पकड़ने के लिए उपयुक्त है। लेकिन स्थिर पैरामीटर बदलते बाजार के वातावरण में अस्थिर प्रदर्शन कर सकते हैं, और अधिक अनुकूलन की आवश्यकता होती है, जैसे कि अनुकूलन पैरामीटर, स्टॉप लॉस में सुधार, सिग्नल की शुरूआत आदि, एक अपेक्षाकृत मजबूत व्यापारिक रणनीति बनने के लिए। यह रणनीति प्रवृत्ति रणनीति के आधार के रूप में काम कर सकती है, और इस आधार पर लगातार सुधार और विस्तार की आवश्यकता है।
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//==============================================================================
// A baseline strategy with a well known concept, golden cross & death cross.
// Support for both Simple & Exponential moving averages.
// Support for long & short stop losses as a percentage.:well
//==============================================================================
strategy("Basic Moving Average Crosses", overlay=true)
//------------------------------------------------------------------------------
// configuration
//------------------------------------------------------------------------------
maQuickLength = input(50, title="Quick MA Length")
maSlowLength = input(200, title="Quick MA Length")
useSma = input(true, title="Use SMA? If false, EMA is used.")
maQuick = useSma ? ta.sma(close, maQuickLength) : ta.ema(close, maQuickLength)
maSlow = useSma ? ta.sma(close, maSlowLength) : ta.ema(close, maSlowLength)
stop_loss_percentage = input(2.0, title="Stop Loss (%)")
var float longStopLevel = na
var float shortStopLevel = na
bool isGoldenCross = ta.crossover(maQuick, maSlow)
bool isDeathCross = ta.crossunder(maQuick, maSlow)
//------------------------------------------------------------------------------
// position opening logic
//------------------------------------------------------------------------------
if(strategy.position_size == 0)
// Golden cross, enter a long position
if(isGoldenCross)
strategy.entry("Buy", strategy.long)
longStopLevel := close - close * stop_loss_percentage/100.0
strategy.exit("StopLossLong", "Buy", stop=longStopLevel)
// Death cross, enter short position
else if(isDeathCross)
strategy.entry("Sell", strategy.short)
shortStopLevel := close + close * stop_loss_percentage/100.0
strategy.exit("StopLossShort", "Sell", stop=shortStopLevel)
//------------------------------------------------------------------------------
// position closing logic
//------------------------------------------------------------------------------
else
// Close long position on death cross
if(strategy.position_size > 0 and isDeathCross)
strategy.close("Buy")
// Close short position on golden cross
else if(strategy.position_size < 0 and isGoldenCross)
strategy.close("Sell")
//------------------------------------------------------------------------------
// ploting
//------------------------------------------------------------------------------
plot(maQuick, color=color.yellow)
plot(maSlow, color=color.blue)