ہائی فریکوئنسی کریپٹوکرنسی ٹریڈنگ کی حکمت عملی جس میں ٹرپل ایم اے سی ڈی کراس اوور اور رشتہ دار طاقت انڈیکس کو جوڑتا ہے

مصنف:چاؤ ژانگ، تاریخ: 2024-03-22 15:41:46
ٹیگز:

img

جائزہ

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

حکمت عملی کا اصول

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

اس کے علاوہ ، حکمت عملی مارکیٹ میں استحکام کے مراحل کی نشاندہی کرنے کے لئے لکیری رجعت کا استعمال کرتی ہے۔ موم بتیوں کی جسمانی لمبائی کے لئے اوپری اور نچلی سائے کی لمبائی کے تناسب کا حساب لگاتے ہوئے ، یہ طے کیا جاسکتا ہے کہ آیا موجودہ مارکیٹ استحکام کی حالت میں ہے۔ اگر اوپری اور نچلی سائے کی لمبائی جسم کی لمبائی سے دوگنا سے زیادہ ہے تو ، مارکیٹ کو استحکام کے مرحلے میں سمجھا جاتا ہے ، اور حکمت عملی اس وقت کے دوران تجارت سے گریز کرے گی۔

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

  1. ملٹی ٹائم فریم تجزیہ: مختلف پیرامیٹرز کے ساتھ MACD اشارے کے تین سیٹوں کا استعمال کرتے ہوئے، حکمت عملی مختلف وقت کے پیمانے پر رجحان سگنل پر قبضہ کر سکتی ہے، تجارت کی درستگی اور وشوسنییتا کو بہتر بناتا ہے.

  2. سگنل کو ہموار کرنا: تین MACD اشارے کی سگنل لائنوں کا اوسط مؤثر طریقے سے شور کو ہموار کرتا ہے ، گمراہ کن اشاروں سے بچنے سے بچتا ہے جو ایک اشارے سے پیدا ہوسکتے ہیں۔

  3. رجحان کی تصدیق: تیزی کے رجحانات کی طاقت کی تصدیق کے لئے آر ایس آئی اشارے کو شامل کرنے سے تجارتی سگنلز کی وشوسنییتا میں مزید اضافہ ہوتا ہے۔

  4. استحکام کی نشاندہی: مارکیٹ میں استحکام کے مراحل کی نشاندہی کرنے کے لئے لکیری رجسٹریشن کا استعمال حکمت عملی کو ہلکی مارکیٹ کے حالات کے دوران تجارت سے بچنے کی اجازت دیتا ہے ، جس سے حکمت عملی کے خطرے کو کم کیا جاتا ہے۔

  5. خودکار تجارت: یہ حکمت عملی ایک منٹ کے وقت کے فریم میں خودکار تجارت کے لئے ڈیزائن کی گئی ہے ، جو مارکیٹ میں ہونے والی تبدیلیوں اور موثر تجارت کے عمل پر فوری ردعمل کی اجازت دیتی ہے۔

خطرے کا تجزیہ

  1. پیرامیٹر کی اصلاح: حکمت عملی میں متعدد پیرامیٹرز شامل ہیں ، جیسے تینوں ایم اے سی ڈی اشارے کی تیز اور سست لائن کی مدت اور آر ایس آئی اشارے کی مدت۔ ان پیرامیٹرز کا انتخاب حکمت عملی کی کارکردگی پر نمایاں اثر ڈالتا ہے۔ اگر پیرامیٹرز کو مناسب طریقے سے بہتر نہیں بنایا جاتا ہے تو ، حکمت عملی کی کارکردگی میں کمی واقع ہوسکتی ہے۔

  2. اوور فٹنگ کا خطرہ: حکمت عملی مخصوص تاریخی اعداد و شمار پر اچھی کارکردگی کا مظاہرہ کرسکتی ہے لیکن اصل درخواست میں مارکیٹ کی تبدیلیوں کو اپنانے میں ناکام ہوسکتی ہے ، جس سے حکمت عملی کی ناکامی ہوسکتی ہے۔

  3. بلیک سوان واقعات: حکمت عملی بنیادی طور پر تکنیکی اشارے پر انحصار کرتی ہے اور اہم بنیادی واقعات پر مناسب طریقے سے جواب نہیں دے سکتی ، جس سے مارکیٹ کے انتہائی حالات میں خراب کارکردگی کا باعث بن سکتی ہے۔

اصلاح کی سمت

  1. متحرک پیرامیٹر ایڈجسٹمنٹ: حکمت عملی میں پیرامیٹرز کو متحرک طور پر ایڈجسٹ کریں ، جیسے ایم اے سی ڈی اشارے کی تیز اور سست لائن کی مدت اور آر ایس آئی اشارے کی مدت ، مارکیٹ کے حالات میں ہونے والی تبدیلیوں کی بنیاد پر مختلف مارکیٹ کے ماحول میں موافقت کے ل.

  2. اضافی اشارے شامل کریں: موجودہ ایم اے سی ڈی اور آر ایس آئی اشارے کے علاوہ ، تجارتی اشاروں کی درستگی اور وشوسنییتا کو مزید بہتر بنانے کے ل other ، دوسرے تکنیکی اشارے ، جیسے بولنگر بینڈ اور چلتے ہوئے اوسط شامل کرنے پر غور کریں۔

  3. خطرے کے انتظام کی اصلاح: حکمت عملی کے مجموعی خطرے کو کم کرنے کے لئے حکمت عملی میں زیادہ جامع خطرے کے انتظام کے اقدامات ، جیسے متحرک اسٹاپ نقصان اور پوزیشن مینجمنٹ کو نافذ کریں۔

  4. مشین لرننگ کی اصلاح: مشین لرننگ الگورتھم کا استعمال کریں ، جیسے نیورل نیٹ ورکس اور سپورٹ ویکٹر مشینیں ، حکمت عملی کے پیرامیٹرز اور تجارتی قوانین کو بہتر بنانے کے ل the ، حکمت عملی کی موافقت اور استحکام کو بڑھانا۔

نتیجہ

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


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//indicator("Triplle",shorttitle="Triplle MACD", overlay=true, scale = scale.none)
//indicator("Triplle","TrippleMACD",true)
strategy(title="TrippleMACD", shorttitle="TrippleMACD + RSI strategy", format=format.price, precision=4, overlay=true)

// RSI 
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "Bollinger Bands" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
showDivergence = input.bool(false, title="Show Divergence", group="RSI Settings")

up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"

//rsiPlot = plot(rsi, "RSI", color=#7E57C2)
//plot(rsiMA, "RSI-based MA", color=color.yellow)
//rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
//midline = hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
//rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
//fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
//fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")

//midLinePlot = plot(50, color = na, editable = false, display = display.none)
//fill(rsiPlot, midLinePlot, 100, 70, top_color = color.new(color.green, 0), bottom_color = color.new(color.green, 100),  title = "Overbought Gradient Fill")
//fill(rsiPlot, midLinePlot, 30,  0,  top_color = color.new(color.red, 100), bottom_color = color.new(color.red, 0),      title = "Oversold Gradient Fill")

// Divergence
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
bearColor = color.red
bullColor = color.green
textColor = color.white
noneColor = color.new(color.white, 100)

plFound = na(ta.pivotlow(rsi, lookbackLeft, lookbackRight)) ? false : true
phFound = na(ta.pivothigh(rsi, lookbackLeft, lookbackRight)) ? false : true
_inRange(cond) =>
	bars = ta.barssince(cond == true)
	rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish
// rsi: Higher Low

rsiHL = rsi[lookbackRight] > ta.valuewhen(plFound, rsi[lookbackRight], 1) and _inRange(plFound[1])

// Price: Lower Low

priceLL = low[lookbackRight] < ta.valuewhen(plFound, low[lookbackRight], 1)
bullCondAlert = priceLL and rsiHL and plFound
bullCond = showDivergence and bullCondAlert

// plot(
//      plFound ? rsi[lookbackRight] : na,
//      offset=-lookbackRight,
//      title="Regular Bullish",
//      linewidth=2,
//      color=(bullCond ? bullColor : noneColor)
//      )

// plotshape(
// 	 bullCond ? rsi[lookbackRight] : na,
// 	 offset=-lookbackRight,
// 	 title="Regular Bullish Label",
// 	 text=" Bull ",
// 	 style=shape.labelup,
// 	 location=location.absolute,
// 	 color=bullColor,
// 	 textcolor=textColor
// 	 )

//------------------------------------------------------------------------------
// Regular Bearish
// rsi: Lower High

rsiLH = rsi[lookbackRight] < ta.valuewhen(phFound, rsi[lookbackRight], 1) and _inRange(phFound[1])

// Price: Higher High

priceHH = high[lookbackRight] > ta.valuewhen(phFound, high[lookbackRight], 1)

bearCondAlert = priceHH and rsiLH and phFound
bearCond = showDivergence and bearCondAlert

// plot(
// 	 phFound ? rsi[lookbackRight] : na,
// 	 offset=-lookbackRight,
// 	 title="Regular Bearish",
// 	 linewidth=2,
// 	 color=(bearCond ? bearColor : noneColor)
// 	 )

// plotshape(
// 	 bearCond ? rsi[lookbackRight] : na,
// 	 offset=-lookbackRight,
// 	 title="Regular Bearish Label",
// 	 text=" Bear ",
// 	 style=shape.labeldown,
// 	 location=location.absolute,
// 	 color=bearColor,
// 	 textcolor=textColor
// 	 )
// END RSI

// Getting inputs
stopLuse          = input(1.040)
fast_length = input(title = "Fast Length", defval = 5)
slow_length = input(title = "Slow Length", defval = 8)
fast_length2 = input(title = "Fast Length2", defval = 13)
slow_length2 = input(title = "Slow Length2", defval = 21)
fast_length3 = input(title = "Fast Length3", defval = 34)
slow_length3 = input(title = "Slow Length3", defval = 144)
fast_length4 = input(title = "Fast Length3", defval = 68)
slow_length4 = input(title = "Slow Length3", defval = 288)
src = input(title = "Source", defval = close)
signal_length2 = input.int(title="Signal Smoothing", minval = 1, maxval = 200, defval = 11)
signal_length = input.int(title = "Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title = "Oscillator MA Type",  defval = "EMA", options = ["SMA", "EMA"])
sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"])
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)

fast_ma2 = sma_source == "SMA2" ? ta.sma(src, fast_length2) : ta.ema(src, fast_length2)
slow_ma2 = sma_source == "SMA2" ? ta.sma(src, slow_length2) : ta.ema(src, slow_length2)

fast_ma3 = sma_source == "SMA3" ? ta.sma(src, fast_length3) : ta.ema(src, fast_length3)
slow_ma3 = sma_source == "SMA3" ? ta.sma(src, slow_length3) : ta.ema(src, slow_length3)

fast_ma4 = sma_source == "SMA3" ? ta.sma(src, fast_length3) : ta.ema(src, fast_length3)
slow_ma4 = sma_source == "SMA3" ? ta.sma(src, slow_length3) : ta.ema(src, slow_length3)

macd = fast_ma - slow_ma
macd2 = fast_ma2 - slow_ma2
macd3 = fast_ma3 - slow_ma3
macd4 = fast_ma4 - slow_ma4

signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
signal2 = sma_signal == "SMA" ? ta.sma(macd2, signal_length) : ta.ema(macd2, signal_length)
signal3 = sma_signal == "SMA" ? ta.sma(macd3, signal_length) : ta.ema(macd3, signal_length)
signal4 = sma_signal == "SMA" ? ta.sma(macd4, signal_length) : ta.ema(macd4, signal_length)
//hist = (macd + macd2 + macd3)/1 - (signal + signal2 + signal3)/1
hist = (macd + macd2 + macd3 + macd4)/4 - (signal + signal2 + signal3 + signal4)/4
signal5 = (signal + signal2 + signal3)/3

sma_signal2 = input.bool(title="Simple MA (Signal Line)", defval=true)

lin_reg = input.bool(title="Lin Reg", defval=true)
linreg_length = input.int(title="Linear Regression Length", minval = 1, maxval = 200, defval = 11)

bopen = lin_reg ? ta.linreg(open, linreg_length, 0) : open
bhigh = lin_reg ? ta.linreg(high, linreg_length, 0) : high
blow = lin_reg ? ta.linreg(low, linreg_length, 0) : low
bclose = lin_reg ? ta.linreg(close, linreg_length, 0) : close

shadow = (bhigh - bclose) + (bopen - blow)
body = bclose - bopen
perc = (shadow/body)
cond2 = perc >=2 and bclose+bclose[1]/2 > bopen+bopen[1]/2

r = bopen < bclose

//signal5 = sma_signal2 ? ta.sma(bclose, signal_length) : ta.ema(bclose, signal_length)
plotcandle(r ? bopen : na, r ? bhigh : na, r ? blow: na, r ? bclose : na, title="LinReg Candles", color= color.green, wickcolor=color.green, bordercolor=color.green, editable= true)
plotcandle(r ? na : bopen, r ? na : bhigh, r ? na : blow, r ? na : bclose, title="LinReg Candles", color=color.red, wickcolor=color.red, bordercolor=color.red, editable= true)
//alertcondition(hist[1] >= 0 and hist < 0, title = 'Rising to falling', message = 'The MACD histogram switched from a rising to falling state')
//alertcondition(hist[1] <= 0 and hist > 0, title = 'Falling to rising', message = 'The MACD histogram switched from a falling to rising state')

green = hist >= 0 ? (hist[1] < hist ? "G" : "GL") : (hist[1] < hist ? "RL" : "R")
Buy = green == "G" and green[1] != "G" and green[1] != "GL" and bopen < bclose and rsi < 55.0 //and not cond2
//StopBuy = (green == "R" or green == "RL" or green == "RL") and bopen > bclose and bopen[1] < bclose[1]
StopBuy = bopen > bclose and bopen[1] < bclose[1] and (green == "G" or green == "GL" or green == "R") and bopen[2] < bclose[2] and bopen[3] < bclose[3]
hists = close[3] < close[2] and close[2] < close[1]
//Buy = green == "RL" and hist[0] > -0.07 and hist[0] < 0.00 and rsi < 55.0 and hists
//StopBuy = green == "GL" or green == "R"
alertcondition(Buy, "Long","Покупка в лонг")
alertcondition(StopBuy, "StopLong","Закрытие сделки")

//hline(0, "Zero Line", color = color.new(#787B86, 50))
plot(hist + (close - (close * 0.03)), title = "Histogram", style = plot.style_line, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
plotshape(Buy ? low : na, 'Buy', shape.labelup, location.belowbar , color=color.new(#0abe40, 50), size=size.small, offset=0)
plotshape(StopBuy ? low : na, 'Buy', shape.cross, location.abovebar , color=color.new(#be0a0a, 50), size=size.small, offset=0)
plot(macd4  + (close - (close * 0.01)),   title = "MACD",   color = #2962FF)
plot(signal5 + (close - (close * 0.01)), title = "Signal", color = #FF6D00)

plotchar(cond2 , char='↓', color = color.rgb(0, 230, 119), text = "-")

if (Buy)
    strategy.entry("long", strategy.long)

// if (startShortTrade)
//     strategy.entry("short", strategy.short)

profitTarget = strategy.position_avg_price * stopLuse
strategy.exit("Take Profit", "long", limit=profitTarget)
// strategy.exit("Take Profit", "short", limit=profitTarget)

مزید