
この戦略は,主に前日取引の最高価格,最低価格,閉店価格を当日のサポートとレジスタンスとして使用し,レジスタンス値を突破する際に多額で,サポート値をテストする際に空白を空けて,典型的な突破戦略に属します.
コードはまず,サポートレジスタンス値を計算する関数calculateSupportResistanceを定義します.この関数は,その日のサポートレジスタンス値として,前日の取引日の最高価格,最低価格,および終了価格を抽出します.
この関数は,この3つの値位を主論理で呼び出し,図を表示します.
逆算の論理では,閉盘価格が前日の最低価格より低いのに,現在の価格がその最低価格より高いのが突破となるなら,多行する.閉盘価格が前日の最高価格より高いのに,現在の価格がその最高価格より低いのが突破となるなら,空行する.
この突破的なモデルによって,トレンドの判断と取引シグナルの生成が可能である.
対策として
この戦略は全体的に典型的な突破戦略であり,シンプルで直観的なもので,前日取引日のデータから当日のサポートレジスタンスを構築し,その突破を多空に追及する.利点は,実現を理解しやすく,サポートレジスタンスを直接見ることができることである.欠点は,偽突破のリスクが存在し,トレンドの持続性を決定することができないことである.次のステップは,突破の効果を特定し,リスクを制御し,資金管理を最適化するなどから最適化することができる.
/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Support and Resistance with Backtesting", overlay=true)
// Function to calculate support and resistance levels
calculateSupportResistance() =>
highPrevDay = request.security(syminfo.tickerid, "D", high[1], lookahead=barmerge.lookahead_on)
lowPrevDay = request.security(syminfo.tickerid, "D", low[1], lookahead=barmerge.lookahead_on)
closePrevDay = request.security(syminfo.tickerid, "D", close[1], lookahead=barmerge.lookahead_on)
[highPrevDay, lowPrevDay, closePrevDay]
// Call the function to get support and resistance levels
[supResHigh, supResLow, supResClose] = calculateSupportResistance()
// Plotting support and resistance levels
plot(supResHigh, color=color.red, linewidth=2, title="Previous Day High")
plot(supResLow, color=color.green, linewidth=2, title="Previous Day Low")
plot(supResClose, color=color.blue, linewidth=2, title="Previous Day Close")
// Backtesting logic
backtestCondition = close[1] < supResLow and close > supResLow
strategy.entry("Long", strategy.long, when=backtestCondition)
// Plotting buy/sell arrows for backtesting
plotarrow(backtestCondition ? 1 : na, colorup=color.green, offset=-1, transp=0)