
Strategi ini menggunakan tiga jenis rata-rata bergerak yang berbeda: rata-rata bergerak sederhana (SMA), rata-rata bergerak berbobot (WMA), dan rata-rata bergerak indeks (EMA). Strategi ini menggunakan Bollinger Bands untuk menetapkan jalur harga, yang masing-masing berfungsi sebagai sinyal untuk posisi terbuka dan tenang. Strategi ini menggunakan Bollinger Bands untuk menetapkan jalur harga, yang masing-masing berfungsi sebagai sinyal untuk posisi terbuka dan tenang.
Robot proyek sekolah Marina Parfenova adalah strategi perdagangan kuantitatif yang didasarkan pada moving average dan Bollinger Bands. Strategi ini berusaha untuk mendapatkan keuntungan dengan menangkap tren pasar, sementara dengan Bollinger Bands mengendalikan pengunduran diri. Logika strategi sederhana, jelas, luas, dan parameter dapat disesuaikan secara fleksibel sesuai dengan karakteristik pasar. Namun, dalam aplikasi praktis, masih perlu memperhatikan masalah seperti pasar yang bergoyang, situasi ekstrem, optimasi parameter, dan lebih lanjut menyempurnakan manajemen uang dan aturan manajemen posisi.
/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy ("Marina Parfenova School Project Bot", overlay = true)
sma(price, n) =>
result = 0.0
for i = 0 to n - 1
result := result + price [i] / n
result
wma(price, n) =>
result = 0.0
sum_weight = 0.0
weight = 0.0
for i = 0 to n - 1
weight := n - 1
result := result + price [i]*weight
sum_weight := sum_weight + weight
result/sum_weight
ema(price, n) =>
result = 0.0
alpha = 2/(n + 1)
prevResult = price
if (na(result[1]) == false)
prevResult := result[1]
result := alpha * price + (1 - alpha) * prevResult
/// Настройки
n_slow = input.int(50, "Период медленной скользящей средней", step=5)
n_fast = input.int(4, "Период быстрой скользящей средней")
n_deviation = input.int(30, "Период среднеквадратического отклонения", step=5)
k_deviation_open = input.float(1.2, "Коэффициент ширины коридора покупки", step=0.1)
k_deviation_close = input.float(1.6, "Коэффициент ширины коридора продажи", step=0.1)
// ----- Линии индикаторов -----
// Медленная скользящая
sma = sma(close, n_slow)
plot(sma, color=#d3d3d3)
// Линии Боллинджера, обозначающие коридор цены
bollinger_open = k_deviation_open * ta.stdev(close, n_deviation)
open_short_line = sma + bollinger_open
plot(open_short_line, color=#ec8383)
open_long_line = sma - bollinger_open
plot(open_long_line, color=#6dd86d)
bollinger_close = k_deviation_close * ta.stdev(close, n_deviation)
close_short_line = sma + bollinger_close
plot(close_short_line, color=#e3e3e3)
close_long_line = sma - bollinger_close
plot(close_long_line, color=#e3e3e3)
// Быстрая скользящая
ema = ema(close, n_fast)
plot(ema, color = color.aqua, linewidth = 2)
// ----- Сигналы для запуска стратегии -----
// если ema пересекает линию open_short сверху вниз - сигнал на создание ордера в short
if(ema[1] >= open_short_line[1] and ema < open_short_line)
strategy.entry("short", strategy.short)
// если ema пересекает линию open_long снизу вверх - сигнал на создание ордера в long
if(ema[1] <= open_long_line[1] and ema > open_long_line)
strategy.entry("long", strategy.long)
// если свеча пересекает верхнюю линию коридора продажи - закрываем все long-ордера
if (high >= close_short_line)
strategy.close("long")
// если свеча пересекает нижнюю линию коридора продажи - закрываем все short-ордера
if (low <= close_long_line)
strategy.close("short")