RSI اور گھومنے والی اوسط کراس اوور ملٹی ٹائم فریم ٹریڈنگ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-10-16 16:31:28
ٹیگز:

img

جائزہ

اس حکمت عملی کا بنیادی خیال قلیل مدتی تجارت کرتے وقت درمیانی سے طویل مدتی رجحانات کو حاصل کرنے کے لئے ، رشتہ دار طاقت انڈیکس (آر ایس آئی) اور مختلف ٹائم فریموں کے چلتے ہوئے اوسط دونوں کا استعمال کرکے رجحان الٹ پوائنٹس کی نشاندہی کرنا ہے۔ یہ حکمت عملی تجارتی کامیابی کی شرح کو بہتر بنانے کی کوشش میں مختلف تجارتی سگنلز کو جوڑتی ہے۔

حکمت عملی منطق

  1. RSI اشارے، تیز EMA اور سست WMA چلتی اوسط کا حساب لگائیں.
  2. جب آر ایس آئی لائن ڈبلیو ایم اے لائن کو عبور کرتی ہے تو خرید / فروخت کے سگنل پیدا ہوتے ہیں۔
  3. جب تیز EMA سست WMA پر عبور کرتا ہے تو خرید / فروخت سگنل پیدا ہوتے ہیں۔
  4. جب RSI اور EMA دونوں WMA پر بیک وقت عبور کرتے ہیں تو ، مضبوط خرید / فروخت سگنل پیدا ہوتے ہیں۔
  5. اس کے علاوہ، جب قیمت معاون حرکت پذیر اوسط لائنوں پر عبور کرتی ہے، تو یہ مرکزی سگنل کو مضبوط کرتی ہے۔
  6. سٹاپ نقصان اور منافع لینے کے پیرامیٹرز مقرر کریں.

یہ حکمت عملی مختلف ادوار کے رجحانات کی نشاندہی کرنے کے لئے متعدد تکنیکی اشارے اور مختلف ٹائم فریموں کے چلتے ہوئے اوسط سے بریک آؤٹ سگنلز کو جوڑتی ہے ، اس طرح وشوسنییتا کو بہتر بناتی ہے۔ آر ایس آئی overbought / oversold سطحوں کی نشاندہی کرتا ہے ، ای ایم اے قلیل مدتی رجحان کا تعین کرتا ہے ، ڈبلیو ایم اے درمیانی مدتی رجحان کا تعین کرتا ہے ، جبکہ معاون چلتے ہوئے اوسط کے ساتھ قیمت کراس اوور رجحان کی تصدیق کرتا ہے۔ متعدد سگنلز کا امتزاج حکمت عملی کی کارکردگی کو بہتر بناتا ہے۔

فوائد کا تجزیہ

  • RSI کی واپسی کی خصوصیت کا استعمال overbought / oversold زون میں واپسی کے مواقع کو پکڑنے کے لئے.
  • معاون حرکت پذیر اوسط غلط بریکآؤٹس سے بچنے کے لئے رجحان فلٹر کے طور پر کام کرتے ہیں۔
  • ملٹی ٹائم فریم کا امتزاج قلیل مدتی مواقع کو پکڑتے ہوئے طویل مدتی رجحانات کو ٹریک کرنے کے قابل بناتا ہے۔
  • متعدد اشارے سگنل کو یکجا کرنے سے تجارت کی کامیابی کی شرح میں اضافہ ہوسکتا ہے۔
  • سٹاپ نقصان اور منافع لینے سے خطرات کا فعال انتظام ممکن ہوتا ہے۔

خطرے کا تجزیہ

  • آر ایس آئی غلط سگنل پیدا کر سکتا ہے، چلتی اوسط کے ساتھ فلٹرنگ کی ضرورت ہے.
  • اہم رجحانات کے تحت ریبوئنس معکوس تجارتی سگنل کو متحرک کر سکتی ہے، احتیاط کی ضرورت ہے۔
  • پیرامیٹر کی اصلاح کی ضرورت ہوتی ہے جیسے آر ایس آئی کی مدت، چلتی اوسط مدت وغیرہ
  • سٹاپ نقصان کی جگہ پر احتیاط کی ضرورت ہے تاکہ قبل از وقت روکنے سے بچنے کے لئے.

خطرات کو پیرامیٹر کی اصلاح، سخت سٹاپ نقصان کی حکمت عملی، اور اہم رجحانات وغیرہ پر غور کے ذریعے کم کیا جا سکتا ہے.

اصلاح کی ہدایات

  • زیادہ سے زیادہ مدت کی لمبائی تلاش کرنے کے لئے RSI پیرامیٹرز کو بہتر بنائیں.
  • مختلف حرکت پذیر اوسط کے مجموعے کی جانچ کریں.
  • متحرک سٹاپ نقصان / منافع لینے کے لئے ATR جیسے اتار چڑھاؤ انڈیکس کو شامل کریں.
  • پوزیشن سائزنگ اور رسک مینجمنٹ ماڈیولز شامل کریں۔
  • پیرامیٹر کی اصلاح اور سگنل کے معیار کا اندازہ لگانے کے لئے مشین لرننگ کا استعمال کریں۔

خلاصہ

یہ حکمت عملی رجحان کی پیروی اور انتہائی الٹ ٹریڈنگ کے خیالات کو مربوط کرتی ہے ، جس کا مقصد تجارتی کامیابی کی شرح کو بہتر بنانا ہے۔ کلیدی خطرہ پر قابو پانا ، پیرامیٹرز کو بہتر بنانا ، اور بڑے رجحانات کے اثرات پر غور کرنا ہے۔ مجموعی طور پر یہ مضبوط موافقت کے ساتھ ایک عملی حکمت عملی ہے۔ حکمت عملی کے معیار کو مزید بہتر بنانے کے لئے زیادہ جدید تکنیک استعمال کی جاسکتی ہیں۔


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 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/
// © HamidBox

//@version=4
// strategy("H-M By HamidBox-YT", default_qty_type=strategy.cash, default_qty_value= 100, initial_capital=100, currency='USD', commission_type=strategy.commission.percent, commission_value=0.1)

ma(source, length, type) =>
    type == "SMA" ? sma(source , length)    :
     type == "EMA" ? ema(source , length)   :
     type == "WMA" ? wma(source , length)   :
     type == "VWMA" ? vwma(source , length) :
     na
WMA(source, length, type) =>
    type == "SMA" ? sma(source , length)    :
     type == "EMA" ? ema(source , length)   :
     type == "WMA" ? wma(source , length)   :
     type == "VWMA" ? vwma(source , length) :
     na

WithMA(source, length, type) =>
    type == "SMA" ? sma(source , length)    :
     type == "EMA" ? ema(source , length)   :
     type == "WMA" ? wma(source , length)   :
     type == "VWMA" ? vwma(source , length) :
     na


rsi_inline      = input(true , title="RSI Value)", inline="rsi")
rsiLength       = input(title="Length:", type=input.integer, defval=9, minval=1, inline="rsi")
rsiLineM        = input(title="Level:", type=input.integer, defval=50, minval=1, inline="rsi")

rsi_OSOBinline  = input(true , title="RSI)", inline="rsiosob")
rsiLineU        = input(title="O-BOUGHT", type=input.integer, defval=70, minval=1, inline="rsiosob")
rsiLineD        = input(title="O-SOLD", type=input.integer, defval=30, minval=1, inline="rsiosob")

ma_inline       = input(true , title="Price-MA)", inline="ma")
ma_type         = input(title="Type", defval="EMA", options=["EMA","SMA","WMA","VWMA"], inline="ma")
emaLength       = input(title="Length", type=input.integer, defval=3, inline="ma")

wma_inline      = input(true , title="Trending-MA)", inline="wma")
ma_type2        = input(title="", defval="WMA", options=["EMA","SMA","WMA","VWMA"], inline="wma")
wmaLength       = input(title="Length", type=input.integer, defval=21, inline="wma")


////////////////////////////////////////////////////////////////////////////////
startTime       = input(title="Start Time", type = input.time, defval = timestamp("01 Jan 2021 00:00 +0000"), group="Backtest Time Period")
endTime         = input(title="End Time", type = input.time, defval = timestamp("01 Jan 2200 00:00 +0000"), group="Backtest Time Period")
inDateRange     = true

////////////////////////////////////////////////////////////////////////////////

rsi         = rsi(close , rsiLength)
r           = plot(rsi_inline ? rsi : na, color=color.yellow, linewidth=2)

EMA         = ma(rsi, emaLength, ma_type)
e           = plot(ma_inline ? EMA : na, color=color.lime)

myWMA       = ma(rsi, wmaLength, ma_type2)
w           = plot(wma_inline ? myWMA : na, color=color.white, linewidth=2)


up  = hline(rsiLineU, title='UP Level', linewidth=1, color=color.red, linestyle=hline.style_dotted)
mid = hline(rsiLineM, title='Mid Level', linewidth=2, color=color.white, linestyle=hline.style_dotted)
dn  = hline(rsiLineD, title='DN Level', linewidth=1, color=color.green, linestyle=hline.style_dotted)

col_e_w = EMA > myWMA  ? color.new(color.green , 85) : color.new(color.red , 85)
col_r_w = rsi > myWMA  ? color.new(color.green , 85) : color.new(color.red , 85)

fill(e , w, color=col_e_w)
fill(r , w, color=col_r_w)

////////////////////////////////////////////////////////////////////////////////

//Signals     = input(true,group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")

///////////////////////////////////////////////////////////////////////////////
RSI_Cross   = input(false, "RSI x Trending-MA", inline="wma_cross",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")      // INPUT

rsiBuySignal    = crossover(rsi , myWMA)
plotshape(RSI_Cross ? rsiBuySignal : na, title="RSI Crossover", style=shape.labelup, location=location.bottom, color=color.green)

rsiSellSignal   = crossunder(rsi , myWMA) 
plotshape(RSI_Cross ? rsiSellSignal : na, title="RSI Crossunder", style=shape.labeldown, location=location.top, color=color.red)

if rsiBuySignal and RSI_Cross and inDateRange
    strategy.entry("RSIxWMA", strategy.long)
if rsiSellSignal and RSI_Cross and inDateRange
    strategy.close("RSIxWMA", comment="x")
if (not inDateRange)
    strategy.close_all()
    
////////////////////////////////////////////////////////////////////////////////

MA_Cross    = input(false, "MA x Trendin-MA",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")       // INPUT

maBuySignal     = crossover(EMA, myWMA)
plotshape(MA_Cross ? maBuySignal : na, title="MA Cross", style=shape.circle, location=location.bottom, color=color.lime)

maSellSignal   = crossunder(EMA , myWMA) 
plotshape(MA_Cross ? maSellSignal : na, title="RSI Crossunder", style=shape.circle, location=location.top, color=color.maroon)

if maBuySignal and MA_Cross and inDateRange
    strategy.entry("MAxWMA", strategy.long)
if maSellSignal and MA_Cross and inDateRange
    strategy.close("MAxWMA", comment="x")
if (not inDateRange)
    strategy.close_all()
    
////////////////////////////////////////////////////////////////////////////////

Mix         = input(false, "RSI + EMA x Trending-MA",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")       // INPUT

rsi_ma_buy  = crossover(rsi , myWMA) and crossover(EMA, myWMA)
rsi_ma_sell = crossunder(rsi , myWMA) and crossunder(EMA, myWMA)

plotshape(Mix ? rsi_ma_buy : na, title="RSI Crossunder", style=shape.circle, location=location.bottom, color=color.lime, size=size.tiny)
plotshape(Mix ? rsi_ma_sell : na, title="RSI Crossunder", style=shape.circle, location=location.top, color=color.yellow, size=size.tiny)

if rsi_ma_buy and Mix and inDateRange
    strategy.entry("RSI+EMA x WMA", strategy.long)
if rsi_ma_sell and Mix and inDateRange
    strategy.close("RSI+EMA x WMA", comment="x")
if (not inDateRange)
    strategy.close_all()

////////////////////////////////////////////////////////////////////////////////
wma_cross       = input(false, "Trending-MA x 50",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")       // INPUT

wma_buy         = crossover(myWMA , rsiLineM)
plotshape(wma_cross ? wma_buy : na, title="WMA Cross", style=shape.diamond, location=location.bottom, color=color.aqua)
wma_sell        = crossunder(myWMA , rsiLineM)
plotshape(wma_cross ? wma_sell : na, title="WMA Cross", style=shape.diamond, location=location.top, color=color.aqua)

if wma_buy and wma_cross and inDateRange
    strategy.entry("WMA x 50", strategy.long)
if wma_sell and wma_cross and inDateRange
    strategy.close("WMA x 50", comment="x")
if (not inDateRange)
    strategy.close_all()

////////////////////////////////////////////////////////////////////////////////
rsi_50      = input(false, "RSI x 50",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")       // INPUT

rsi_50_buy      = crossover(rsi , rsiLineM)
plotshape(rsi_50 ? rsi_50_buy : na, title="WMA Cross", style=shape.cross, location=location.bottom, color=color.purple)
rsi_50_sell     = crossunder(rsi , rsiLineM)
plotshape(rsi_50 ? rsi_50_sell : na, title="WMA Cross", style=shape.cross, location=location.top, color=color.purple)

if rsi_50_buy and rsi_50 and inDateRange
    strategy.entry("RSI Cross 50", strategy.long)
if rsi_50_sell and rsi_50 and inDateRange
    strategy.close("RSI Cross 50", comment="x")
if (not inDateRange)
    strategy.close_all()
    
////////////////////////////////////////////////////////////////////////////////
RSI_OS_OB   = input(false, "RSI OS/OB x Trending-MA",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")       // INPUT

rsi_OB_buy      = (rsi < rsiLineD or rsi[1] < rsiLineD[1] or rsi[2] < rsiLineD[2] or rsi[3] < rsiLineD[3] or rsi[4] < rsiLineD[4] or rsi[5] < rsiLineD[5]) and rsiBuySignal 
plotshape(RSI_OS_OB ? rsi_OB_buy : na, title="RSI OB + Cross", style=shape.circle, location=location.bottom, color=color.lime, size=size.tiny)
rsi_OS_sell     = (rsi > rsiLineU or rsi[1] > rsiLineU[1] or rsi[2] > rsiLineU[2] or rsi[3] > rsiLineU[3] or rsi[4] > rsiLineU[4] or rsi[5] > rsiLineU[5]) and maSellSignal 
plotshape(RSI_OS_OB ? rsi_OS_sell : na, title="RSI OS + Cross", style=shape.circle, location=location.top, color=color.red, size=size.tiny)

if rsi_OB_buy and RSI_OS_OB and inDateRange
    strategy.entry("RSI-OBOS x WMA", strategy.long)
if rsi_OS_sell and RSI_OS_OB and inDateRange
    strategy.close("RSI-OBOS x WMA", comment="x")
if (not inDateRange)
    strategy.close_all()

////////////////////////////////////////////////////////////////////////////////

rsi_OB_OS       = input(false, "RSI Over Sold/Bought",group="👇 🚦 --- Backtesting Signals Type --- 🚦 ")       // INPUT

rsiBuy          = crossover(rsi , rsiLineD)
rsiSell         = crossunder(rsi, rsiLineU)
rsiExit         = crossunder(rsi, rsiLineD)

plotshape(rsi_OB_OS ? rsiBuy : na, title="RSI OB", style=shape.cross, location=location.bottom, color=color.purple)
plotshape(rsi_OB_OS ? crossunder(rsi, rsiLineU) : na, title="RSI OS", style=shape.cross, location=location.top, color=color.purple)
plotshape(rsi_OB_OS ? rsiExit : na, title="RSI OS", style=shape.cross, location=location.bottom, color=color.red)

if rsiBuy and rsi_OB_OS and inDateRange
    strategy.entry("RSI OB", strategy.long)
if (rsiSell or rsiExit) and rsi_OB_OS and inDateRange
    strategy.close("RSI OB", comment="x")
if (not inDateRange)
    strategy.close_all()
    
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

With_MA_Vis     = input(true , title="With MA Signal)", inline="WITH MA", group="With MA")
withMA_type     = input(title="", defval="SMA", options=["EMA","SMA","WMA","VWMA"], inline="WITH MA", group="With MA")
with_MALen      = input(title="", defval=9, type=input.integer, inline="WITH MA", group="With MA")

// TAKE-PROFIT / STOP-LOSS 
Stop_Take_Vis   = input(true, "TP-SL")
LongSLValue     = input(title="SL %", type=input.float, defval=3, minval=0.5) * 0.01
LongTPValue     = input(title="TP %", type=input.float, defval=15, minval=0.5) * 0.01

LongSLDetermine = strategy.position_avg_price * (1 - LongSLValue)
LongTPDetermine = strategy.position_avg_price * (1 + LongTPValue)
//////////////////////////

with_ma     = WithMA(close, with_MALen, withMA_type)

Close_buy_MA    = crossover(close , with_ma)
Close_sell_MA   = crossunder(close , with_ma)

// PLOT OPTION
WithMaSignal    = input(true, "MA + RSI x Trending-MA",group="With MA")       // INPUT

// CONDITION IN VARIABLE
withMA_RSI_BUY  = (Close_buy_MA and rsiBuySignal) and WithMaSignal and inDateRange
withMA_RSI_SELL = (Close_sell_MA and rsiSellSignal) and WithMaSignal and inDateRange

// PLOT ING
plotshape(WithMaSignal ? withMA_RSI_BUY : na, title="With MA", style=shape.diamond, location=location.bottom, color=color.aqua)
plotshape(WithMaSignal ? withMA_RSI_SELL : na, title="With MA", style=shape.diamond, location=location.top, color=color.aqua)


if withMA_RSI_BUY
    strategy.entry("MA + RSIxWMA", strategy.long)
if withMA_RSI_SELL
    strategy.close("MA + RSIxWMA", comment="x")
if (not inDateRange)
    strategy.close_all()

// FOR SL - TP
if (strategy.position_size > 0) and Stop_Take_Vis
    strategy.exit("BUY", stop=LongSLDetermine, limit=LongTPDetermine)


مزید