समय-चरणबद्ध स्थिति योग पर आधारित एक सरल मात्रात्मक रणनीति


निर्माण तिथि: 2023-12-27 17:39:40 अंत में संशोधित करें: 2023-12-27 17:39:40
कॉपी: 0 क्लिक्स: 684
1
ध्यान केंद्रित करना
1623
समर्थक

समय-चरणबद्ध स्थिति योग पर आधारित एक सरल मात्रात्मक रणनीति

अवलोकन

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

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

यह रणनीति तीन प्रमुख तार्किक सिद्धांतों पर आधारित हैः

  1. समय सीढ़ी बढ़ाव

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

  1. व्यक्तिगत रोकथाम

प्रत्येक स्टॉक ऑर्डर के लिए एक स्टॉप सेट करेंtakeProfitऔर रोकstopLossप्रत्येक आदेश के लिए एक स्वतंत्र स्टॉप-स्टॉप लॉजिक है, जिससे कि स्टॉप-स्टॉप लॉस को कई बार किया जा सके।

  1. समय सीमा समाप्त हो गई

उस दिन के ट्रेडिंग अवधि के अंत में, यह चुनने का विकल्प है कि क्या उस अवधि के दौरान सभी अपूर्ण स्टॉपलॉस ऑर्डर पर कोई प्वाइजिंग होगी।

रणनीतिक लाभ

इस रणनीति के निम्नलिखित फायदे हैं:

  1. जोखिमों को अलग-अलग करने के लिए, विभिन्न आदेशों के लिए पूल के भीतर धन को वितरित करना, एक आदेश पर नुकसान को प्रभावी ढंग से नियंत्रित करना।

  2. स्टॉप लॉस को अलग-अलग आदेशों के लिए अलग-अलग स्टॉप लॉजिक के साथ बंद करें, ताकि सभी ऑर्डर एक ही समय में बंद न हों।

  3. लचीला विन्यास, अधिकतम जमा बार, दैनिक व्यापार समय अवधि, स्टॉप-स्टॉप-लॉस अनुपात आदि पैरामीटर को अनुकूलित किया जा सकता है।

  4. यह समझना आसान है, रणनीति सरल और स्पष्ट है।

रणनीतिक जोखिम

इस रणनीति में कुछ जोखिम भी हैं:

  1. यदि सभी ऑर्डर स्टॉप लाइन तक नहीं पहुंचते हैं, तो संबंधित स्टॉप लाइन को ट्रिगर करने से पहले एक बड़ा नुकसान हो सकता है। उचित स्टॉप अनुपात की विन्यास के माध्यम से इसे टाला जा सकता है।

  2. प्रति दिन कुल खोलने की सीमा को सीमित नहीं किया जा सकता है, यदि विशेष परिस्थितियों में, एक साथ अधिक ऑर्डर जमा करना धन की सहनशीलता से अधिक हो सकता है। कुल जमा राशि को अधिकतम करने के लिए दैनिक सीमा जोड़ने पर विचार किया जा सकता है।

  3. अनुचित समय सीमा विन्यास के कारण व्यापार के अवसरों को याद किया जा सकता है। यह अनुशंसा की जाती है कि ट्रेडिंग समय सीमा को लक्ष्य ट्रेडिंग किस्मों के सक्रिय समय के संदर्भ में विन्यस्त किया जाए।

रणनीति अनुकूलन

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

  1. स्थिति खोलने के लिए एक तर्क जोड़ें, केवल एक विशिष्ट तकनीकी संकेतक सिग्नल को पूरा करने के लिए स्थिति खोलें, और अंधाधुंध वृद्धि से बचें।

  2. प्रति दिन जमा की गई कुल राशि की सीमा बढ़ाएं ताकि पूल की क्षमता से अधिक न हो।

  3. अलग-अलग ऑर्डर के लिए अलग-अलग स्टॉपलॉस अनुपात सेट करें, अंतर स्टॉपलॉस प्राप्त करें।

  4. आदेशों की संख्या को उपलब्ध निधियों से जोड़ने के लिए आदेशों की संख्या को पूल बैलेंस से जोड़ने के लिए तर्क।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
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/
// © A3Sh

//@version=5
strategy("Simple_Pyramiding", overlay=true, pyramiding=99, initial_capital=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.075, close_entries_rule='FIFO')

// Study of a Simple DCA strategy that opens a position every day at a specified time.
// A position is opened at the start time of the Timeframe.
// Positions exit individually when the take profit level is triggered.
// Option to activate Stop Loss and/or Position exit at the end of the Timeframe


// Backtest Window
start_time   = input(defval=timestamp("01 April 2021 20:00"), group = "Backtest Window", title="Start Time")
end_time     = input(defval=timestamp("01 Aug 2022 20:00"),  group = "Backtest Window", title="End Time")
window() => true


// Inputs
posCount     = input.int    (6,           group = "Risk",         title = "Max Amount of DCA Entries")
takeProfit   = input.float  (2.5,         group = "Risk",         title = "Take Profit %")
slSwitch     = input.bool   (true,        group = "Risk",         title = "Activate Stop Loss")
stopLoss     = input.float  (9,           group = "Risk",         title = "Stop Loss %")
sessionTime =  input("1800-1700", group = "DCA Settings", title = "DCA Order Timeframe", tooltip="Open order at the start/If ativated, close order at the end")
exitDCA     =  input.bool   (false,       group = "DCA Settings", title = "Exit DCA Entry at end of Timeframe")


// Order size based on max amount of pyramid orders
q = (strategy.equity  / posCount) / open


// Timeframe for opening and closing a DCA order
// example taken from https://stackoverflow.com/questions/69230164/pinescript-basic-question-open-a-trade-at-a-set-time-each-day
t       = time("D", sessionTime)
isStart = na(t[1]) and not na(t) or t[1] < t
isEnd   = na(t) and not na(t[1]) or t[1] < t
bgcolor(t ? color.new(color.blue,95) : na, title = " TimeFrame Color")


// Create DCA Entries
entry_price = 0.0
if isStart and window() 
    for i = 0 to strategy.opentrades
        if strategy.opentrades == i
            entry_price := close
            entry_id = "PE_" + str.tostring(i + 1) 
            strategy.entry(id = entry_id, direction=strategy.long, limit=entry_price, qty=q)
        if strategy.opentrades == posCount
            break
            
 
//Exit DCA Entries when take profit or stop loss is triggered
if strategy.opentrades > 0 and window() 
    for i = 0 to strategy.opentrades 
        exit_from = "PE_" + str.tostring(i + 1)
        exit_id = "Exit_" + str.tostring(i + 1)
        strategy.exit(id= exit_id, from_entry= exit_from, profit = close * takeProfit / 100 / syminfo.mintick, loss = slSwitch ? close * stopLoss /100 / syminfo.mintick :na)
        

//Exit DCA Entries at end of DCA Timeframe
if strategy.opentrades > 0 and exitDCA and isEnd and window() 
    for i = 0 to strategy.opentrades 
        exit_from = "PE_" + str.tostring(i + 1)
        exit_id = "Exit_" + str.tostring(i + 1)
        strategy.exit(id= exit_id, from_entry= exit_from, stop = close)