
이 전략은 지수 이동 평균 ((EMA) 에 기반한 자기 적응 거래 시스템으로, 인공지능 최적화 방법을 통해 변수를 동적으로 조정하여 거래 성과의 지속적인 개선을 실현합니다. 전략은 거래 촉발 조건으로 빠른 EMA와 느린 EMA의 교차 신호를 통합하고, 지능화된 중지 손실 및 중지 관리 메커니즘을 갖추고 있습니다.
전략의 핵심은 두 개의 다른 주기의 지수 이동 평균 ((EMA) 을 기반으로 합니다. 시스템은 5 주기와 10 주기를 초기 파라미터 설정으로 채택하고 있으며, 빠른 EMA와 느린 EMA의 교차 형태를 관찰하여 거래 신호를 생성합니다. 빠른 라인이 느린 라인을 상향으로 통과하면 구매 신호를 유발하고, 빠른 라인이 느린 라인을 하향으로 통과하면 판매 신호를 유발합니다. 시스템의 특징은 적응성 최적화 메커니즘입니다.
이것은 기술 분석의 전통적인 지혜와 현대적인 적응 최적화 기술을 결합한 거래 시스템이다. EMA 교차를 통해 기본 거래 신호를 제공하며, 동적 중지 중지 관리와 함께 거래 전략의 지능적인 운영을 구현한다. 시스템의 적응 특성은 지속적인 최적화 능력을 갖춘 것이지만, 사용 시 시장 환경의 변화와 위험 통제의 중요성에 주의를 기울여야 한다. 실내 거래 전에 충분한 재검토 및 변수 감수성 분석을 수행하는 것이 좋습니다.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-17 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Evolutivna Strategija - AI Optimizacija", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Varijable za praćenje performansi
var float bestProfit = na
var float bestStopLoss = na
var float bestTakeProfit = na
// Početni parametri (fiksne vrednosti)
ema_fast_final = input.int(5, "Početni EMA Fast", minval=5, maxval=50) // Mora biti simple int
ema_slow_final = input.int(10, "Početni EMA Slow", minval=10, maxval=100) // Mora biti simple int
// Kreiranje EMA koristeći fiksne vrednosti
ema_fast_adaptive = ta.ema(close, ema_fast_final)
ema_slow_adaptive = ta.ema(close, ema_slow_final)
// Signali kupovine i prodaje
buy_signal = ta.crossover(ema_fast_adaptive, ema_slow_adaptive)
sell_signal = ta.crossunder(ema_fast_adaptive, ema_slow_adaptive)
// Stop Loss i Take Profit parametri
sl_input = input.float(1.0, "Početni Stop Loss (%)", step=0.1)
tp_input = input.float(1.0, "Početni Take Profit (%)", step=0.1)
// Dinamično prilagođavanje parametara SL i TP
if (na(bestProfit) or strategy.netprofit > bestProfit)
bestProfit := strategy.netprofit
bestStopLoss := sl_input
bestTakeProfit := tp_input
// Otvaranje pozicija
if (buy_signal)
strategy.entry("BUY", strategy.long)
strategy.exit("TP/SL", "BUY", stop=close * (1 - bestStopLoss / 100), limit=close * (1 + bestTakeProfit / 100))
if (sell_signal)
strategy.entry("SELL", strategy.short)
strategy.exit("TP/SL", "SELL", stop=close * (1 + bestStopLoss / 100), limit=close * (1 - bestTakeProfit / 100))
// Vizualizacija
plot(ema_fast_adaptive, color=color.green, title="EMA Fast (Adaptive)")
plot(ema_slow_adaptive, color=color.red, title="EMA Slow (Adaptive)")
// Prikaz najboljih rezultata
var label result_label = na
if (na(result_label))
result_label := label.new(x=bar_index, y=high, text="", style=label.style_label_down, color=color.blue)
label.set_xy(result_label, bar_index, high)
label.set_text(result_label, "Best rezult: " + str.tostring(bestProfit, "#.##") +
"\nSL: " + str.tostring(bestStopLoss) + "%" +
"\nTP: " + str.tostring(bestTakeProfit) + "%" +
"\nEMA Fast: " + str.tostring(ema_fast_final) +
"\nEMA Slow: " + str.tostring(ema_slow_final))