रणनीति के अनुसार दोहरी चलती औसत प्रवृत्ति

लेखक:चाओझांग, दिनांक: 2023-09-24 13:14:08
टैगः

अवलोकन

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

रणनीति तर्क

  1. रुझान निर्धारित करने के लिए लंबी अवधि के आरएमए और छोटी अवधि के ईएमए का उपयोग करें। लंबी आरएमए के नीचे लघु ईएमए क्रॉसिंग डाउनट्रेंड संकेत देती है। ऊपर क्रॉसिंग अपट्रेंड संकेत देती है।

  2. जब कीमत कुछ अवधियों में हाल के उच्चतम उच्च से ऊपर टूट जाती है, तो उच्चतम उच्च को स्टॉप लॉस के रूप में ट्रेल करें। जब कीमत हाल के निम्नतम निम्न से नीचे टूट जाती है, तो निम्नतम निम्न को स्टॉप लॉस के रूप में ट्रेल करें।

  3. आरएमए के चारों ओर एक नो-ट्रेड ज़ोन सेट करें. Whipsaws से बचने के लिए मूल्य क्षेत्र के भीतर होने पर पद न खोलें. ज़ोन रेंज आरएमए मूल्य के निश्चित प्रतिशत पर आधारित है.

  4. प्रवेश के पश्चात लाभ प्रतिशत पर बाहर निकलने की स्थिति के लिए लाभ लेने की कीमत निर्धारित करें।

लाभ

  1. दोहरी चलती औसत क्रॉसओवर ट्रेंड दिशा को विश्वसनीय रूप से निर्धारित करती है।

  2. ट्रेंड के साथ स्टॉप लॉस चलती है।

  3. नो-ट्रेड ज़ोन झूठे ब्रेकआउट सिग्नल को फ़िल्टर करता है।

  4. लाभ लेने से रणनीति सक्रिय रूप से लाभदायक ट्रेडों को बंद करने की अनुमति देती है।

जोखिम

  1. चलती औसत क्रॉसओवर में देरी से नुकसान बढ़ सकता है।

  2. स्टॉप लॉस कीमत के बहुत करीब होने से शोर से रोक दिया जा सकता है।

  3. बहुत बड़ा नो ट्रेड जोन अवसरों को खो सकता है।

  4. समय पर बाहर न निकलने से और अधिक नुकसान हो सकता है।

संभावित समाधान:

  1. देरी को कम करने के लिए चलती औसत मापदंडों का अनुकूलन करें।

  2. अतिसंवेदनशीलता को रोकने के लिए स्टॉप लॉस को थोड़ा बढ़ाएं।

  3. ट्रेडों की कमी से बचने के लिए नो-ट्रेड जोन रेंज को समायोजित करने का परीक्षण करें।

  4. अधिकतम हानि को सीमित करने के लिए अन्य स्टॉप लॉस तंत्र जोड़ें।

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

  1. बेहतर फिट के लिए अन्य चलती औसत संयोजनों का परीक्षण करें।

  2. स्थिरता में सुधार के लिए स्प्रेड, एमएसीडी आदि जोड़ें।

  3. मापदंडों को बुद्धिमानी से अनुकूलित करने के लिए मशीन लर्निंग का उपयोग करें।

  4. विपरीत रुझानों से बचने के लिए रुझान की ताकत को शामिल करें।

  5. उच्च जीत दर के लिए धन प्रबंधन का अनुकूलन करें।

सारांश

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


/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-12 00:00:00
period: 3h
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/
// © PatrickGwynBuckley

//@version=5
//var initialCapital = strategy.equity

strategy("PB Trend Scalper", "PB Trend Scalper", overlay = true)
shortma = input.int(55, title="quick ma's")
longma = input.int(100, title="long ma's")
ema55h = ta.ema(high, shortma)
ema55l = ta.ema(low, shortma)
ema200h = ta.rma(high, longma)
ema200l = ta.rma(low, longma)
stock = ta.stoch(close, high, low, 14)

lev = input.int(3, title="leverage")
hhVal = input.int(170, title="Highest high period")
llVal = input.int(170, title="Lowest low period")

hh = ta.highest(high, hhVal)
ll = ta.lowest(low, llVal)
//plot(stock)

plot(hh, color=color.new(color.green, 50))
plot(ll, color=color.new(color.red, 50))
var float downtrade = 0
p = input.float(3.0, title="no trade zone")
l = 3
emadistlong = ema200h + ((ema200h/100)*p)
emadistshort = ema200l - ((ema200h/100)*p)

plot(ema55h)
plot(ema55l)
ntl = plot(emadistlong, color=color.new(color.red, 10))
nts = plot(emadistshort, color=color.new(color.red, 10))
fill(ntl, nts, color=color.new(color.red, 90))

//position size

EntryPrice = close
//positionValue = initialCapital
positionSize = (strategy.equity*lev) / EntryPrice

//plot(strategy.equity)


//standard short

if ema55h < ema200l and close[2] < ema55l and close[1] > ema55l and high[1] < ema55h and close < ema55h and ema55h < emadistshort and strategy.opentrades == 0// and stock > 85 
    strategy.entry("short", strategy.short, qty=positionSize, comment="short")
    downtrade := 1

//reset count    
if (ta.crossunder(ema55h, ema200l)) and downtrade == 1
    downtrade := 0

//standard long    
if ema55l > ema200h and close[2] > ema55h and close[1] < ema55h and low[1] > ema55l and close > ema55l and ema55l > emadistlong and strategy.opentrades <= 1// and stock < 15 
    strategy.entry("long", strategy.long, qty=positionSize, comment="long")
    downtrade := 0

//RESET COUNT ON MA CROSS
if (ta.crossover(ema55l, ema200h)) and downtrade == 0
    downtrade := 1
    
longclose2 = low < ll[1] or low < emadistshort //close < open and open<open[1] and open[2] < open[3] and open[3] < emadistshort//close < ta.lowest(low, 20)//
shortclose2 = high > hh[1] or high>emadistlong//close > open and open>open[1] and open[2]>open[3] and open[3] > emadistlong//high > emadistlong//close > ta.highest(high, 20)//

sl = 3.5
tp = input.float(6.9, title="take profit %")
tp2 = 10


strategy.exit("long exit", "long", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl)))
strategy.close("long", when = longclose2, comment = "long exit")
//strategy.close("long", when = (downtrade == 1), comment = "long exit")
//strategy.exit("long exit", "long2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl)))
//strategy.close ("long2", when = longclose2, comment = "long exit")
//strategy.close("long", when = (downtrade == 1), comment = "long exit")

strategy.exit("short exit", "short", profit = (strategy.position_avg_price*(tp)))//, loss = (strategy.position_avg_price*(sl)))//, loss = 300)
strategy.close("short", when = shortclose2, comment = "short exit")
//strategy.close("short", when = (downtrade == 0), comment = "short exit")
//strategy.exit("short exit", "short2", profit = (strategy.position_avg_price*(tp2)))//, loss = (strategy.position_avg_price*(sl)))
//strategy.close ("short2", when = shortclose2, comment = "short exit")
//strategy.close("short2", when = (downtrade == 0), comment = "short exit")

//if (strategy.exit("long exit", "long"))
    //downtrade := 1
//else 
   // downtrade := 0

अधिक