दोहरे संकेतक संयोजन के साथ पागल इंट्राडे स्केलिंग रणनीति


निर्माण तिथि: 2023-12-01 14:47:57 अंत में संशोधित करें: 2023-12-01 14:47:57
कॉपी: 0 क्लिक्स: 519
1
ध्यान केंद्रित करना
1212
समर्थक

दोहरे संकेतक संयोजन के साथ पागल इंट्राडे स्केलिंग रणनीति

अवलोकन

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

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

टीएमओ सूचक मूल्य की गति को दर्शाता है। यह एक आघात सूचक प्रकार है, जो कीमतों के विचलन पर एक व्यापारिक संकेत जारी कर सकता है। एएमए सूचक एक चिकनी चलती औसत सूचक है। यह मूल्य में उतार-चढ़ाव की एक सीमा को दर्शाता है, जब कीमतें ऊपर और नीचे की ओर होती हैं तो ओवरबॉट और ओवरसोल की घटना को दर्शाता है।

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

  1. टीएमओ सूचकांक में कई सिग्नल दिखाई देते हैं, यानी कीमतें ऊपर की ओर और एएमए सूचकांक में कई अधिकतम मूल्य दिखाई देते हैं
  2. टीएमओ सूचक में कम कीमत का संकेत है, यानी कीमत नीचे की ओर है और एएमए सूचक में कम कीमत का संकेत है
  3. और यह भी कहा गया है कि हाल ही में 3 K लाइनों की संख्या बढ़ रही है।

इस प्रकार यह एक एकल सूचक के कारण झूठे संकेतों की समस्या को हल करता है। स्टॉप लॉस विधि ने हाल ही में N रूट K लाइन के भीतर उच्चतम और निम्नतम मूल्य का चयन किया है ताकि जोखिम को बेहतर तरीके से नियंत्रित किया जा सके।

रणनीतिक लाभ

इस रणनीति के कुछ फायदे हैंः

  1. संकेतक का संयोजन, संकेत की सटीकता में सुधार। टीएमओ संकेतक और एएमए संकेतक एक-दूसरे को सत्यापित करते हैं, जिससे झूठे संकेतों को कम किया जा सकता है, जिससे संकेत की सटीकता में सुधार होता है।

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

  3. K-लाइन स्टॉप जोखिम नियंत्रण विधि. K-लाइन की नवीनतम उच्चतम और निम्नतम कीमतों को स्टॉप के रूप में उपयोग करके, प्रत्येक आइटम के जोखिम को बेहतर तरीके से नियंत्रित किया जा सकता है। साथ ही, सूचक की पुनः गणना के कारण उत्पन्न होने वाले पिछड़े जोखिम को भी नहीं बदला जाएगा।

  4. सरल और प्रभावी व्यापारिक तर्क इस रणनीति में केवल दो संकेतकों का उपयोग किया गया है ताकि एक पूर्ण स्केलिंग रणनीति को पूरा किया जा सके, यह जटिल नहीं है, तर्क सरल और स्पष्ट है और उदाहरण के परिणामों के अनुसार, रणनीति ने अच्छी कमाई की

रणनीतिक जोखिम

इस रणनीति में मुख्य रूप से निम्नलिखित जोखिम हैं:

  1. स्केलिंग रणनीति के रूप में, यह लंबे समय तक नहीं रहता है, यदि व्यापार की लागत अधिक है, तो यह मुनाफे पर कुछ प्रभाव डाल सकता है।

  2. K लाइन स्टॉप बहुत अधिक जोखिम भरा है। स्टॉप के रूप में हाल के उच्चतम मूल्य के सबसे कम मूल्य का उपयोग करना अधिक आक्रामक हो सकता है, जो बाजार के शोर को पूरी तरह से फ़िल्टर नहीं कर सकता है, जिससे स्टॉप के ट्रिगर होने की संभावना बढ़ जाती है।

  3. पैरामीटर अनुकूलन की कठिनाई का जोखिम. रणनीति में कई पैरामीटर शामिल हैं, जो सबसे अच्छा पैरामीटर संयोजन खोजने के लिए मुश्किल हो सकता है।

अनुकूलन दिशा

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

  1. अधिक फ़िल्टरिंग मापदंडों को जोड़ना, जैसे कि बाजार में लेनदेन की मात्रा, कुछ झूठे संकेतों को फ़िल्टर कर सकती है, जिससे संकेत की गुणवत्ता में और सुधार हो सकता है।

  2. स्टॉप मोड पर फ़िल्टरिंग शर्तों को जोड़ने की कोशिश करें, ताकि स्टॉप को बहुत कट्टरपंथी न बनाया जा सके। उदाहरण के लिए, स्टॉप को ट्रिगर करने से पहले कुछ रूट K लाइनों की पुष्टि की प्रतीक्षा करें, और फिर स्टॉप करें।

  3. पैरामीटर का अनुकूलन करें, सूचक पैरामीटर का सबसे अच्छा संयोजन ढूंढें। यह अधिक शोर को फ़िल्टर कर सकता है, रणनीति जीतने की दर को बढ़ा सकता है। मुख्य रूप से टीएमओ सूचक लंबाई, एएमए सूचक लंबाई और गुणांक जैसे पैरामीटर का अनुकूलन करें।

  4. विभिन्न किस्मों और समय अवधि पर रिवर्स और फिक्स्ड डिस्क का प्रयास करें और ट्रेडिंग किस्मों और अवधि को ढूंढें जो रणनीति के तर्क से सबसे अधिक मेल खाते हैं।

संक्षेप

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

रणनीति स्रोत कोड
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 10m
basePeriod: 1m
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/
// © Kaspricci

//@version=5
strategy("TradeIQ - Crazy Scalping Trading Strategy [Kaspricci]", overlay=true, initial_capital = 1000, currency = currency.USD)

headlineTMO = "TMO Settings"

tmoLength   = input.int(7, "TMO Length", minval = 1, group = headlineTMO)
tmoSource   = input.source(close, "TMO Source", group = headlineTMO)

// calculate values
osc         = ta.mom(ta.sma(ta.sma(tmoSource, tmoLength), tmoLength), tmoLength)

// determine color of historgram
oscColor    = osc > osc[1] and osc > 0 ? #00c42b : osc < osc[1] and osc > 0 ? #4ee567 : osc < osc[1] and osc < 0 ? #ff441f : osc > osc[1] and osc < 0 ? #c03920 : na

// plot histogram
//plot(osc, "OSC", oscColor, linewidth = 3, style = plot.style_histogram)

// conditon to find highs and lows
up          = ta.highest(tmoSource, tmoLength)
dn          = ta.lowest(tmoSource, tmoLength)

// define conditions to be used for finding divergence
phosc = ta.crossunder(ta.change(osc), 0)
plosc = ta.crossover (ta.change(osc), 0)

// test for divergence
bear = osc > 0 and phosc and ta.valuewhen(phosc,osc,0) < ta.valuewhen(phosc,osc,1) and ta.valuewhen(phosc,up,0) > ta.valuewhen(phosc,up,1) ? 1 : 0
bull = osc < 0 and plosc and ta.valuewhen(plosc,osc,0) > ta.valuewhen(plosc,osc,1) and ta.valuewhen(plosc,dn,0) < ta.valuewhen(plosc,dn,1) ? 1 : 0

// -------------------------------------------------------------------------------------------------------------

headlineAMA = "AMA Settings"

amaSource   = input.source(defval = close, title = "AMA Source", group = headlineAMA)
amaLength   = input.int(defval = 50, title = "AMA Length", minval = 2, group = headlineAMA)


amaMulti    = input.float(defval = 2.0, title = "Factor", minval = 1)

amaShowCd   = input(defval = true , title = "As Smoothed Candles")
amaShowEx   = input(defval = true,   title = "Show Alternating Extremities")

amaAlpha    = input.float(1.0, "Lag",       minval=0, step=.1, tooltip='Control the lag of the moving average (higher = more lag)', group= 'AMA Kernel Parameters')
amaBeta     = input.float(0.5, "Overshoot", minval=0, step=.1, tooltip='Control the overshoot amplitude of the moving average (higher = overshoots with an higher amplitude)', group='AMA Kernel Parameters')

// -------------------------------------------------------------------------------------------------------------

headlineSL = "Stop Loss Settings"

slLength    = input.int(defval = 10, title = "SL Period", minval = 1, group = headlineSL, tooltip = "Number of bars for swing high / low")

// -------------------------------------------------------------------------------------------------------------

var b       = array.new_float(0)
var float x = na

if barstate.isfirst
    for i = 0 to amaLength - 1
        x := i / (amaLength - 1)
        w = math.sin(2 * 3.14159 * math.pow(x, amaAlpha)) * (1 - math.pow(x, amaBeta))
        array.push(b, w)

// local function to filter the source
filter(series float x) =>
    sum = 0.

    for i = 0 to amaLength - 1
        sum := sum + x[i] * array.get(b,i)
    
    sum / array.sum(b)

// apply filter function on source series

srcFiltered = filter(amaSource)

deviation   = ta.sma(math.abs(amaSource - srcFiltered), amaLength) * amaMulti

upper       = srcFiltered + deviation
lower       = srcFiltered - deviation

//----
crossHigh   = ta.cross(high, upper)
crossLow    = ta.cross(low, lower)

var os      = 0
os          := crossHigh ? 1 : crossLow ? 0 : os[1]

ext         = os * upper + (1 - os) * lower

//----
os_css = ta.rsi(srcFiltered, amaLength) / 100

extColor    = os == 1 ? #30FF85 : #ff1100

plot(srcFiltered, "MA", amaShowCd ? na : color.black, 2, editable = false)
plot(amaShowEx ? ext : na, "Extremities", ta.change(os) ? na : extColor, 2, editable=false)

// handle smoothed candles
var float h = na
var float l = na
var float c = na
var float body = na

if amaShowCd
    h := filter(high)
    l := filter(low)
    c := filter(amaSource)
    body := math.abs(math.avg(c[1], c[2]) - c)

ohlc_os = ta.rsi(c, amaLength) / 100

plotcandle(math.avg(c[1], c[2]), h, l, c, "Smooth Candles", #434651, bordercolor = na, editable = false, display = amaShowCd ? display.all : display.none)

// -------------------------------------------------------------------------------------------------------------

plotshape(bull ? ext : na, "Bullish Circle", shape.circle,    location.absolute, color = #00c42b, size=size.tiny)
plotshape(bear ? ext : na, "Bearish Circle", shape.circle,    location.absolute, color = #ff441f, size=size.tiny)
plotshape(bull ? ext : na, "Bullish Label",  shape.labeldown, location.absolute, color = #00c42b, text="Buy", textcolor=color.white, size=size.tiny)
plotshape(bear ? ext : na, "Bearish Label",  shape.labelup,   location.absolute, color = #ff441f, text="Sell", textcolor=color.white, size=size.tiny)

// -------------------------------------------------------------------------------------------------------------

candleSizeIncreasing = body[2] < body[1] and body[1] < body[0]

longEntryCond   = os == 1 and bull
shortEntryCond  = os == 0 and bear

longEntry       = strategy.opentrades == 0 and candleSizeIncreasing and not candleSizeIncreasing[1] and ta.barssince(longEntryCond)  < ta.barssince(os == 0) and ta.barssince(longEntryCond) < ta.barssince(bear)
shortEntry      = strategy.opentrades == 0 and candleSizeIncreasing and not candleSizeIncreasing[1] and ta.barssince(shortEntryCond) < ta.barssince(os == 1) and ta.barssince(shortEntryCond) < ta.barssince(bull)

longExit        = strategy.opentrades > 0 and strategy.position_size > 0 and (bear or os == 0)
shortExit       = strategy.opentrades > 0 and strategy.position_size < 0 and (bull or os == 1)

recentSwingHigh = ta.highest(high, slLength) // highest high of last candles
recentSwingLow  = ta.lowest(low,   slLength) // lowest low of recent candles

bgcolor(longEntry  ? color.rgb(76, 175, 79, 90) : na)
bgcolor(shortEntry ? color.rgb(255, 82, 82, 90) : na)

slLong          = (close - recentSwingLow) / syminfo.mintick  // stop loss in ticks
slShort         = (recentSwingHigh - close) / syminfo.mintick // stop loss in ticks

newOrderID         = str.tostring(strategy.closedtrades + strategy.opentrades + 1)
curOrderID         = str.tostring(strategy.closedtrades + strategy.opentrades)

alertMessageForEntry = "Trade {0} - New {1} Entry at price: {2} with stop loss at: {3}"

if (longEntry)
    alertMessage = str.format(alertMessageForEntry, newOrderID, "Long", close, recentSwingLow)
    
    strategy.entry(newOrderID, strategy.long, alert_message = alertMessage)
    strategy.exit("Stop Loss Long", newOrderID, loss = slLong, alert_message = "Stop Loss for Trade " + newOrderID)

if(longExit)
    strategy.close(curOrderID, alert_message = "Close Trade " + curOrderID)

if (shortEntry)
    alertMessage = str.format(alertMessageForEntry, newOrderID, "Short", close, recentSwingLow)

    strategy.entry(newOrderID, strategy.short, alert_message = alertMessage)
    strategy.exit("Stop Loss Short", newOrderID, loss = slShort, alert_message = "Stop Loss for Trade " + newOrderID)

if(shortExit)
    strategy.close(curOrderID, alert_message = "Close Trade " + curOrderID)