स्टॉक ट्रेडिंग के लिए विस्तारित चलती औसत सीमा के साथ मार्टिंगेल रणनीति

लेखक:चाओझांग, दिनांकः 2023-11-02 17:16:08
टैगः

img

अवलोकन

यह रणनीति चलती औसत के बीच अंतराल का विस्तार करके रुझानों की पहचान करती है। जब एक ऊपर की प्रवृत्ति की पहचान की जाती है, तो यह धीरे-धीरे प्रवृत्ति से लाभ कमाने के लिए लंबी स्थिति का निर्माण करती है। उसी समय, जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस बिंदु सेट किए जाते हैं।

रणनीति तर्क

  1. दो चलती औसत, EMA1 और EMA2 सेट करें, जिनकी अवधि थोड़ी भिन्न है, जैसे 55 और 89. इससे एमए के बीच व्यापक रेंज बनती है।

  2. जब कीमत एमए से ऊपर जाती है तो यह ऊपर की ओर बढ़ने का संकेत देती है।

  3. स्थिति लेने के बाद, जब कीमत बढ़ती रहती है तो पिरामिडिंग जारी रखें। इससे प्रवृत्ति से अधिक लाभ होता है।

  4. एमए के नीचे स्टॉप लॉस प्वाइंट सेट करें. जब कीमत एमए के नीचे गिरती है, तो स्टॉप लॉस के लिए बंद करें. स्टॉप लॉस प्रवेश मूल्य के साथ तैरता है.

  5. यह जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस सेट करते हुए, एक प्रवृत्ति से लाभ कमाने के लिए पिरामिडिंग पदों को अनुमति देता है।

लाभ विश्लेषण

  1. व्यापक एमए रेंज स्पष्ट रूप से रुझानों की पहचान करने में मदद करती है।

  2. पिरामिड बनाने से रुझानों से अधिक लाभ होता है।

  3. गतिशील स्टॉप लॉस नुकसान को सीमित करते हुए रुझानों से लाभ लेता है।

  4. दीर्घकालिक रुझान व्यापार के लिए उपयुक्त।

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

  1. प्रवृत्ति को सही ढंग से पहचानना होगा, अन्यथा घाटे में तेजी आएगी।

  2. मार्जिन कॉल जोखिम से बचने के लिए पिरामिडिंग को नियंत्रित किया जाना चाहिए।

  3. स्टॉप लॉस को उचित रूप से सेट किया जाना चाहिए, बहुत चौड़ा होने से नुकसान बढ़ सकता है, बहुत तंग होने से झटका लग सकता है।

  4. तरलता पर विचार किया जाना चाहिए, कम तरलता वाली संपत्ति उपयुक्त नहीं है।

अनुकूलन के सुझाव

  1. रुझानों की पुष्टि करने और झूठे ब्रेकआउट से बचने के लिए आरएसआई, केडी जैसे अधिक संकेतक जोड़ें।

  2. सर्वोत्तम संयोजनों को खोजने के लिए परिसंपत्ति विशेषताओं के आधार पर एमए अवधि का अनुकूलन करें।

  3. स्थिति आकार जोखिम को नियंत्रित करने के लिए इष्टतम पिरामिड मॉडल का शोध करें।

  4. लाभ को लॉक करने और निकासी को कम करने के लिए आंशिक लाभ लेने पर विचार करें।

  5. परिसंपत्ति की अस्थिरता के आधार पर स्टॉप लॉस सेट करें ताकि सुरक्षा को संतुलित किया जा सके और विप्सॉव से बचा जा सके।

सारांश

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


/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
// strategy(title='Super Simple Martingale Buying', shorttitle="Martingale v5",overlay=true, pyramiding = 10, initial_capital=1, calc_on_order_fills = true)


// Revision:        1
// Author:          @ToS_MavericK

// === INPUT SMA ===
EMA1  = input(55)
EMA2  = input(89)

Amount  = input(defval = 6, type = float, title = "Max open Orders", minval = 1, step = 1)
Multiplier  = input(defval = 2  , type = float, title = "Multiplier", minval = 1, step = 0.1)
BuyLvl  = input(defval = 1, type = float, title = "BuyLvl", minval = 0, step = 0.1)
Profit  = input(3)
DoubleUpLimit    = input(2)

// === INPUT BACKTEST RANGE ===
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromMonth   = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromYear    = input(defval = 2019, title = "From Year", minval = 2012)
ToDay   = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToYear  = input(defval = 2020, title = "To Year", minval = 2012)

RSIFilter = input(false)
minRSI  = input(defval = 35,  title = "RSI", minval = 1, step = 1)
lengthRSI = input(14, minval=1)
src = input(close, title="RSI Source")

StochRSIFilter = input(false)
lengthStoch = input(14, minval=1)
smoothK = input(3, minval=1)
smoothD = input(3, minval=1)

rsi = rsi(src, lengthRSI)
k = sma(stoch(rsi, rsi, rsi, lengthStoch), smoothK)
d = sma(k, smoothD)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

// === SERIES SETUP ===
vEMA1 = ema(close, EMA1)
vEMA2 = ema(close, EMA2)

buy  =  (rsi < minRSI or RSIFilter == false) and ((crossover(k,d) and k < 20) or StochRSIFilter == false) and ((close < vEMA1 * (1 - BuyLvl/100) and vEMA1 < vEMA2) or (close < vEMA2 * (1 - BuyLvl/100) and vEMA2 < vEMA1))

BuyPrice = strategy.position_avg_price * (1 - DoubleUpLimit/50)
SellPrice = strategy.position_avg_price * (1 + Profit/(100*strategy.opentrades))

// Exit first, due to the limit orders, which can be hit on the same bar
strategy.exit("EMA1", limit = SellPrice, when = window() and strategy.opentrades > 0)
strategy.close("EMA1",when = time > finish) // close positions at the end of the specified time period

// Normal entry
strategy.entry("EMA1", strategy.long,qty = strategy.equity/ (close * pow(2,Amount - 1)), when = window() and strategy.opentrades == 0 and buy)
// Martingale
strategy.entry("EMA1", strategy.long,qty = strategy.position_size, limit = strategy.position_avg_price * (1 - DoubleUpLimit/100), when = window() and strategy.opentrades == 1)
strategy.entry("EMA1", strategy.long,qty = strategy.position_size, limit = BuyPrice, when = window() and strategy.opentrades > 1 and strategy.opentrades < Amount)

plot(vEMA1, title = 'EMA1', color = orange, linewidth = 2, style = line)
plot(vEMA2, title = 'EMA2', color = yellow, linewidth = 2, style = line)
plot(BuyPrice[1], title = 'BuyPrice', color = red, linewidth = 2, style = line)
plot(SellPrice[1], title = 'SellPrice', color = green, linewidth = 2, style = line)

अधिक