कई संकेतकों के आधार पर क्रॉस-साइकिल आर्बिट्रेज रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-29 11:10:33
टैगः

img

अवलोकन

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

रणनीति तर्क

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

  1. जब कीमत केल्टनर चैनल के ऊपरी रेल से अधिक होती है, तो इसे तेजी का संकेत माना जाता है। जब कीमत केल्टनर चैनल के निचले रेल से कम होती है, तो इसे मंदी का संकेत माना जाता है।

  2. अस्थिरता स्टॉप मूल्य अस्थिरता और चैनल चौड़ाई के आधार पर स्टॉप हानि स्थिति सेट करता है। यह अत्यधिक रूढ़िवादी स्टॉप हानि पदों से बचते हुए स्टॉप हानि सुनिश्चित करने के लिए गतिशील रूप से समायोजित कर सकता है।

  3. विलियम्स एलीगेटर संकेतक एमएसीडी और बोलिंगर बैंड चैनल चौड़ाई की गणना करके आकलन करता है कि क्या कीमतें एक मजबूत अपट्रेंड या डाउनट्रेंड में हैं।

इन तीनों संकेतकों को मिलाकर, विभिन्न समय सीमाओं में संकेतों को क्रॉस वैलिडेट किया जाता है। इससे गलत आकलन की संभावना कम हो जाती है और एक अनुकूलित रणनीति तर्क का निर्माण होता है।

लाभ विश्लेषण

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

एकल संकेतक रणनीतियों की तुलना में, यह संयुक्त रणनीति अधिक सटीक और कुशल व्यापार संकेत प्रदान कर सकती है। साथ ही, तीन संकेतक कई समय सीमाओं के भीतर व्यापार निर्णय बनाने के लिए एक साथ काम करते हैं, जो एक बहुत ही वैज्ञानिक और उचित तर्क डिजाइन है जिससे सीखने लायक है।

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

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

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

अनुकूलन दिशाएँ

इस रणनीति का अनुकूलन क्षेत्र मुख्य रूप से दो पहलुओं पर केंद्रित हैः पैरामीटर ट्यूनिंग और स्टॉप लॉस रणनीतियों में सुधार। विशेष रूप से निम्नलिखित पहलुओं पर विचार किया जा सकता हैः

  1. अधिक वैज्ञानिक रूप से सूचक मापदंडों का चयन करें और मापदंड संयोजनों को अनुकूलित करें। एल्गोरिदम का उपयोग रिटर्न अधिकतम करने और जोखिम को कम करने जैसे लक्ष्यों के साथ इष्टतम मापदंडों को खोजने के लिए किया जा सकता है।

  2. स्टॉप लॉस की रणनीति में सुधार करें ताकि स्टॉप लॉस को सुनिश्चित करते हुए अनावश्यक स्टॉप लॉस को और कम किया जा सके, जिससे जीत की दर में सुधार हो सके। उदाहरण के लिए, स्टॉप लॉस संकेतों के रूप में अधिक संकेतक शामिल करें, या स्टॉप लॉस पदों की प्रगतिशील वापसी सेट करें।

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

  4. स्वचालित पैरामीटर अनुकूलन प्राप्त करने के लिए मशीन लर्निंग मॉडल पेश करने का प्रयास करें। या रणनीति मूल्यांकन और सुधार के लिए गहरी सुदृढीकरण सीखने प्रोग्रामिंग का उपयोग करें।

सारांश

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


/*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"}]
*/

//@version=4
strategy("QuarryLake", overlay=true)  ///Ultilized modified full kelly for this strategy = 36%

///Keltner channel///
nPeriod = input(title="Keltner Period", type=input.integer, defval=200, minval=1)
Mult = input(title="Keltner Mult", type=input.integer, defval=5, minval=1)
xPrice = ema(hlc3, nPeriod)
xMove = ema(high - low, nPeriod)
xMoveMult = xMove * Mult
xUpper = xPrice + xMoveMult
xLower = xPrice - xMoveMult

// plot(xPrice, color=red, title="KSmid")
p1 = plot(xUpper, color=color.white, title="KSup")
p2 = plot(xLower, color=color.white, title="KSdn")
fill(p1, p2, color=close > xUpper ? color.green : close < xLower ? color.red : color.white)

kclongcondition = close > xUpper
kcshortcondition = close < xLower
kccloselongcondition = crossunder(close, xUpper)
kccloseshortcondition = crossover(close, xLower)

///Volatility Stop///
length = input(title="Vstop length", type=input.integer, defval=3, minval=1)
mult1 = 1.5

atr_ = atr(length)
max1 = 0.0
min1 = 0.0
is_uptrend_prev = false
stop = 0.0
vstop_prev = 0.0
vstop1 = 0.0
is_uptrend = false
is_trend_changed = false
max_ = 0.0
min_ = 0.0
vstop = 0.0
max1 := max(nz(max_[1]), close)
min1 := min(nz(min_[1]), close)
is_uptrend_prev := nz(is_uptrend[1], true)
stop := is_uptrend_prev ? max1 - mult1 * atr_ : min1 + mult1 * atr_
vstop_prev := nz(vstop[1])
vstop1 := is_uptrend_prev ? max(vstop_prev, stop) : min(vstop_prev, stop)
is_uptrend := close - vstop1 >= 0
is_trend_changed := is_uptrend != is_uptrend_prev
max_ := is_trend_changed ? close : max1
min_ := is_trend_changed ? close : min1
vstop := is_trend_changed ? is_uptrend ? max_ - mult1 * atr_ : min_ + mult1 * atr_ : 
   vstop1

plot(vstop, color=is_uptrend ? color.green : color.red, style=plot.style_line, linewidth=1)

vstoplongcondition = close > vstop
vstoplongclosecondition = crossunder(close, vstop)
vstopshortcondition = close < vstop
vstopshortclosecondition = crossover(close, vstop)

///Waddah Attar Explosion///
sensitivity = input(150, title="Sensitivity")
fastLength = input(20, title="FastEMA Length")
slowLength = input(40, title="SlowEMA Length")
channelLength = input(20, title="BB Channel Length")
mult = input(2.0, title="BB Stdev Multiplier")
DEAD_ZONE = nz(rma(tr(true), 100)) * 3.7
calc_macd(source, fastLength, slowLength) =>
    fastMA = ema(source, fastLength)
    slowMA = ema(source, slowLength)
    fastMA - slowMA
calc_BBUpper(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis + dev
calc_BBLower(source, length, mult) =>
    basis = sma(source, length)
    dev = mult * stdev(source, length)
    basis - dev
t1 = (calc_macd(close, fastLength, slowLength) - 
   calc_macd(close[1], fastLength, slowLength)) * sensitivity
t2 = (calc_macd(close[2], fastLength, slowLength) - 
   calc_macd(close[3], fastLength, slowLength)) * sensitivity
e1 = calc_BBUpper(close, channelLength, mult) - 
   calc_BBLower(close, channelLength, mult)
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

waelongcondition = trendUp and trendUp > DEAD_ZONE and trendUp > e1
waeshortcondition = trendDown and trendDown > DEAD_ZONE and trendDown > e1

///Long Entry///
longcondition = kclongcondition and vstoplongcondition and waelongcondition
if longcondition
    strategy.entry("Long", strategy.long)

///Long exit///
closeconditionlong = kccloselongcondition or vstoplongclosecondition
if closeconditionlong
    strategy.close("Long")

///Short Entry///
shortcondition = kcshortcondition and vstopshortcondition and waeshortcondition
if shortcondition
    strategy.entry("Short", strategy.short)

///Short exit///
closeconditionshort = kccloseshortcondition or vstopshortclosecondition
if closeconditionshort
    strategy.close("Short")

///Free Hong Kong, the revolution of our time///


अधिक