Strategi ini adalah sistem mengikuti trend berdasarkan isyarat crossover purata bergerak berganda, menggabungkan mekanisme mengambil keuntungan dan menghentikan kerugian dinamik. Ia menggunakan purata bergerak mudah (SMA) 5 tempoh dan 12 tempoh untuk menghasilkan isyarat perdagangan, mengoptimumkan nisbah risiko-balasan melalui penyesuaian dinamik tahap mengambil keuntungan dan menghentikan kerugian.
Logik teras bergantung pada hubungan silang antara purata bergerak pantas (5-periode) dan perlahan (12-periode). Isyarat beli dihasilkan apabila MA pantas melintasi di atas MA perlahan, sementara kedudukan ditutup apabila MA pantas melintasi di bawah MA perlahan. Keunikan strategi ini terletak pada mekanisme pengurusan risiko dinamiknya: selepas memasuki kedudukan, sistem terus memantau pergerakan harga dan secara dinamik menyesuaikan tahap mengambil keuntungan dan berhenti kerugian untuk memaksimumkan keuntungan sambil mengawal risiko.
Strategi ini berkesan menangkap trend dan secara dinamik mengawal risiko dengan menggabungkan isyarat crossover purata bergerak klasik dengan pengurusan risiko dinamik yang inovatif. Reka bentuk strategi adalah jelas, pelaksanaan adalah cekap, dan ia menunjukkan kepraktisan dan skalabiliti yang baik. Melalui pengoptimuman dan peningkatan yang berterusan, strategi ini menunjukkan janji untuk mencapai pulangan yang stabil dalam perdagangan sebenar.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=6 strategy("My Moving Average Crossover Strategy with Take Profit and Stop Loss", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100) //risk_free_rate = float(request.security("IRUS", "D", close)/request.security("IRUS", "D", close[1]) - 1 )) // MA periods fastLength = input.int(5, title="Fast MA Length") slowLength = input.int(12, title="Slow MA Length") // Take Profit and Stop Loss takeProfitLevel = input(10, title="Take Profit (пункты)") // Take profit % from the last price stopLossLevel = input(5, title="Stop Loss (пункты)") // Stop loss % from the last price takeProfitLevel_dyn = input(20, title="Dynamic Take Profit (пункты)") // Move TP if current_price higher buy_px stopLossLevel_dyn = input(2.5, title="Dynamic Stop Loss (пункты)") // S Move SL if current_price higher buy_px // Вычисление скользящих средних fastMA = ta.sma(close, fastLength) slowMA= ta.sma(close, slowLength) // Conditions for Sell and Buy longCondition = ta.crossover (fastMA, slowMA) // покупаем, если короткая MA персекает длинную снизу-вверх shortCondition = ta.crossunder(fastMA, slowMA) // продаем, если короткая MA персекает длинную сверху-вниз // Buy position condition if (longCondition) strategy.entry("Buy", strategy.long) // Dynamic TP SL leveles takeProfitPrice = strategy.position_avg_price * (1+ takeProfitLevel / 100) stopLossPrice = strategy.position_avg_price * (1-stopLossLevel / 100) entryPrice = strategy.position_avg_price if (strategy.position_size > 0) // если есть открытая позиция // takeProfitPrice := entryPrice * (1+ takeProfitLevel / 100) // stopLossPrice := entryPrice * (1-stopLossLevel / 100) // // Перемещение Stop Loss и Take Profit if (close > entryPrice) takeProfitPrice := close * (1+ takeProfitLevel_dyn / 100) stopLossPrice := close * (1- stopLossLevel_dyn/ 100) if (shortCondition) strategy.close("Buy") strategy.exit("Take Profit/Stop loss", "Buy", limit=takeProfitPrice, stop=stopLossPrice) // Drawing MA lines plot(fastMA, color=color.blue, title="Fast Moving Average") plot(slowMA, color=color.orange, title="Slow Moving Average") // Визуализация plot(longCondition ? na : takeProfitPrice, title="Take Profit Level", color=color.green, linewidth=1, style=plot.style_line) plot(longCondition ? na: stopLossPrice, title="Stop Loss Level", color=color.red, linewidth=1, style=plot.style_line)