मल्टी-टाइम फ़्रेम ट्रेलिंग स्टॉप रणनीति


निर्माण तिथि: 2024-01-08 11:24:24 अंत में संशोधित करें: 2024-01-08 11:24:24
कॉपी: 0 क्लिक्स: 644
1
ध्यान केंद्रित करना
1617
समर्थक

मल्टी-टाइम फ़्रेम ट्रेलिंग स्टॉप रणनीति

अवलोकन

यह रणनीति मेरे द्वारा पहले प्रकाशित की गई सरल ट्रैक स्टॉप रणनीति का एक बहु-समय-सीमा संस्करण है। पिछली रणनीति ने केवल बुनियादी ट्रैक स्टॉप का उपयोग करके स्थिति में प्रवेश किया था। यह अच्छी तरह से काम करता है, इसलिए मैंने इसमें कुछ सुधार करने की कोशिश की। मुझे आश्चर्य है कि अगर एक ही एटीआर ट्रैक स्टॉप का उपयोग विभिन्न समय-सीमाओं पर किया जाता है और उन्हें एक सिग्नल में मिलाया जाता है तो क्या होगा?

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

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

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

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

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

रणनीतिक लाभ

  1. मल्टीटाइम फ़्रेम निर्णय का उपयोग करके, प्रभावी रूप से शोर को फ़िल्टर करें और रुझान की दिशा की पहचान करें
  2. एटीआर ट्रैक स्टॉप मोड स्टॉप दूरी को गतिशील रूप से समायोजित करता है, जो कि लीवरेज की संभावना को कम करता है
  3. ट्रेंड फॉलोइंग और स्टॉप मैनेजमेंट के संयोजन से, ट्रेंड फॉलोइंग और स्टॉप लॉस दोनों समय पर हो सकते हैं
  4. कम पैरामीटर, समझने और समायोजित करने में आसान

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

  1. एटीआर स्टॉप यदि पैरामीटर गलत तरीके से सेट किया गया है, तो यह कीमत के बहुत करीब या बहुत दूर हो सकता है, और इसे आसानी से पार किया जा सकता है या बहुत दूर बंद कर दिया जा सकता है
  2. बहु-समय फ्रेम संयोजन यदि पैरामीटर गलत तरीके से सेट किए जाते हैं, तो यह प्रभावी रूप से काम नहीं कर सकता है या गलत निर्णय ले सकता है
  3. स्टॉप लॉस और टाइमफ्रेम पैरामीटर को एक साथ कॉन्फ़िगर करने की आवश्यकता है, अन्यथा इष्टतम प्रभाव प्राप्त नहीं किया जा सकता है

समाधान:

  1. विभिन्न संयोजनों और किस्मों का बार-बार परीक्षण करें और सर्वश्रेष्ठ खोजें
  2. समय सीमा के अनुपात और मात्रा का अनुकूलन करें, यह सुनिश्चित करने के लिए कि ट्रेंड के बारे में विश्वसनीय निर्णय लिया जा सके
  3. एटीआर स्टॉप लॉस के गुणकों को समायोजित करें, स्टॉप लॉस को पार नहीं करने और बहुत दूर नहीं होने के बीच संतुलन ढूंढें

अनुकूलन दिशा

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

  1. समय फ्रेम की संख्या में वृद्धि या कमी, सबसे अच्छा रुझान का न्याय करने के लिए फ्रेम के संयोजन को खोजने के लिए
  2. विभिन्न एटीआर गुणांकों का परीक्षण करके सबसे अच्छा स्टॉप-डाउन दूरी निर्धारित करें
  3. प्रवृत्ति जारी रहने पर अधिक पोजीशन बनाने के लिए पुनः प्रवेश तंत्र जोड़ना
  4. अन्य संकेतकों के साथ संयोजन में प्रवेश समय को फ़िल्टर करें, जैसे कि मात्रा-मूल्य सूचक आदि
  5. विभिन्न किस्मों के लिए अनुकूलित

संक्षेप

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

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

//@version=4
strategy(title="MTF Trailing SL Strategy [QuantNomad]", shorttitle = "MTF TrailingSL [QN]", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

////////////
// Inputs //

atr_length = input(14,    title = "ATR Length")
atr_mult   = input(2,     title = "ATR Mult",    type = input.float)

tf2 = input('120', title = "TF2", type = input.string)
tf3 = input('180', title = "TF3", type = input.string)
tf4 = input('240', title = "TF4", type = input.string)

// BACKTESTING RANGE
// From Date Inputs
fromDay   = input(defval = 1,    title = "From Day",   minval = 1, maxval = 31)
fromMonth = input(defval = 1,    title = "From Month", minval = 1, maxval = 12)
fromYear  = input(defval = 2016, title = "From Year",  minval = 1970)
 
// To Date Inputs
toDay   = input(defval = 1,    title = "To Day",   minval = 1, maxval = 31)
toMonth = input(defval = 1,    title = "To Month", minval = 1, maxval = 12)
toYear  = input(defval = 2100, title = "To Year",  minval = 1970)
 
// Calculate start/end date and time condition
startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear,   toMonth,   toDay,   00, 00)

time_cond = time >= startDate and time <= finishDate

//////////////////
// CALCULATIONS //


tsl() => 
    // SL values
    sl_val = atr_mult * atr(atr_length)
     
    // Init Variables
    pos         = 0
    trailing_sl = 0.0
    
    // Signals
    long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
    short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 
    
    // Calculate SL
    trailing_sl := short_signal     ? high + sl_val : 
                   long_signal      ? low  - sl_val : 
                   nz(pos[1]) ==  1 ? max(low  - sl_val, nz(trailing_sl[1])) :  
                   nz(pos[1]) == -1 ? min(high + sl_val, nz(trailing_sl[1])) : 
                   nz(trailing_sl[1])
                   
    // Position var               
    pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 
    trailing_sl
    
    
trailing_sl1 = tsl()
trailing_sl2 = security(syminfo.tickerid, tf2, tsl())
trailing_sl3 = security(syminfo.tickerid, tf3, tsl())
trailing_sl4 = security(syminfo.tickerid, tf4, tsl())

pos1 = 0
pos1 := low <= trailing_sl1 ? -1 : high >= trailing_sl1 ? 1 : nz(pos1[1])

pos2 = 0
pos2 := low <= trailing_sl2 ? -1 : high >= trailing_sl2 ? 1 : nz(pos2[1])

pos3 = 0
pos3 := low <= trailing_sl3 ? -1 : high >= trailing_sl3 ? 1 : nz(pos3[1])

pos4 = 0
pos4 := low <= trailing_sl4 ? -1 : high >= trailing_sl4 ? 1 : nz(pos4[1])

total_pos = pos1 + pos2 + pos3 + pos4

//////////////
// PLOTINGS //

plot(trailing_sl1, linewidth = 2 , color = pos1 == 1 ? color.green : color.red, title = "TSL TF1")
plot(trailing_sl2, linewidth = 2 , color = pos2 == 1 ? color.green : color.red, title = "TSL TF2", transp = 25)
plot(trailing_sl3, linewidth = 2 , color = pos3 == 1 ? color.green : color.red, title = "TSL TF3", transp = 50)
plot(trailing_sl4, linewidth = 2 , color = pos4 == 1 ? color.green : color.red, title = "TSL TF4", transp = 75)

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

//strategy.entry("long",  true,  stop = trailing_sl1)
//strategy.entry("short", false, stop = trailing_sl1)

strategy.entry("long",    true, when = total_pos ==  4)
strategy.entry("short",  false, when = total_pos == -4)

strategy.close("long",  when = total_pos <= 0)
strategy.close("short", when = total_pos >= 0)