এই কৌশলটি একটি সম্পূর্ণ ট্রেডিং সিস্টেম যা দ্বৈত ইএমএ ক্রসওভার সংকেত, স্টপ-লস / টেক-লাভ ম্যানেজমেন্ট এবং সময় ফিল্টারিংকে একত্রিত করে। মূল কৌশলটি বাজারের প্রবণতা ক্যাপচার করার জন্য দ্রুত এবং ধীর এক্সপোনেন্সিয়াল মুভিং এভারেজ (ইএমএ) এর ক্রসওভারের উপর ভিত্তি করে, লাভ এবং স্টপ লস সেটিংসের মাধ্যমে ঝুঁকি নিয়ন্ত্রণের সাথে। উপরন্তু, কৌশলটিতে সময় ফিল্টারিং ফাংশন রয়েছে যা ব্যবসায়ীদের নির্দিষ্ট সময়সীমার মধ্যে বাণিজ্য সম্পাদন করতে দেয়।
কৌশলটি নিম্নলিখিত মূল প্রক্রিয়াগুলির উপর ভিত্তি করে কাজ করেঃ
এটি একটি ভাল ডিজাইন করা প্রবণতা অনুসরণকারী কৌশল যা একটি বিস্তৃত ট্রেডিং সমাধান সরবরাহের জন্য একটি চলমান গড় সিস্টেম, ঝুঁকি ব্যবস্থাপনা এবং সময় ফিল্টারিংকে একত্রিত করে। কৌশলটি উচ্চ কনফিগারিবিলিটি সরবরাহ করে, বিভিন্ন ঝুঁকি পছন্দ সহ ব্যবসায়ীদের জন্য উপযুক্ত। প্রস্তাবিত অপ্টিমাইজেশান দিকগুলির মাধ্যমে আরও উন্নতির সুযোগ রয়েছে। কঠোর ঝুঁকি নিয়ন্ত্রণ বজায় রেখে প্রকৃত বাজারের পরিস্থিতি এবং ব্যক্তিগত ট্রেডিং লক্ষ্যগুলির ভিত্তিতে পরামিতিগুলি সামঞ্জস্য করা মূল বিষয়।
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estrategia Cruce de EMAs con: Stop Loss, Take Profit, Días de Operación y Alertas (Modificables)", overlay=true, commission_value = 0.2, process_orders_on_close = true, initial_capital = 1000) // Parámetros de las EMAs emaRapidaLen = input.int(5, title="Periodo EMA rápida") emaLentaLen = input.int(21, title="Periodo EMA lenta") // Parámetros de Stop Loss y Take Profit stopLoss = input.float(3.0, title="Stop Loss (%)", step=0.1) / 100 takeProfit = input.float(6.0, title="Take Profit (%)", step=0.1) / 100 // Tipo de operación: Largo, Corto o Ambos operacion = input.string(title="Tipo de operación", defval="Largo", options=["Largo", "Corto", "Ambos"]) // Parámetros de la duración de la estrategia (días) diasInicio = input(timestamp("2009-01-03 00:00"), title="Fecha de inicio (YYYY-MM-DD HH:MM)") diasFin = input(timestamp("2024-09-11 00:00"), title="Fecha de fin (YYYY-MM-DD HH:MM)") // Comprobar si estamos dentro del rango de días definido dentroDeRango = true // Cálculo de las EMAs emaRapida = ta.ema(close, emaRapidaLen) emaLenta = ta.ema(close, emaLentaLen) // Condiciones para cruce de EMAs cruceAlcista = ta.crossover(emaRapida, emaLenta) cruceBajista = ta.crossunder(emaRapida, emaLenta) // Operaciones en Largo (solo si estamos en el rango de días definido) if dentroDeRango and (operacion == "Largo" or operacion == "Ambos") and cruceAlcista strategy.entry("Compra", strategy.long) alert("Posición larga abierta: Cruce alcista de EMAs", alert.freq_once_per_bar_close) // Operaciones en Corto (solo si estamos en el rango de días definido) if dentroDeRango and (operacion == "Corto" or operacion == "Ambos") and cruceBajista strategy.entry("Venta", strategy.short) alert("Posición corta abierta: Cruce bajista de EMAs", alert.freq_once_per_bar_close) // Cálculo del Stop Loss y Take Profit para largos if (strategy.position_size > 0 and strategy.opentrades.entry_id(strategy.opentrades - 1) == "Compra") strategy.exit("Cerrar Compra", "Compra", stop=strategy.position_avg_price * (1 - stopLoss), limit=strategy.position_avg_price * (1 + takeProfit)) alert("Posición larga cerrada: Alcanzado Stop Loss o Take Profit", alert.freq_once_per_bar_close) // Cálculo del Stop Loss y Take Profit para cortos if (strategy.position_size < 0 and strategy.opentrades.entry_id(strategy.opentrades - 1) == "Venta") strategy.exit("Cerrar Venta", "Venta", stop=strategy.position_avg_price * (1 + stopLoss), limit=strategy.position_avg_price * (1 - takeProfit)) alert("Posición corta cerrada: Alcanzado Stop Loss o Take Profit", alert.freq_once_per_bar_close) // Plot de las EMAs plot(emaRapida, color=color.blue, title="EMA rápida", linewidth = 2) plot(emaLenta, color=color.red, title="EMA lenta", linewidth = 2)