
यह रणनीति सूचकांक चलती औसत क्रॉसिंग प्रणाली और समुद्री डाकू व्यापार प्रणाली के दो लोकप्रिय प्रणाली व्यापार रणनीतियों को एकीकृत करती है। यह प्रणाली विशेष रूप से सूर्य रेखा समय सीमा के लिए है, जो गतिशील रूप से स्थिति को समायोजित करके वास्तविक समय में बाजार के रुझानों का पालन करती है, जिसमें मजबूत ट्रैकिंग क्षमता है।
इस रणनीति में दो उप-नीतियां शामिल हैंः ट्रेंडिंग रणनीति और ब्रेकआउट रणनीति।
ट्रेंड रणनीति में ट्रेडिंग सिग्नल के रूप में फास्ट ईएमए और स्लो ईएमए के क्रॉसिंग का उपयोग किया जाता है। फास्ट ईएमए चक्र की लंबाई उपयोगकर्ता द्वारा निर्धारित की जाती है, धीमी ईएमए चक्र की लंबाई फास्ट ईएमए से 5 गुना अधिक होती है। सिग्नल को फास्ट ईएमए के अंतर को 252 चक्र रिटर्न दर के मानक अंतर से विभाजित किया जाता है, जो उतार-चढ़ाव की दर को समायोजित करने के बाद अधिक विश्वसनीय ट्रेडिंग सिग्नल उत्पन्न करता है। नए रुझान के गठन का पता चलने पर, अधिक या शून्य करें।
ब्रेकआउट रणनीतियाँ एक निश्चित अवधि की उच्चतम और निम्नतम कीमतों के औसत को एक आधार रेखा के रूप में उपयोग करती हैं। जब कीमतें एक निश्चित सीमा से ऊपर या नीचे जाती हैं, तो यह अधिक या कम संकेत देता है।
स्थिति समायोजन हाल ही में कीमतों में उतार-चढ़ाव और उपयोगकर्ता द्वारा निर्धारित वार्षिक जोखिम लक्ष्य के आधार पर गणना की जाती है। कम अस्थिरता के साथ स्थिति बड़ी होती है, और अधिक अस्थिरता के साथ स्थिति छोटी होती है, जोखिम समायोजन के बाद गतिशील स्थिति प्रबंधन को लागू करती है।
स्टॉप लॉस को वास्तविक तरंग दैर्ध्य के गुणक के आधार पर सेट किया गया है। स्टॉप लॉस को ट्रैक करने के लिए उच्चतम और निम्नतम कीमतों के आधार पर गतिशील रिटर्न।
इस रणनीति के निम्नलिखित फायदे हैं:
प्रवृत्ति अनुवर्ती और दो उप-नीतियों को तोड़ने के साथ, विभिन्न बाजार स्थितियों में अनुकूली स्विचिंग के लिए मजबूत कठोरता है।
उन्नत स्थिति प्रबंधन और जोखिम नियंत्रण तकनीक का उपयोग करें, जो स्थिति को गतिशील रूप से समायोजित कर सकता है और जोखिम को प्रभावी ढंग से नियंत्रित कर सकता है।
वास्तविक अस्थिरता और वार्षिकी जोखिम लक्ष्य का उपयोग करके स्थिति को समायोजित करना, उच्च या कम अस्थिरता वाले बाजारों में एक अपेक्षाकृत स्थिर पोर्टफोलियो जोखिम स्तर प्राप्त करना।
वास्तविक मूल्य उतार-चढ़ाव के आधार पर स्टॉप-लॉस स्थिति सेट करना, स्टॉप-लॉस क्षेत्र से अनावश्यक छोटे नुकसान को प्रभावी ढंग से रोक सकता है।
ट्रैक स्टॉप स्थिति को वास्तविक समय में समायोजित करने के लिए, ट्रेंड को ट्रैक करने के लिए लचीलापन, समय पर स्टॉप लॉस को छोड़ दें।
इस रणनीति के मुख्य जोखिम हैंः
पैरामीटर अनुकूलन पर निर्भर करता है, अलग-अलग पैरामीटर रणनीति के प्रदर्शन पर अधिक प्रभाव डालते हैं, सर्वोत्तम पैरामीटर प्राप्त करने के लिए व्यापक परीक्षण की आवश्यकता होती है।
ट्रैक स्टॉप स्टॉप ट्रेन्ड में बहुत बार स्टॉप हो सकता है। स्टॉप स्टॉप को उचित रूप से ढीला किया जा सकता है, स्टॉप सिस्टम को अनुकूलित किया जा सकता है।
पोजीशन मैनेजमेंट और रिस्क कंट्रोल टेक्नोलॉजी प्रारंभिक पूंजी और ट्रेडिंग लागत के प्रति संवेदनशील होती है। कम प्रारंभिक पूंजी और अधिक ट्रेडिंग लागत रणनीतिक लाभप्रदता को प्रभावित करती है।
रणनीति के लिए वार्षिक जोखिम लक्ष्य और अधिकतम लाभप्रदता की स्थापना का निर्धारण सही मूल्यांकन सूचकांक की अस्थिरता पर निर्भर करता है। अस्थिरता का गलत मूल्यांकन स्थिति को बहुत बड़ा या बहुत छोटा बना सकता है।
इस रणनीति के मुख्य अनुकूलन में शामिल हैंः
इष्टतम परिमेय संयोजन की खोज करें। अधिक ऐतिहासिक डेटा के साथ, इष्टतम परिमेय सेट की खोज की जा सकती है।
रोकथाम तंत्र में सुधार करना। आप रोकथाम के रूपों जैसे कि चलती रोकथाम, समय रोकथाम, कंपन रोकथाम का परीक्षण कर सकते हैं, रोकथाम रणनीतियों को अनुकूलित कर सकते हैं।
स्थिति और जोखिम प्रबंधन का अनुकूलन करें। सबसे अच्छा रिस्क-रिटर्न पोर्टफोलियो खोजने के लिए विभिन्न जोखिम लक्ष्यों का परीक्षण किया जा सकता है। विभिन्न स्तरों के लाभ के प्रभाव का भी परीक्षण किया जा सकता है।
अन्य सहायक संकेतकों को आज़माएं। संकेतों की सटीकता और रणनीति की स्थिरता को बढ़ाने के लिए अधिक तकनीकी संकेतकों को जोड़ा जा सकता है।
विभिन्न होल्डिंग चक्रों का परीक्षण करें। होल्डिंग विन्यास की सटीकता बढ़ाने के लिए उच्च चक्र सहायक निर्णयों का उपयोग करने का प्रयास करें।
रणनीति प्रवृत्ति का पालन करने और प्रवृत्ति को तोड़ने के लिए दो श्रेणियों की ट्रेडिंग रणनीति को एकीकृत करती है, उन्नत गतिशील स्थिति प्रबंधन तकनीक का उपयोग करती है, जोखिम के लिए समायोजित स्थिति विन्यास को प्राप्त करती है, बाजार की गति को ट्रैक करने के साथ-साथ जोखिम को प्रभावी ढंग से नियंत्रित कर सकती है, लाभप्रदता मजबूत है, और आगे परीक्षण और अनुकूलन के लायक है।
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Crunchster1
//@version=5
strategy(title="Crunchster's Turtle and Trend System", shorttitle="Turtle Trend", overlay=true, slippage=10, pyramiding=1, precision = 4, calc_on_order_fills = false, calc_on_every_tick = false, default_qty_value = 0.1, initial_capital = 1000, commission_value = 0.06, process_orders_on_close = true)
// Inputs and Parameters
src = input(close, 'Source', group='Strategy Settings')
length = input.int(title="Lookback period for fast EMA", defval=10, minval=2, group='Strategy Settings', tooltip='This sets the lookback period for the fast exponential moving average. The slow EMA is 5x the fast EMA length')
blength = input.int(title="Lookback period for Breakout", defval=20, minval=5, step=5, group='Strategy Settings')
long = input(true, 'Long', inline='08', group='Strategy toggle')
short = input(true, 'Short', inline='08', group='Strategy toggle', tooltip='Toggle long/short strategy on/off')
EMAwt = input(false, 'Trend', inline='01', group='Strategy toggle')
breakwt = input(true, 'Breakout', inline='01', group='Strategy toggle', tooltip='Toggle trend/breakout strategy on/off')
stopMultiple = input.float(2, 'Stop multiple', step=0.5, group='Risk Management Settings', tooltip='Multiple for ATR, setting hard stop loss from entry price')
trail = input.int(10, 'Trail lookback', step=5, group='Risk Management Settings', tooltip='Lookback period for the trailing stop')
lev = input.float(1, 'Max Leverage', step=0.5, group='Risk Management Settings', tooltip='Max leverage sets maximum allowable leverage of total capital (initial capital + any net profit), capping maximum volatility adjusted position size')
riskT = input.float(15, maxval=75, title='Annualised Volatility Target %', group='Risk Management Settings', tooltip='Specify annual risk target, used to determine volatility adjusted position size. Annualised daily volatility is referenced to this value and position size adjusted accordingly')
comp = input(true, 'Compounding', inline='09', group='Risk Management Settings')
Comppct = input.float(50, '%', step=5, inline='09', group='Risk Management Settings', tooltip='Toggle compounding of profit, and set % of profit to compound')
// Backtesting period
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31, inline='04', group='Backtest range')
FromMonth = input.int(defval=1, title='From Mon', minval=1, maxval=12, inline='04', group='Backtest range')
FromYear = input.int(defval=2018, title='From Yr', minval=1900, inline='04', group='Backtest range', tooltip='Set start of backtesting period')
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31, inline='05', group='Backtest range')
ToMonth = input.int(defval=1, title='To Mon', minval=1, maxval=12, inline='05', group='Backtest range')
ToYear = input.int(defval=9999, title='To Yr', minval=1900, inline='05', group='Backtest range', tooltip='Set end of backtesting period')
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window = time >= start and time <= finish
// Breakout strategy
lower = ta.lowest(low[1], blength)
upper = ta.highest(high[1], blength)
basis = math.avg(upper, lower)
signal = 20*(close - basis) / (upper - lower)
// Trend strategy
fEMA = ta.ema(close[1], length)
sEMA = ta.ema(close[1], length*5)
emadiff = fEMA - sEMA
nemadiff = 5*emadiff/(ta.stdev(close - close[1], 252))
//Risk Management formulae
strategy.initial_capital = 50000
tr = math.max(high - low, math.abs(high - close), math.abs(low - close)) //True range
stopL = ta.sma(tr, 14) //Average true range
stdev = ta.stdev(close-close[1], 14) //volatility of recent returns
maxcapital = strategy.initial_capital+strategy.netprofit //Maximum capital available to invest - initial capital net of profit
annvol = 100*math.sqrt(365)*stdev/close //converts recent volatility of returns into annualised volatility of returns - assumes daily timeframe
risk = 1.1
if comp
risk := (strategy.initial_capital+(Comppct*strategy.netprofit/100))//adjust investment capital to include compounding
else
risk := strategy.initial_capital
shares = (risk * (riskT/annvol)) / close //calculates volatility adjusted position size, dependent on user specified annualised risk target
if ((shares*close) > lev*maxcapital) //ensures position size does not exceed available capital multiplied by user specified maximum leverage
shares := lev*maxcapital/close
//To set the price at the entry point of trade
Posopen() =>
math.abs(strategy.position_size[1]) <= 0 and math.abs(strategy.position_size) > 0
var float openN = na
if Posopen()
openN := stopL
// Trailing stop
tlower = ta.lowest(low[1], trail)
tupper = ta.highest(high[1], trail)
tbasis = math.avg(tupper, tlower)
tsignal = 20*(close - tbasis) / (tupper - tlower)
// Strategy Rules
if EMAwt
if long
longCondition2 = (nemadiff >2 and nemadiff[1] <2) and window
exitlong = tsignal <= -10
if (longCondition2)
strategy.entry('Trend Long!', strategy.long, qty=shares)
if strategy.position_size > 0
strategy.exit('Stop Long', from_entry = 'Trend Long!', stop=(strategy.opentrades.entry_price(0) - (openN * stopMultiple)))
if (exitlong)
strategy.close('Trend Long!', immediately = true)
if short
shortCondition2 = (nemadiff <-1 and nemadiff[1] >-1) and window
exitshort = tsignal >= 10
if (shortCondition2)
strategy.entry('Trend Short!', strategy.short, qty=shares)
if strategy.position_size < 0
strategy.exit('Stop Short', from_entry = 'Trend Short!', stop=(strategy.opentrades.entry_price(0) + (openN * stopMultiple)))
if (exitshort)
strategy.close('Trend Short!', immediately = true)
if breakwt
if long
longCondition1 = (signal >= 10) and window
exitlong = tsignal <= -10
if (longCondition1)
strategy.entry('Break Long!', strategy.long, qty=shares)
if strategy.position_size > 0
strategy.exit('Stop Long', from_entry = 'Break Long!', stop=(strategy.opentrades.entry_price(0) - (openN * stopMultiple)))
if (exitlong)
strategy.close('Break Long!', immediately = true)
if short
shortCondition1 = (signal <= -10) and window
exitshort = tsignal >= 10
if (shortCondition1)
strategy.entry('Break Short!', strategy.short, qty=shares)
if strategy.position_size < 0
strategy.exit('Stop Short', from_entry = 'Break Short!', stop=(strategy.opentrades.entry_price(0) + (openN * stopMultiple)))
if (exitshort)
strategy.close('Break Short!', immediately = true)
// Visuals of trend and direction
plot(nemadiff, title='EMA Forecast', color=color.black, display=display.none)
plot(ta.sma(ta.median(math.sqrt(math.pow(nemadiff,2)), 700), 350), 'Forecast mean', color=color.rgb(245, 0, 0), display=display.none)
MAColor = fEMA > sEMA ? #00ff00 : #ff0000
MA1 = plot(fEMA, title='Fast EMA', color=MAColor)
MA2 = plot(sEMA, title='Slow EMA', color=MAColor)
fill(MA1, MA2, title='Band Filler', color=MAColor)