एकाधिक संकेतकों पर आधारित मात्रात्मक व्यापारिक रणनीति

लेखक:चाओझांग, दिनांकः 2023-10-25 18:06:44
टैगः

img

अवलोकन

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

रणनीति तर्क

रणनीति मुख्य रूप से मूल्य अस्थिरता का न्याय करने के लिए बोलिंगर बैंड का उपयोग करती है। संकीर्ण बैंड अस्थिरता को कम करने का प्रतिनिधित्व करते हैं जो ब्रेकआउट का कारण बन सकता है। आरएसआई का उपयोग ओवरबॉट और ओवरसोल्ड स्थितियों की पहचान करने के लिए किया जाता है। आरएसआई 70 से ऊपर ओवरबॉट है जबकि 30 से नीचे ओवरसोल्ड है। जब बैंड संकीर्ण होते हैं और आरएसआई अपनी सीमाओं के करीब होता है, तो रिवर्स ट्रेडिंग पर विचार किया जाता है।

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

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

लाभ विश्लेषण

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

  1. संकेतकों का संयोजन सटीकता और मजबूती में सुधार करता है। एकल संकेतक झूठे संकेतों के लिए प्रवण है जबकि कई संकेतक संकेतों को सत्यापित करते हैं और खराब ट्रेडों से बचते हैं।

  2. ट्रेडिंग में ट्रेडिंग के ट्रेंड और रेंज दोनों को ध्यान में रखा जाता है, जो विभिन्न बाजार स्थितियों के अनुकूल होते हैं। ट्रेडिंग के ट्रेंड में बड़े कदम होते हैं। ट्रेडिंग के रेंज में छोटे लाभ होते हैं।

  3. लॉन्ग और शॉर्ट्स दिशागत जोखिम को कम करते हैं और चरम चाल से बचते हैं।

  4. स्टॉप लॉस और ले लो लाभ लाभ में लॉक और व्यापार गलत जाने पर नुकसान को सीमित करें।

  5. पैरामीटर अनुकूलन से बदलते बाजारों के अनुकूल रणनीति में निरंतर सुधार होता है।

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

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

  1. अधिक संकेतक जटिलता को बढ़ाते हैं। अनुचित सेटिंग्स प्रदर्शन को कम कर सकती हैं। व्यापक परीक्षण और अनुकूलन की आवश्यकता होती है।

  2. तकनीकी संकेतों पर अत्यधिक निर्भरता और मौलिक संकेतों को नजरअंदाज करने से गलत संकेत हो सकते हैं। संकेतकों के झूठे संकेतों को सावधानी से संभालना चाहिए।

  3. संकेतों के सामने आने पर बाजार पहले ही आगे बढ़ चुके हो सकते हैं, जिससे जोखिम का सामना करना पड़ सकता है।

  4. द्विदिश व्यापार की आवृत्ति बढ़ जाती है, लागत और दबाव बढ़ जाता है।

  5. वक्र फिट होने के जोखिम मौजूद हैं। विविध बाजारों में स्थायित्व का परीक्षण किया जाना चाहिए।

जोखिमों का प्रबंधन सख्त स्टॉप लॉस, विवेकपूर्ण स्थिति आकार, उचित लाभप्रदता आदि के माध्यम से किया जा सकता है। कुल मिलाकर, रणनीति का व्यावहारिक मूल्य मजबूत है।

बढ़ोतरी के अवसर

रणनीति को अनुकूलित करने के कुछ तरीकेः

  1. चरणबद्ध, यादृच्छिक या आनुवंशिक एल्गोरिदम का उपयोग करके इष्टतम मान खोजने के लिए विभिन्न पैरामीटर सेटों का परीक्षण करें।

  2. एक मजबूत सूचक समूह बनाने के लिए केडीजे, विलियम्स जैसे अधिक संकेतक जोड़ें।

  3. जोखिम को गतिशील रूप से प्रबंधित करने के लिए स्थिति आकार मॉडल का अनुकूलन करें।

  4. मूल्य प्रवृत्तियों और आंदोलनों की भविष्यवाणी करने के लिए मशीन लर्निंग मॉडल को शामिल करें।

  5. अनुकूलन क्षमता में सुधार के लिए विभिन्न उत्पादों, समय सीमाओं और बाजारों में परीक्षण।

  6. प्रवेश और निकास समय को परिष्कृत करें ताकि रुझानों को जल्दी से पकड़ सकें और उलटा होने से पहले बाहर निकल सकें।

  7. लाभ लेने, लाभ में ताला लगाने और हानि को सीमित करने के लिए ट्रेलिंग स्टॉप का उपयोग करें।

  8. तकनीकी संकेतों को फ़िल्टर करने के लिए मौलिक कारकों और बाजार संरचना विश्लेषण जोड़ें।

सारांश

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


/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
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/
// © The_Bigger_Bull
//@version=5
strategy("Best TradingView Strategy", overlay=true, margin_long=0, margin_short=0)
//Bollinger Bands
source1 = close
length1 = input.int(15, minval=1)
mult1 = input.float(2.0, minval=0.001, maxval=50)
basis1 = ta.sma(source1, length1)
dev1 = mult1 * ta.stdev(source1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
//buyEntry = ta.crossover(source1, lower1)
//sellEntry = ta.crossunder(source1, upper1)

//RSI
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

//plot(rsi, "RSI", color=#7E57C2)
//plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")

//ADX

adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up1 = ta.change(high)
	down1 = -ta.change(low)
	plusDM = na(up1) ? na : (up1 > down1 and up1 > 0 ? up1 : 0)
	minusDM = na(down1) ? na : (down1 > up1 and down1 > 0 ? down1 : 0)
	truerange = ta.rma(ta.tr, len)
	plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
	minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)




out = ta.sma(close, 14)

sma1=ta.sma(close,55)

ema200=ta.ema(close,200)



longCondition = (out>sma1) and ta.crossover(source1, lower1)

if (longCondition )
    strategy.entry("long", strategy.long)
    
shortCondition = (out<sma1) and ta.crossunder(source1, lower1)

if (shortCondition )
    strategy.entry("short", strategy.short)
    
    
stopl=strategy.position_avg_price-50
tptgt=strategy.position_avg_price+100
stopshort=strategy.position_avg_price+50
tptgtshort=strategy.position_avg_price-100

strategy.exit("longclose","long",trail_offset=5,trail_points=45,when=ta.crossover(sma1,out))
strategy.exit("shortclose","short",trail_offset=5,trail_points=45,when=ta.crossover(out,sma1))

    
//if strategy.position_avg_price<0
    
    
plot(sma1 , color=color.blue)
plot(out, color=color.green)
//plot(ema200,color=color.red)


    
    


अधिक