ٹرپل اسٹیکڈ اسٹاکسٹک مومنٹم اسٹریٹجی


تخلیق کی تاریخ: 2024-01-26 12:15:20 آخر میں ترمیم کریں: 2024-01-26 12:15:20
کاپی: 2 کلکس کی تعداد: 412
1
پر توجہ دیں
1166
پیروکار

ٹرپل اسٹیکڈ اسٹاکسٹک مومنٹم اسٹریٹجی

جائزہ

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

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

اس حکمت عملی کا بنیادی اشارے بے ترتیب حرکیات اشارے ((SMI) ہے۔ SMI اشارے کا حساب کتاب فارمولا مندرجہ ذیل ہے:

SMI = 100 * EMA(EMA(收盘价-最高价和最低价的中点,N1),N2) / 0.5 * EMA(EMA(最高价-最低价,N1),N2)

ان میں سے ، N1 اور N2 پیرامیٹرز کی لمبائی ہیں۔ ایس ایم آئی اشارے کی قیمتوں کی حد 100 سے 100 کے درمیان ہے۔ جب ایس ایم آئی 0 سے زیادہ ہو تو یہ ظاہر ہوتا ہے کہ بند ہونے والی قیمت اس دن کی قیمت کی حد کے اوپری حصے میں ہے ، اور جب 0 سے کم ہو تو یہ ظاہر ہوتا ہے کہ بند ہونے والی قیمت قیمت کی حد کے نچلے حصے میں ہے۔

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

یہ حکمت عملی ایس ایم آئی اشارے کے تین سیٹوں کو مختلف پیرامیٹرز کی ترتیب کے ساتھ جوڑتی ہے ، جو ترتیب میں ہیں:

  • SMI1:٪ K لمبائی 10 سائیکل ،٪ K ہموار سائیکل 3 سائیکل
  • SMI2:٪ K لمبائی 20 سائیکل ،٪ K ہموار سائیکل 3 سائیکل
  • ایس ایم آئی 3:٪ K لمبائی 5 سائیکل ،٪ K ہموار سائیکل 3 سائیکل

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

اسٹریٹجک فوائد

  • ملٹی ٹائم سائیکل تجزیہ ، جامع فیصلہ ، موثر شور فلٹرنگ
  • ایس ایم آئی اشارے اسٹوک اشارے کے استعمال میں آسانی کو بڑھا دیتا ہے
  • ٹرپل اوورلیپنگ کا استعمال کرتے ہوئے ، ایک اشارے سے زیادہ قابل اعتماد
  • پیرامیٹرز کی لچکدار اور سایڈست ترتیب
  • ہائی فریکوئینسی شارٹ لائن ٹریڈنگ کے لئے موزوں

اسٹریٹجک رسک

  • متعدد اشارے ایک دوسرے کے ساتھ ملتے ہیں ، کچھ پیچھے رہ گئے ہیں
  • ٹرانزیکشن لاگت میں اضافہ
  • اعداد و شمار کے مماثلت کے خطرات کا پتہ لگانا
  • مارکیٹ کے ڈھانچے میں تبدیلی کے بعد پیرامیٹرز کی ناکامی کا خطرہ

خطرے کو کم کرنے کے اقدامات:

  • پیرامیٹرز کو بہتر بنانے کے لئے
  • ٹرانزیکشن لاگت کو کم کرنے کے لئے پوزیشن کی مدت کو مناسب طریقے سے ایڈجسٹ کریں
  • صحت کے لیے مزید ٹیسٹ
  • متحرک ایڈجسٹمنٹ پیرامیٹر

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

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Stochastic Momentum multi strategy", "Stochastic Momentum Index multi strategy", overlay=false)

q = input(10, title="%K Length")
r = input(3, title="%K Smoothing Length")
s = input(3, title="%K Double Smoothing Length")
nsig = input(10, title="Signal Length")
matype = input("ema", title="Signal MA Type")  // possible: ema, sma, wma, trima, hma, dema, tema, zlema
overbought = input(40, title="Overbought Level", type=float)
oversold = input(-40, title="Oversold Level", type=float)

trima(src, length) => sma(sma(src,length),length)
hma(src, length) => wma(2*wma(src, length/2)-wma(src, length), round(sqrt(length)))
dema(src, length) => 2*ema(src,length) - ema(ema(src,length),length)
tema(src, length) => (3*ema(src,length) - 3*ema(ema(src,length),length)) + ema(ema(ema(src,length),length),length)
zlema(src, length) => ema(src,length) + (ema(src,length) - ema(ema(src,length),length))

smi = 100 * ema(ema(close-0.5*(highest(q)+lowest(q)),r),s) / (0.5 * ema(ema(highest(q)-lowest(q),r),s))
sig = matype=="ema" ? ema(smi,nsig) : matype=="sma" ? sma(smi,nsig) : matype=="wma" ? wma(smi,nsig) : matype=="trima" ? trima(smi,nsig) : matype=="hma" ? hma(smi,nsig) : matype=="dema" ? dema(smi,nsig) : matype=="tema" ? tema(smi,nsig) : matype=="zlema" ? zlema(smi,nsig) : ema(smi,nsig)

p_smi = plot(smi, title="SMI", color=aqua)
p_sig = plot(sig, title="Signal", color=red)

// plotchar(crossover(smi, sig), title= "low", location=location.bottom, color=green, char="▲", size= size.tiny)
// plotchar(crossunder(smi, sig), title= "high", location=location.top, color=red, char="▼", size= size.tiny)

/////////////////////////////2
q2 = input(20, title="%K Length 2")
r2 = input(3, title="%K Smoothing Length 2")
s2 = input(3, title="%K Double Smoothing Length 2")
nsig2 = input(10, title="Signal Length 2")
matype2 = input("ema", title="Signal MA Type 2")  // possible: ema, sma, wma, trima, hma, dema, tema, zlema
overbought2 = input(40, title="Overbought Level 2", type=float)
oversold2 = input(-40, title="Oversold Level 2", type=float)

trima2(src2, length2) => sma(sma(src2,length2),length2)
hma2(src2, length2) => wma(2*wma(src2, length2/2)-wma(src2, length2), round(sqrt(length2)))
dema2(src2, length2) => 2*ema(src2,length2) - ema(ema(src2,length2),length2)
tema2(src2, length2) => (3*ema(src2,length2) - 3*ema(ema(src2,length2),length2)) + ema(ema(ema(src2,length2),length2),length2)
zlema2(src2, length2) => ema(src2,length2) + (ema(src2,length2) - ema(ema(src2,length2),length2))

smi2 = 100 * ema(ema(close-0.5*(highest(q2)+lowest(q2)),r2),s2) / (0.5 * ema(ema(highest(q2)-lowest(q2),r2),s2))
sig2 = matype2=="ema" ? ema(smi2,nsig2) : matype2=="sma 2" ? sma(smi2,nsig2) : matype2=="wma 2" ? wma(smi2,nsig2) : matype2=="trima 2" ? trima2(smi2,nsig2) : matype2=="hma 2" ? hma2(smi2,nsig2) : matype=="dema 2" ? dema2(smi2,nsig2) : matype2=="tema 2" ? tema2(smi2,nsig2) : matype2=="zlema 2" ? zlema2(smi2,nsig2) : ema(smi2,nsig2)

p_smi2 = plot(smi2, title="SMI 2", color=aqua)
p_sig2 = plot(sig2, title="Signal2", color=red)

// plotchar(crossover(smi2, sig2), title= "low2", location=location.bottom, color=green, char="▲", size= size.tiny)
// plotchar(crossunder(smi2, sig2), title= "high2", location=location.top, color=red, char="▼", size= size.tiny)

/////////////////////////////3
q3 = input(5, title="%K Length 3")
r3 = input(3, title="%K Smoothing Length 3")
s3 = input(3, title="%K Double Smoothing Length 3")
nsig3 = input(10, title="Signal Length 3")
matype3 = input("ema", title="Signal MA Type 3")  // possible: ema, sma, wma, trima, hma, dema, tema, zlema
overbought3 = input(40, title="Overbought Level 3", type=float)
oversold3 = input(-40, title="Oversold Level 3", type=float)

trima3(src3, length3) => sma(sma(src3,length3),length3)
hma3(src3, length3) => wma(2*wma(src3, length3/2)-wma(src3, length3), round(sqrt(length3)))
dema3(src3, length3) => 2*ema(src3,length3) - ema(ema(src3,length3),length3)
tema3(src3, length3) => (3*ema(src3,length3) - 3*ema(ema(src3,length3),length3)) + ema(ema(ema(src3,length3),length3),length3)
zlema3(src3, length3) => ema(src3,length3) + (ema(src3,length3) - ema(ema(src3,length3),length3))

smi3 = 100 * ema(ema(close-0.5*(highest(q3)+lowest(q3)),r3),s3) / (0.5 * ema(ema(highest(q3)-lowest(q3),r3),s3))
sig3 = matype3=="ema" ? ema(smi3,nsig3) : matype3=="sma 3" ? sma(smi3,nsig3) : matype3=="wma 3" ? wma(smi3,nsig3) : matype3=="trima 3" ? trima3(smi3,nsig3) : matype3=="hma 3" ? hma3(smi3,nsig3) : matype=="dema 3" ? dema3(smi3,nsig3) : matype3=="tema 3" ? tema3(smi3,nsig3) : matype3=="zlema 3" ? zlema3(smi3,nsig3) : ema(smi3,nsig3)

p_smi3 = plot(smi3, title="SMI 3", color=aqua)
p_sig3 = plot(sig3, title="Signal3", color=red)

// plotchar(crossover(smi3, sig3) and crossover(smi2, sig2) and crossover(smi, sig), title= "low3", location=location.bottom, color=green, char="▲", size= size.tiny)
// plotchar(crossunder(smi3, sig3) and crossunder(smi2, sig2) and crossunder(smi, sig), title= "high3", location=location.top, color=red, char="▼", size= size.tiny)
plotchar (((smi3 < sig3) and (smi2 < sig2) and (smi < sig)), title= "low3", location=location.bottom, color=green, char="▲", size= size.tiny)
plotchar (((smi3 > sig3) and (smi2 > sig2) and (smi > sig)), title= "high3", location=location.top, color=red, char="▼", size= size.tiny)

// === BACKTEST RANGE ===
FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2018, title = "To Year", minval = 2014)

longCondition = ((smi3 < sig3) and (smi2 < sig2) and (smi < sig))
shortCondition = ((smi3 > sig3) and (smi2 > sig2) and (smi > sig))

// buy = longCondition == 1 and longCondition[1] == 1 ? longCondition : na
buy = longCondition == 1 ? longCondition : na
sell = shortCondition == 1? shortCondition : na

// === ALERTS ===
strategy.entry("L", strategy.long, when=buy)

strategy.entry("S", strategy.short, when=sell)

alertcondition(((smi3 < sig3) and (smi2 < sig2) and (smi < sig)), title='Low Fib.', message='Low Fib. Buy')
alertcondition(((smi3 > sig3) and (smi2 > sig2) and (smi > sig)), title='High Fib.', message='High Fib. Low')