
この戦略は,MACD指数に基づく自動取引システムであり,ダイナミックなストップ・ストップ・ロスの仕組みを組み合わせている.戦略の核心は,MACD線とシグナル線の交差によって取引信号を決定し,百分比の停止,目標の利益,およびストップ・ロスの追跡などのリスク管理機能を統合し,完全な自動取引を実現している.この戦略は,高速と遅い移動平均の差値を使用して,MACD指数を計算し,シグナル線の交差によって市場トレンドの転換点を識別し,それに対応した取引意思決定を行う.
戦略の中核となるロジックには、次の主要な部分が含まれます。
この戦略は,MACD指標のクロスシグナルと完善したリスク管理システムによって,安定した自動取引システムを構築している.一定の最適化余地があるが,基礎の枠組みは既に十分に完善している.継続的な最適化と改善によって,この戦略は,さまざまな市場環境で安定したパフォーマンスを維持できる見込みである.実態での適用では,充分な反測検証をまず行い,特定の市場の特徴に応じてパラメータ設定を調整することが推奨されている.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-01 00:00:00
period: 12h
basePeriod: 12h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © traderhub
//@version=5
strategy("MACD Strategy with Settings", overlay=true)
// Параметры MACD в контрольной панели
fastLength = input.int(12, title="Fast Length", minval=1, maxval=50)
slowLength = input.int(26, title="Slow Length", minval=1, maxval=50)
signalSmoothing = input.int(9, title="Signal Smoothing", minval=1, maxval=50)
// Параметры риска
stopLossPerc = input.float(1, title="Stop Loss (%)", step=0.1) // Стоп-лосс в процентах
takeProfitPerc = input.float(2, title="Take Profit (%)", step=0.1) // Тейк-профит в процентах
trailStopPerc = input.float(1.5, title="Trailing Stop (%)", step=0.1) // Трейлинг-стоп в процентах
// Вычисляем MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing)
// Показываем MACD и сигнальную линию на графике
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.red, title="Signal Line")
hline(0, "Zero Line", color=color.gray)
// Условия для покупки и продажи
longCondition = ta.crossover(macdLine, signalLine) // Покупка при пересечении MACD вверх сигнальной линии
shortCondition = ta.crossunder(macdLine, signalLine) // Продажа при пересечении MACD вниз сигнальной линии
// Расчет стоп-лосса и тейк-профита
var float longStopLevel = na
var float longTakeProfitLevel = na
if (longCondition)
longStopLevel := strategy.position_avg_price * (1 - stopLossPerc / 100)
longTakeProfitLevel := strategy.position_avg_price * (1 + takeProfitPerc / 100)
strategy.entry("Long", strategy.long)
if (strategy.position_size > 0)
// Установка стоп-лосса и тейк-профита
strategy.exit("Take Profit/Stop Loss", "Long", stop=longStopLevel, limit=longTakeProfitLevel, trail_offset=trailStopPerc)
// Закрытие позиции при медвежьем сигнале
if (shortCondition)
strategy.close("Long")
strategy.entry("Short", strategy.short)