संकेतकों की रणनीति संयोजन सफलता ट्रेंड ट्रैकिंग

लेखक:चाओझांग, दिनांकः 2024-02-20 11:38:22
टैगः

img

अवलोकन

इस रणनीति का नाम सूचक संयोजन सफलता ट्रेंड ट्रैकिंग है। यह बाजार की प्रवृत्ति दिशाओं की पहचान करने और प्रवृत्ति ट्रैकिंग संचालन करने के लिए विभिन्न संकेतकों को जोड़ती है। मुख्य घटकों में शामिल हैंः

  1. बाजार के मुख्य रुझान का आकलन करने के लिए वेव ट्रेंड सूचक का उपयोग करना
  2. आरएसआई और एमएफआई संकेतकों से कुछ झूठे संकेतों को फ़िल्टर करना
  3. ईएमए संकेतक के साथ विशिष्ट परिचालन दिशाओं का निर्धारण
  4. प्रवृत्ति का पालन सुनिश्चित करने के लिए अग्रिम ट्रैकिंग विधि के साथ बाजार में प्रवेश करना

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

रणनीति मुख्य रूप से प्रमुख प्रवृत्ति की दिशा और शक्ति का आकलन करती है और लंबी और छोटी द्विदिशात्मक ट्रेडिंग निर्धारित करती है। विशिष्ट संचालन सिद्धांत निम्नलिखित हैंः

दीर्घ संकेत:

  1. मूल्य 200-दिवसीय ईएमए से ऊपर है, जो एक बैल बाजार को दर्शाता है
  2. मूल्य लगभग 50-दिवसीय ईएमए के लिए वापस खींचता है
  3. तरंग प्रवृत्ति ऊपर की ओर रुख करने के लिए उलट जाता है और एक खरीद संकेत दिखाई देता है
  4. आरएसआई और एमएफआई दोनों ही अधिक खरीदे गए हैं
  5. लगातार 3 K-लाइनें 50 दिन के EMA को तोड़ती हैं, जो ऊपर की ओर एक सफलता का संकेत देती है।

संक्षिप्त संकेतः लंबे संकेत के विपरीत

लाभ लेना और हानि रोकना: दो विकल्प दिए गए हैंः सबसे कम मूल्य/उच्चतम मूल्य स्टॉप लॉस, एटीआर स्टॉप लॉस

लाभ विश्लेषण

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

  1. प्रमुख प्रवृत्ति को निर्धारित करने और झूठे ब्रेकआउट से बचने के लिए कई संकेतकों को एकीकृत करता है
  2. परिचालन दिशा निर्धारित करने के लिए ईएमए को अपनाता है, रुझानों का पालन करना आसान है
  3. ट्रेलिंग स्टॉप लॉस पद्धति निरंतर लाभ प्राप्त करती है
  4. बाजार को किसी भी दिशा में आगे बढ़ाते हुए, लंबी और छोटी दोनों दिशाओं में जाने में सक्षम

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

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

  1. संकेतकों से गलत संकेतों की संभावना
  2. स्टॉप लॉस बिंदु बहुत छोटा सेट, स्टॉप लॉस जोखिम बढ़ रहा है
  3. उच्च व्यापारिक आवृत्ति से व्यापारिक शुल्क से छिपे हुए नुकसान होते हैं

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

  1. गलत संकेतों को फ़िल्टर करने के लिए संकेतक मापदंडों को समायोजित करें
  2. स्टॉप लॉस बिंदु को उचित रूप से ढीला करें
  3. व्यापारिक आवृत्ति को कम करने के लिए संकेतक मापदंडों का अनुकूलन

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

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

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

मापदंडों के समायोजन और परीक्षण के माध्यम से, रणनीति ड्रॉडाउन और जोखिमों को कम करते हुए रिटर्न को अधिकतम कर सकती है।

निष्कर्ष

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


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Lowest Low/ Highest High & ATR Stop Loss/ Take Profit
//Optimized for the 30 minutes chart

strategy(title="TradePro's Trading Idea Cipher B+ Divergence EMA Pullback Strategy", shorttitle="WT MFI RSI EMA PB STRAT", overlay = true, pyramiding = 0, max_bars_back=5000, calc_on_order_fills = false, commission_type =  strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital=5000, currency=currency.USD)

// { Time Range
FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12)
FromDay=input(defval=1,title="FromDay",minval=1,maxval=31)
FromYear=input(defval=2020,title="FromYear",minval=2016)
ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12)
ToDay=input(defval=1,title="ToDay",minval=1,maxval=31)
ToYear=input(defval=9999,title="ToYear",minval=2017)
start=timestamp(FromYear,FromMonth,FromDay,00,00)
finish=timestamp(ToYear,ToMonth,ToDay,23,59)
window()=>true

// See if this bar's time happened on/after start date
afterStartDate = time >= start and time<=finish?true:false

zeroline = 0

// } Time Range

// { Wavetrend, RSI, MFI

// WaveTrend
cl = input(12, "Channel Length")
al = input(12, "Average Length")
overbought = input(53, title = 'WT Overbought Level 1', type = input.integer)
oversold = input(-53, title = 'WT Oversold Level 1', type = input.integer)
ap = hlc3 
esa = ema(ap, cl)
d = ema(abs(ap - esa), cl)
ci = (ap - esa) / (0.015 * d)
tci = ema(ci, al)
 
wt1 = tci
wt2 = sma(wt1,4)

wtOs = wt2 <= oversold
wtOb = wt2 >= overbought
wtX = cross(wt1, wt2)
wtUp = wt2 - wt1 <= 0
wtDown = wt2 - wt1 >= 0
buySignal = wtX and wtOs and wtUp
sellSignal = wtX and wtOb and wtDown

// RSI & MFI

rsiMFIPosY = input(2, title = 'MFI Area Y Pos', type = input.float)
rsiMFIperiod = input(80,title = 'MFI Period', type = input.integer)
rsiMFIMultiplier = input(200, title = 'MFI Area multiplier', type = input.float)
f_rsimfi(_period, _multiplier, _tf) => security(syminfo.tickerid, _tf, sma(((close - open) / (high - low)) * _multiplier, _period) - rsiMFIPosY)
rsiMFI = f_rsimfi(rsiMFIperiod, rsiMFIMultiplier, timeframe.period)

// } Wavetrend, RSI, MFI

// { EMA
emasrc = close
res = input(title="EMA Timeframe", type=input.resolution, defval="30")
len1 = input(title="EMA1 Length", type=input.integer, defval=200)
col1 = color.yellow

len2 = input(title="EMA2 Length", type=input.integer, defval=50)
col2 = color.blue

// Calculate EMA
ema1 = ema(emasrc, len1)
emaSmooth1 = security(syminfo.tickerid, res, ema1, barmerge.gaps_off, barmerge.lookahead_off)

ema2 = ema(emasrc, len2)
emaSmooth2 = security(syminfo.tickerid, res, ema2, barmerge.gaps_off, barmerge.lookahead_off)

// Draw EMA
plot(emaSmooth1, title="EMA1", linewidth=1, color=col1)
plot(emaSmooth2, title="EMA2", linewidth=1, color=col2)

// } EMA

// { Long Entry

enablelong = input(true, title="Enable long?")

//Long Signal
upcondition = close > emaSmooth1
wavetrendlong = wt1 and wt2 < zeroline
mfilong = rsiMFI > 0
emapblong1 = (close > emaSmooth2) and (close[1] < emaSmooth2[1])
emapblong2 = ((close[2] > emaSmooth2[2]) and (close[3] > emaSmooth2[3]) and (close[4] > emaSmooth2[4])) or ((close[5] > emaSmooth2[5]) and (close[6] > emaSmooth2[6]) and (close[7] > emaSmooth2[7])) or ((close[8] > emaSmooth2[8]) and (close[9] > emaSmooth2[9]) and (close[10] > emaSmooth2[10]))

longcondition = upcondition and wavetrendlong and buySignal and mfilong and emapblong1 and emapblong2

//strategy buy long
if (longcondition) and (afterStartDate) and strategy.opentrades < 1 and (enablelong == true)
    strategy.entry("long", strategy.long)

plotshape(longcondition, style=shape.arrowup,
                 location=location.abovebar, color=color.green)

// } Long Entry

// { Short Entry

enableshort = input(true, title="Enable short?")

//Short Signal
downcondition = close < emaSmooth1
wavetrendshort = wt1 and wt2 > zeroline
mfishort = rsiMFI < 0
emapbshort1 = (close < emaSmooth2) and (close[1] > emaSmooth2[1])
emapbshort2 = ((close[2] < emaSmooth2[2]) and (close[3] < emaSmooth2[3]) and (close[4] < emaSmooth2[4])) or ((close[5] < emaSmooth2[5]) and (close[6] < emaSmooth2[6]) and (close[7] < emaSmooth2[7])) or ((close[8] < emaSmooth2[8]) and (close[9] < emaSmooth2[9]) and (close[10] < emaSmooth2[10]))

shortcondition = downcondition and wavetrendshort and sellSignal and mfishort and emapbshort1 and emapbshort2

//strategy buy short
if (shortcondition) and (afterStartDate) and strategy.opentrades < 1 and (enableshort == true)
    strategy.entry("short", strategy.short)

plotshape(shortcondition, style=shape.arrowdown,
                 location=location.belowbar, color=color.red)

// } Short Entry

// { Exit Conditions
bought = strategy.position_size[1] < strategy.position_size
sold = strategy.position_size[1] > strategy.position_size
barsbought = barssince(bought)
barssold = barssince(sold)
slbuffer = input(title="SL Buffer", type=input.float, step=0.1, defval=0)

// } Exit Conditions

// { Lowest Low/ Highes High Exit Condition
enablelowhigh = input(false, title="Enable lowest low/ highest high exit?")

//Lowest Low LONG
profitfactorlong = input(title="ProfitfactorLong", type=input.float, step=0.1, defval=2)
loLen = input(title="Lowest Low Lookback", type=input.integer,
  defval=50, minval=2)
stop_level_long = lowest(low, loLen)[1]

if enablelowhigh == true and strategy.position_size>0
    profit_level_long = strategy.position_avg_price + ((strategy.position_avg_price - stop_level_long[barsbought])*profitfactorlong) + slbuffer
    strategy.exit(id="TP/ SL", stop=stop_level_long[barsbought] - slbuffer, limit=profit_level_long)

//Lowest Low SHORT
profitfactorshort = input(title="ProfitfactorShort", type=input.float, step=0.1, defval=2)
highLen = input(title="highest high lookback", type=input.integer,
  defval=50, minval=2)
stop_level_short = highest(high, highLen)[1]

if enablelowhigh == true and strategy.position_size<0
    profit_level_short = strategy.position_avg_price - ((stop_level_short[barssold] - strategy.position_avg_price)*profitfactorshort) - slbuffer
    strategy.exit(id="TP/ SL", stop=stop_level_short[barssold] + slbuffer, limit=profit_level_short)

// } Lowest Low/ Highes High Exit Condition

// { ATR Take Profit/ Stop Loss
enableatr = input(true, title="Enable ATR exit?")
atrprofitfactorlong = input(title="ATR Profitfactor Long", type=input.float, step=0.1, defval=6)
atrstopfactorlong = input(title="ATR Stopfactor Long", type=input.float, step=0.1, defval=5)
atrprofitfactorshort = input(title="ATR Profitfactor Short", type=input.float, step=0.1, defval=3)
atrstopfactorshort = input(title="ATR Stopfactor Short", type=input.float, step=0.1, defval=5)

//ATR
lengthATR = input(title="ATR Length", defval=11, minval=1)
atr = atr(lengthATR)

//LONG EXIT
if (afterStartDate) and ((enableatr == true) and (strategy.opentrades > 0))
    barsbought1 = barssince(bought)
    profit_level = strategy.position_avg_price + (atr*atrprofitfactorlong)
    stop_level = strategy.position_avg_price - (atr*atrstopfactorlong)
    strategy.exit("Take Profit/ Stop Loss", "long", stop=stop_level[barsbought1], limit=profit_level[barsbought1])

//SHORT EXIT
if (afterStartDate) and ((enableatr == true) and (strategy.opentrades > 0))
    barssold1 = barssince(sold)
    profit_level = strategy.position_avg_price - (atr*atrprofitfactorshort)
    stop_level = strategy.position_avg_price + (atr*atrstopfactorshort)
    strategy.exit("Take Profit/ Stop Loss", "short", stop=stop_level[barssold1], limit=profit_level[barssold1])

// } ATR Take Profit/ Stop Loss

अधिक