Kライン終値に基づく売買戦略


作成日: 2024-01-08 11:11:18 最終変更日: 2024-01-08 11:11:18
コピー: 2 クリック数: 1039
1
フォロー
1617
フォロワー

Kライン終値に基づく売買戦略

概要

この戦略は,現在のK線と前のK線の閉盘価格を比較して,買入または売却のシグナルを誘発するかどうかを判断する.

具体的には,現在のK線の閉店価格が上位K線の最高価格より高い場合,買入シグナルが誘発され,現在のK線の閉店価格が上位K線の最低価格より低い場合,売り出札シグナルが誘発される.

戦略原則

  1. 指定された時間帯 (日線,時線など) の歴史上の最高値と最低値を取得します.
  2. 止損距離と停止距離を計算する
    • ストップダスト距離 = 上のKラインの最高値 - 上のKラインの最低値
    • 停止距離 = 止損距離 * 3 (止損距離を1:3に設定する)
  3. 現在のKラインの閉店価格と前Kラインの最高値と最低値との関係を判断する
    • Kラインの最高値よりも高い値で,購入シグナルが発信されます.
    • K線上の最低値より低い値で, Sellシグナルを発動します.
  4. 入力後に停止と停止を設定する
    • 購入後,ストップ・ロスは上Kラインの最低価格 - ストップ・ロスの距離,ストップ・ストップは上Kラインの最高価格 + ストップ・ストップの距離に設定します.
    • 販売後,ストップ・ロスは上Kラインの最高価格 + ストップ・ロスの距離,ストップ・ストップは上Kラインの最低価格 - ストップ・ストップの距離

この戦略の基本的な取引の論理はこうです.

優位分析

  • 戦略は明確で簡潔で,実行は簡単です.
  • K線情報を使ってトレンドの方向を判断する
  • リスク制御の停止停止メカニズム

リスク分析

  • タイムサイクルK線形状のみに基づいて判断すると,より多くの偽信号が生成される可能性があります.
  • 取引量や変動率などの要素は考慮されていません
  • ストップダメージ・ストップの設定が不適切で,距離が大きすぎても小さすぎても危険です.

最適化の方向

  • 取引量,平均線などの要素を組み合わせて入場シグナルを確認します.
  • ストップ・ロスを最適化して,より合理的で十分なストップ・ロスを実現する
  • 異なる品種のパラメータの設定は調整が必要になる
  • 長い周期でテストできます.

要約する

この戦略の全体的な考え方はシンプルで明確で,K線閉盘価格情報を活用してトレンド方向を判断し,同時にストップ・ストップ・コントロールのリスクを設定することで,株式・仮想通貨取引の基本戦略として使用できます。しかし,単一の時間周期のK線形状のみに基づいて,偽信号を生成しやすいため,最適化の余地はまだ十分であり,さらに多くの要因とパラメータの調整を考慮して,戦略の効果を向上させる必要があります。

ストラテジーソースコード
/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy/Sell on Candle Close", overlay=true)

var float prevLowest = na
var float prevHighest = na
var float slDistance = na
var float tpDistance = na

// Specify the desired timeframe here (e.g., "D" for daily, "H" for hourly, etc.)
timeframe = "D"

// Fetching historical data for the specified timeframe
pastLow = request.security(syminfo.tickerid, timeframe, low, lookahead=barmerge.lookahead_on)
pastHigh = request.security(syminfo.tickerid, timeframe, high, lookahead=barmerge.lookahead_on)

if bar_index > 0
    prevLowest := pastLow[1]
    prevHighest := pastHigh[1]

currentClose = close

if not na(prevLowest) and not na(prevHighest)
    slDistance := prevHighest - prevLowest
    tpDistance := 3 * slDistance // Adjusted for 1:3 risk-reward ratio

// Buy trigger when current close is higher than previous highest
if not na(prevLowest) and not na(prevHighest) and currentClose > prevHighest
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy TP/SL", "Buy", stop=prevLowest - slDistance, limit=prevHighest + tpDistance)

// Sell trigger when current close is lower than previous lowest
if not na(prevLowest) and not na(prevHighest) and currentClose < prevLowest
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell TP/SL", "Sell", stop=prevHighest + slDistance, limit=prevLowest - tpDistance)

plot(prevLowest, color=color.blue, title="Previous Lowest")
plot(prevHighest, color=color.red, title="Previous Highest")