
この戦略は,複数の技術指標に基づいた総合的な取引システムであり,MACD,RSI,ブリン帯,ATRなどの複数の技術指標を組み合わせることで,市場トレンドと逆転の機会を捕捉します.この戦略は,ダイナミックな止損と利益のスキームを採用し,市場変動に合わせて取引パラメータを調整し,収益を保証しながらリスクを効果的に制御します.この戦略は,過去3ヶ月のテスト期間中に676.27%の収益率を達成し,市場適応性を良好に示しました.
戦略は,次のものを含む,多層の技術指標の検証システムを採用しています.
取引ロジックは,トレンド追跡と反転取引の2つの戦略を融合し,複数の検証によって取引の正確性を高めます.システムは,市場のリアルタイム波動性に応じて,自動的に止損と利益のレベルを調整し,リスク管理のダイナミックな最適化を実現します.
リスク管理の提案:
パラメータ最適化:
信号システムの改善:
リスク管理の最適化:
技術の改善:
この戦略は,複数の技術指標の組み合わせとダイナミックなリスク管理システムにより,優れた取引効果を達成した.一定の撤回リスクがあるにもかかわらず,厳格なリスク管理と継続的な最適化により,戦略は市場適応性と安定性を良好に示した.この戦略を使用する際に,トレーダーは,リスク管理制度を厳格に実施し,市場の変化に合わせてパラメータを調整することをお勧めする.
/*backtest
start: 2024-11-21 00:00:00
end: 2024-11-28 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("XAUUSD STRATEGY 10MIN", overlay=true)
// Spread Adjustment (38-point spread)
spread = 38 * syminfo.mintick
// MACD Calculation
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
macdBuy = ta.crossover(macdLine, signalLine)
macdSell = ta.crossunder(macdLine, signalLine)
// RSI Calculation
rsi = ta.rsi(close, 14)
rsiOverbought = rsi > 65
rsiOversold = rsi < 35
// Bollinger Bands Calculation
basis = ta.sma(close, 20)
dev = 2 * ta.stdev(close, 20)
upperBand = basis + dev
lowerBand = basis - dev
// ATR Calculation for Volatility-Based Stop Loss and Take Profit
atr = ta.atr(14)
stopLoss = 3 * atr
takeProfit = 5 * atr
// Variables to track entry price and line
var line entryLine = na
var int tradeNumber = 0
var string tradeType = ""
var string tradeSignalComment = ""
// Buy Condition
buyCondition = (macdBuy or rsiOversold or close < lowerBand)
// Sell Condition
sellCondition = (macdSell or rsiOverbought or close > upperBand)
// Strategy Entry and Alerts
if (buyCondition and strategy.opentrades == 0) // Open a new buy trade
// Remove the previous entry line if it exists
// if not na(entryLine)
// line.delete(entryLine)
// Adjust the entry price by adding the spread (ask price)
buyPrice = close + spread
// Enter a new buy trade at the ask price, and close it with the bid price
strategy.entry("Buy", strategy.long, stop=buyPrice - stopLoss, limit=buyPrice + takeProfit, comment="Enter buy $" + str.tostring(buyPrice))
tradeNumber := tradeNumber + 1 // Increment trade number
tradeType := "Entry Long"
tradeSignalComment := "Enter buy trade"
// Plot new dotted entry line for the current trade
// entryLine := line.new(bar_index, buyPrice, bar_index + 50, buyPrice, width=1, color=color.green, style=line.style_dotted)
// Send alert for the buy entry
alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
"Signal: " + tradeType + " - " + tradeSignalComment + "\n" +
"Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
"Price: " + str.tostring(buyPrice), alert.freq_once_per_bar_close)
if (sellCondition and strategy.opentrades == 0) // Open a new sell trade
// Remove the previous entry line if it exists
// if not na(entryLine)
// line.delete(entryLine)
// Adjust the entry price by subtracting the spread (bid price)
sellPrice = close - spread
// Enter a new sell trade at the bid price, and close it with the ask price
strategy.entry("Sell", strategy.short, stop=sellPrice + stopLoss, limit=sellPrice - takeProfit, comment="Enter sell $" + str.tostring(sellPrice))
tradeNumber := tradeNumber + 1 // Increment trade number
tradeType := "Entry Short"
tradeSignalComment := "Enter sell trade"
// Plot new dotted entry line for the current trade
// entryLine := line.new(bar_index, sellPrice, bar_index + 50, sellPrice, width=1, color=color.red, style=line.style_dotted)
// Send alert for the sell entry
alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
"Signal: " + tradeType + " - " + tradeSignalComment + "\n" +
"Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
"Price: " + str.tostring(sellPrice), alert.freq_once_per_bar_close)
// Exit conditions and alerts
if (strategy.position_size > 0 and sellCondition) // Close buy when sell conditions met
// Adjust the exit price by subtracting the spread (bid price)
exitPrice = close - spread
strategy.close("Buy", comment="Exit buy $" + str.tostring(exitPrice))
// Remove the entry line when the trade is closed
// if not na(entryLine)
// line.delete(entryLine)
// Send alert for the buy exit
tradeType := "Exit Long"
tradeSignalComment := "Exit buy trade"
alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
"Signal: " + tradeType + " - " + tradeSignalComment + "\n" +
"Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
"Price: " + str.tostring(exitPrice), alert.freq_once_per_bar_close)
if (strategy.position_size < 0 and buyCondition) // Close sell when buy conditions met
// Adjust the exit price by adding the spread (ask price)
exitPrice = close + spread
strategy.close("Sell", comment="Exit sell $" + str.tostring(exitPrice))
// Remove the entry line when the trade is closed
// if not na(entryLine)
// line.delete(entryLine)
// Send alert for the sell exit
tradeType := "Exit Short"
tradeSignalComment := "Exit sell trade"
alert("Trade No: " + str.tostring(tradeNumber) + "\n" +
"Signal: " + tradeType + " - " + tradeSignalComment + "\n" +
"Date/Time: " + str.format("{0,date,dd-MM-yyyy HH:mm}", time) + "\n" +
"Price: " + str.tostring(exitPrice), alert.freq_once_per_bar_close)
// Plot Indicators
plot(upperBand, title="Upper Bollinger Band", color=color.blue)
plot(lowerBand, title="Lower Bollinger Band", color=color.blue)