ملٹی انڈیکیٹر فیوژن ڈائنامک موونگ ایوریج کراس اوور مقداری حکمت عملی

SMA EMA WMA VWMA HMA RMA ALMA MA
تخلیق کی تاریخ: 2025-01-06 13:46:47 آخر میں ترمیم کریں: 2025-01-06 13:46:47
کاپی: 2 کلکس کی تعداد: 443
1
پر توجہ دیں
1617
پیروکار

ملٹی انڈیکیٹر فیوژن ڈائنامک موونگ ایوریج کراس اوور مقداری حکمت عملی

جائزہ

یہ حکمت عملی ایک مقداری تجارتی نظام ہے جو متعدد حرکت پذیر اوسط کراس اوور سگنلز پر مبنی ہے۔ یہ سات مختلف قسم کے موونگ ایوریج انڈیکیٹرز کو یکجا کرتا ہے، جن میں سادہ موونگ ایوریج (SMA)، ایکسپونیشل موونگ ایوریج (EMA)، ویٹڈ موونگ ایوریج (WMA)، والیوم ویٹیڈ موونگ ایوریج (VWMA)، ہل موونگ ایوریج (LME) اور بہت کچھ شامل ہے۔ ہائی موونگ ایوریج (HMA)، رف موونگ ایوریج (RMA) اور Arnold-Leguise Moving Average (ALMA)۔ حکمت عملی دو لائن یا تین لائن کراس اوور سسٹم کی حمایت کرتی ہے، اور مارکیٹ کے حالات کے مطابق لچکدار طریقے سے طویل یا مختصر جانے کا انتخاب کر سکتی ہے۔

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

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

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

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

اسٹریٹجک رسک

  1. وقفہ: موونگ ایوریج بنیادی طور پر پیچھے رہ جانے والے اشارے ہیں اور یہ ایک غیر مستحکم مارکیٹ میں بہترین انٹری پوائنٹ سے محروم ہو سکتا ہے۔
  2. اتار چڑھاؤ والے بازاروں کے لیے موزوں نہیں: متواتر غلط سگنلز ایک طرف اور اتار چڑھاؤ والے بازار میں پیدا ہو سکتے ہیں۔
  3. پیرامیٹر پر انحصار: مختلف پیرامیٹر کے امتزاج کی کارکردگی بہت مختلف ہوتی ہے اور اسے مسلسل بہتر بنانے کی ضرورت ہوتی ہے۔
  4. نظامی خطرہ: جب مارکیٹ کے واقعات رونما ہوتے ہیں تو وقت پر نقصانات کو روکنا ممکن نہ ہو۔

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

  1. اتار چڑھاؤ کے اشاریوں کا تعارف: پوزیشن کے سائز کو متحرک طور پر ایڈجسٹ کرنے کے لیے اتار چڑھاؤ کے اشارے جیسے ATR کو یکجا کرنے کی سفارش کی جاتی ہے۔
  2. مارکیٹ کے ماحول کا فلٹر شامل کریں: آپ غیر مستحکم مارکیٹوں میں تجارتی سگنلز کو فلٹر کرنے کے لیے رجحان کی طاقت کے اشارے شامل کر سکتے ہیں
  3. سٹاپ نقصان کے طریقہ کار کو بہتر بنائیں: خطرے پر قابو پانے کی صلاحیتوں کو بہتر بنانے کے لیے ٹریلنگ سٹاپ نقصان کا فنکشن شامل کرنے کی سفارش کی جاتی ہے۔
  4. حجم کا تجزیہ شامل کریں: رجحان کی درستگی کی تصدیق کے لیے حجم کی تبدیلیوں کو یکجا کرنے کی سفارش کی جاتی ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Cruce de Medias Total", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100,max_bars_back=1000)

// Parámetros de entrada
periodo_rapida = input.int(50, title="Periodos para media rápida", minval=1)
periodo_lenta = input.int(200, title="Periodos para media lenta", minval=1)

// Selección del tipo de media móvil
tipo_de_media = input.string(title="Elige el tipo de media móvil", defval="Simple sma", options=["Simple sma", "Exponencial ema", "Ponderada wma", "Volumen ponderada vwma", "Hull hma", "Media suavizada rma", "Media de Arnaud Legoux alma"])

// Posibilidad de estrategia con cruce de tres medias móviles
tres_medias = input.bool(false, title="Estrategia con cruce de 3 medias móviles")
periodo_media = input.int(100, title="Periodos para media media", minval=1)

// Opción de operar en corto
permitir_corto = input.bool(false, title="Permitir operaciones en corto")

// Opción de cuando comprar
cuando_comprar = input.string(title="Cuando comprar", defval="Cruce de medias", options=["Vela anterior cierra por encima de las medias", "Cruce de medias"])
// Opción de cuando vender
cuando_vender = input.string(title="Cuando vender", defval="Cruce de medias", options=["Vela anterior cierra por debajo de las medias", "Cruce de medias"])

float media_mov_rapida = na
float media_mov_media = na
float media_mov_lenta = na

// Definición de las medias móviles
if tipo_de_media == "Simple sma"
    media_mov_rapida := ta.sma(close, periodo_rapida)
    media_mov_media := ta.sma(close, periodo_media)
    media_mov_lenta := ta.sma(close, periodo_lenta)
else if tipo_de_media == "Exponencial ema"
    media_mov_rapida := ta.ema(close, periodo_rapida)
    media_mov_media := ta.ema(close, periodo_media)
    media_mov_lenta := ta.ema(close, periodo_lenta)
else if tipo_de_media == "Ponderada wma"
    media_mov_rapida := ta.wma(close, periodo_rapida)
    media_mov_media := ta.wma(close, periodo_media)
    media_mov_lenta := ta.wma(close, periodo_lenta)
else if tipo_de_media == "Volumen ponderada vwma"
    media_mov_rapida := ta.vwma(close, periodo_rapida)
    media_mov_media := ta.vwma(close, periodo_media)
    media_mov_lenta := ta.vwma(close, periodo_lenta)
else if tipo_de_media == "Hull hma"
    media_mov_rapida := ta.hma(close, periodo_rapida)
    media_mov_media := ta.hma(close, periodo_media)
    media_mov_lenta := ta.hma(close, periodo_lenta)
else if tipo_de_media == "Media suavizada rma"
    media_mov_rapida := ta.rma(close, periodo_rapida)
    media_mov_media := ta.rma(close, periodo_media)
    media_mov_lenta := ta.rma(close, periodo_lenta)
else if tipo_de_media == "Media de Arnaud Legoux alma"
    offset = input.int(0, title="Desfase para ALMA", minval=-100, maxval=100)
    sigma = input.float(6, title="Sigma para ALMA", minval=0.1, maxval=10)
    media_mov_rapida := ta.alma(close, periodo_rapida, offset, sigma)
    media_mov_media := ta.alma(close, periodo_media, offset, sigma)
    media_mov_lenta := ta.alma(close, periodo_lenta, offset, sigma)

// Graficar las medias móviles en el gráfico
plot_rapida = plot(media_mov_rapida, color=color.green, linewidth=2, title="Media Móvil Rápida")
plot_media = plot(tres_medias ? media_mov_media : na, color=color.blue, linewidth=2, title="Media Móvil Media")
plot_lenta = plot(media_mov_lenta, color=color.red, linewidth=2, title="Media Móvil Lenta")

// Rellenar el área entre las medias móviles con color condicionado
fill(plot_rapida, plot_lenta, media_mov_rapida > media_mov_lenta ? color.new(color.green, 90) : color.new(color.red, 90), title="Relleno entre Medias")

// Lógica de la estrategia para cruce de medias
comprado = strategy.position_size > 0  // Verifica si ya hay una posición abierta
vendido = strategy.position_size < 0 

if not comprado  // Solo compra si no hay una posición abierta
    if tres_medias and cuando_comprar == "Cruce de medias"
        if media_mov_rapida > media_mov_media and media_mov_media > media_mov_lenta
            strategy.entry("Largo", strategy.long)
            label.new(bar_index, low, "Largo", style=label.style_label_up, color=color.green, textcolor=color.white)
    else if not tres_medias and cuando_comprar == "Cruce de medias"
        if ta.crossover(media_mov_rapida, media_mov_lenta)
            strategy.entry("Largo", strategy.long)
            label.new(bar_index, low, "Largo", style=label.style_label_up, color=color.green, textcolor=color.white)
    else if tres_medias and cuando_comprar == "Vela anterior cierra por encima de las medias"
        if close[1] > media_mov_rapida and close[1] > media_mov_media and close[1] > media_mov_lenta
            strategy.entry("Largo", strategy.long)
            label.new(bar_index, low, "Largo", style=label.style_label_up, color=color.green, textcolor=color.white)
    else if not tres_medias and cuando_comprar == "Vela anterior cierra por encima de las medias"
        if close[1] > media_mov_rapida and close[1] > media_mov_lenta
            strategy.entry("Largo", strategy.long)
            label.new(bar_index, low, "Largo", style=label.style_label_up, color=color.green, textcolor=color.white)

// Condición de cierre de la posición
if comprado
    if tres_medias and cuando_vender == "Cruce de medias"
        if media_mov_rapida < media_mov_media and media_mov_media < media_mov_lenta
            strategy.close("Largo")
            label.new(bar_index, high, "Cierre Largo", style=label.style_label_down, color=color.red, textcolor=color.white)
    else if not tres_medias and cuando_vender == "Cruce de medias"
        if ta.crossunder(media_mov_rapida, media_mov_lenta)
            strategy.close("Largo")
            label.new(bar_index, high, "Cierre Largo", style=label.style_label_down, color=color.red, textcolor=color.white)
    else if tres_medias and cuando_vender == "Vela anterior cierra por debajo de las medias"
        if close[1] < media_mov_rapida and close[1] < media_mov_media and close[1] < media_mov_lenta
            strategy.close("Largo")
            label.new(bar_index, high, "Cierre Largo", style=label.style_label_down, color=color.red, textcolor=color.white)
    else if not tres_medias and cuando_vender == "Vela anterior cierra por debajo de las medias"
        if close[1] < media_mov_rapida and close[1] < media_mov_lenta
            strategy.close("Largo")
            label.new(bar_index, high, "Cierre Largo", style=label.style_label_down, color=color.red, textcolor=color.white)

// Condición de entrar en corto
if not vendido and permitir_corto
    if tres_medias
        if media_mov_rapida < media_mov_media and media_mov_media < media_mov_lenta
            strategy.entry("Short", strategy.short)
            label.new(bar_index, low, "Short", style=label.style_label_up, color=color.blue, textcolor=color.white)
    else
        if ta.crossunder(media_mov_rapida, media_mov_lenta)
            strategy.entry("Short", strategy.short)
            label.new(bar_index, low, "Short", style=label.style_label_up, color=color.blue, textcolor=color.white)

// Condición de cierre de posición corta
if vendido
    if tres_medias
        if media_mov_rapida > media_mov_media and media_mov_media > media_mov_lenta
            strategy.close("Short")
            label.new(bar_index, high, "Cierre Short", style=label.style_label_down, color=color.purple, textcolor=color.white)
    else
        if ta.crossover(media_mov_rapida, media_mov_lenta)
            strategy.close("Short")
            label.new(bar_index, high, "Cierre Short", style=label.style_label_down, color=color.purple, textcolor=color.white)