アジアセッション 高低ブレイク戦略

作者: リン・ハーンチャオチャン, 日付: 2024-03-29 17:12:49
タグ:

img

概要

この戦略の主なアイデアは,アジアセッションの高低点をブレイクポイントとして利用することです.欧州とアメリカの市場が開かれた数時間以内に,価格がアジアセッションの高値を超えると,それは長引きます.アジアセッション低値を下回ると,それは短引きます.ストップ・ロストとテイク・プロフィートはリスクを制御するために設定されています.この戦略は,1日1回の取引のみを開きます.最大100,000の同時ポジションです.

戦略原則

  1. アジアセッションの取引時間を決定します.ユーザーは開始と終了時間をカスタマイズできます.
  2. アジアセッションでは,その日の最高値と最低値を記録します.
  3. 特定の時間 (ユーザーによって定義されたオフセット時間) に,欧州とアメリカの市場が開いている後,価格がアジアセッションの高値を超えると,ロングで,アジアセッション低値を下回るとショートになります.
  4. Stop loss と take profit を設定します.ストップ・ロスト と take profit のポイント数はカスタマイズできます.
  5. "日に"つの新取引のみを開いて 最大100,000の同時取引をします
  6. ポジションが既に開かれた場合,新しい取引は開かれません.

利点分析

  1. アジアセッションの比較的穏やかな特徴を活用し,アジアセッションの高低点を突破点として利用することで,ヨーロッパとアメリカのセッションのトレンド機会をよりうまく把握することができます.
  2. ストップ・ロスを設定して 利益を得ることで リスクを効果的に制御し 収益性の高い取引を 実行させ 収益性のない取引の損失を 迅速に止めることができます
  3. 取引を1日1回に制限し,最大数の同時取引を制限することで,過剰な取引や過度の資金使用を防ぐことができます.
  4. ユーザは,アジアセッション時間や自分のニーズに応じてオフセット時間などのパラメータを柔軟に設定できます.

リスク分析

  1. アジアセッションの高低は,その日の本当の高低ではないかもしれない.欧州とアメリカの市場が突破した後,彼らはすぐに引き戻し,損失を引き起こす可能性があります.
  2. 固定ポイントストップ損失と利益を取ることは,市場の大きな変動に対応できない可能性があります.時にはストップ損失が早すぎる場合があり,時には利益を取ることが早すぎる場合もあります.
  3. 傾向が明らかでない場合や市場の変動が高い場合,戦略は頻繁に開場および停止損失を経験する可能性があります.

最適化方向

  1. ストップ・ロスのポイントを動的に調整し,異なる市場状況に適応するためにATRなどの変動指標に基づいて利益を取ることを検討する.
  2. MAのようなトレンド判断指標を追加し,大きなトレンドが上昇するときにだけロングで,成功率を向上させるためにダウンするときにショートします.
  3. 異なる時間帯に異なるパラメータを設定することを検討してください.例えば,ヨーロッパとアメリカの取引セッションの開始時により小さなストップ・ロスを使用し,トレンドが明らかになるとストップ・ロスを増加させ,利益を得ることです.

概要

この戦略は,アジアセッションの高低点をトレードブレイクポイントとして利用し,欧州およびアメリカの市場における明らかなトレンドを持つ品種で使用するのに適しています.しかし,固定ポイントストップ損失と利益と標準ブレイクアウトエントリー方法にもいくつかの制限があります.いくつかの動的およびトレンドベースの指標を導入することで,戦略はより良い結果を得るために最適化することができます.


/*backtest
start: 2024-02-27 00:00:00
end: 2024-03-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Asia Session", overlay=true)

var hourSessionStart = input(19, "Asia session start hour", minval=0, maxval=23)
var hourSessionStop  = input(1, "Asia session end hour", minval=0, maxval=23)
var offsetHours = input(3, "Offset hours after Asia session end")

var float hi              = na
var float lo              = na
var float plotHi          = na
var float plotLo          = na

var bool  inSession       = na
var bool  enteringSession = na
var bool  exitingSession  = na

inSession       := (hour >= hourSessionStart or hour < hourSessionStop)
enteringSession := inSession and not inSession[1]
exitingSession  := not inSession and inSession[1]

if enteringSession
    plotLo := na
    plotHi := na

if inSession
    lo := min(low,  nz(lo, 1.0e23))
    hi := max(high, nz(hi))

if exitingSession
    plotLo := lo
    plotHi := hi
    lo     := na
    hi     := na

bgcolor(inSession ? color.blue : na)

plot(plotLo, "Asia session Low",  color.red,   style=plot.style_linebr)
plot(plotHi, "Asia session High", color.green, style=plot.style_linebr)

// Implementazione delle condizioni di entrata
var float asiaSessionLow = na
var float asiaSessionHigh = na
var int maxTrades = 100000 // Impostiamo il massimo numero di operazioni contemporanee
var int tradesOpened = 0 // Variabile per tenere traccia del numero di operazioni aperte
var bool tradeOpened = false
var bool operationClosed = false // Nuova variabile per tenere traccia dello stato di chiusura dell'operazione

// Calcolo del range asiatico
if (inSession)
    asiaSessionLow := lo
    asiaSessionHigh := hi

// Apertura di un solo trade al giorno
if (enteringSession)
    tradeOpened := false

// Condizioni di entrata
var float stopLoss = 300 * syminfo.mintick
var float takeProfit = 300 * syminfo.mintick

if (not tradeOpened and not operationClosed and close < asiaSessionLow and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
    strategy.entry("Buy", strategy.long)
    tradeOpened := true
    tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte

if (not tradeOpened and not operationClosed and close > asiaSessionHigh and tradesOpened < maxTrades and hour >= hourSessionStop + offsetHours)
    strategy.entry("Sell", strategy.short)
    tradeOpened := true
    tradesOpened := tradesOpened + 1 // Incrementiamo il contatore delle operazioni aperte

// Impostazione dello stop loss e del take profit
strategy.exit("Stop Loss / Take Profit", "Buy", stop=close - stopLoss, limit=close + takeProfit)
strategy.exit("Stop Loss / Take Profit", "Sell", stop=close + stopLoss, limit=close - takeProfit)


もっと