
이 전략은 이중 이동 평균 교차 신호에 기초한 추세 추적 시스템으로, 동적 손절매 및 손절매 메커니즘과 결합되었습니다. 이 전략은 5기간과 12기간 단순 이동 평균(SMA)을 사용하여 거래 신호를 생성하고, 이익실현 및 손절매 수준을 동적으로 조정하여 위험-수익 비율을 최적화합니다. 초기 이익 실현은 10%로 설정되고 손절매는 5%로 설정됩니다. 가격이 유리한 방향으로 움직이면 이익 실현 수준을 20%로 조정하고 손절매를 2.5%로 조입니다. 이익을 보호하기 위해서.
이 전략의 핵심 논리는 빠르게 움직이는 평균(5개 기간)과 느리게 움직이는 평균(12개 기간)의 교차 관계에 기초합니다. 빠른 선이 아래에서 위로 느린 선을 교차하면, 시스템은 롱 신호를 생성하고 포지션을 엽니다. 빠른 선이 위에서 아래로 느린 선을 교차하면 시스템은 포지션을 닫습니다. 이 전략의 독특성은 역동적인 위험 관리 메커니즘에 있습니다. 포지션이 확립되면 시스템은 실시간으로 가격 추세를 모니터링하고 가격 변화에 따라 이익 실현 및 손절 수준을 동적으로 조정하여 위험을 제어하면서 이익을 극대화합니다. .
이 전략은 고전적인 이동평균선 교차 신호와 혁신적인 동적 위험 관리 메커니즘을 결합하여 추세를 효과적으로 파악하고 위험을 동적으로 제어합니다. 전략 설계 개념은 명확하고, 구현 방법은 간결하고 효과적이며, 실용성과 확장성이 좋습니다. 이 전략은 지속적인 최적화와 개선을 통해 실제 거래에서 안정적인 수익 실적을 달성할 것으로 기대됩니다.
/*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)