この戦略は,主に移動平均値とボリンジャーバンドを活用して市場動向と変動を把握する. 移動平均値の3種類の異なる種類: シンプルムービング平均値 (SMA), 重度の移動平均値 (WMA), 指数関数移動平均値 (EMA) を採用する. 同時に,ボリンジャーバンドを使用して価格チャネルを設定し,上下帯は開閉ポジションのシグナルとして機能する. 価格が上位ボリンジャーバンドを突破するとショートポジションを開く. 下位ボリンジャーバンドを突破するとロングポジションを開く. また,より広いボリンジャーバンドをストップ損失レベルとして設定し,価格がこれらのバンドを突破するとポジションを閉じる. 全体的に,この戦略は,トレンドが浮上すると迅速にポジションを確立し,損失をエスカレートする際に決定的にリスクを削減し,安定したリターンを目指す.
マリーナ・パルフェノワ・スクール・プロジェクト・ボットは,移動平均値とボリンジャー・バンドをベースとした定量的な取引戦略である.ボリンジャー・バンドストップ・ロスのラインを通じて引き下げを制御しながら市場動向を把握することで利益を得ようとする.戦略ロジックはシンプルで直接的で,幅広い用途があり,パラメータは市場の特徴に応じて柔軟に調整することができる.しかし,実用的な応用では,横向市場,極端な条件,パラメータ最適化などの問題には依然として注意を払い,資本とポジション管理規則のさらなる精製が必要である.全体として,この戦略はより堅牢な取引結果を達成するために継続的に最適化および改善できる基本的な定量的な取引フレームワークとして機能することができる.
/*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")