カンドル・クローズ・戦略で買い/売る

作者: リン・ハーンチャオチャン,日付: 2024-01-08 11:11:18
タグ:

img

概要

この戦略は,現在のキャンドルと前のキャンドルの閉じる価格を比較することで,買い/売る信号を誘発します.

具体的には,現在のキャンドルが前のキャンドルの最高価格を超えて閉じる場合,購入信号が起動します.現在のキャンドルが前のキャンドルの最低価格を下回ると,販売信号が起動します.

戦略の論理

  1. 指定された時間枠の過去最高値と最低値を取得する (例えば,毎日,毎時間)
  2. ストップ・ロスの距離を計算し,利益を取ります.
    • ストップ損失距離 = 前回のキャンドルの最高値 - 前回のキャンドルの最低値
    • リスク/リターン比: 3 (リスク/リターン比: 3)
  3. 現在の閉店と以前の高低間の関係を決定する
    • 現在の閉店 > 前回のキャンドル最高値なら,購入信号を触発します
    • 現在の閉店 < 前回のキャンドル 最低値なら,売り信号を触発します
  4. ストップ・ロスを設定し,エントリー後に利益を取ります.
    • 購入後,前のキャンドル最低値でストップ損失を設定します - ストップ損失距離,前のキャンドル最高値で利益を + 利益距離を取ります
    • 販売後,前のキャンドル最高値でストップ損失 +ストップ損失距離を設定し,前のキャンドル最低値で利益を - 利益距離を取ります

この戦略の基本的取引論理は 上記です

利点分析

  • シンプルで明快な戦略アイデア,理解し実行しやすい
  • トレンド方向を決定するためにキャンドルスタイク情報を使用
  • リスクをコントロールするためのストップ・ロスト・アンド・テイク・プロフィート・メカニズムがある

リスク分析

  • 一つの時間枠に 基づく判断は より多くの誤った信号を生む可能性があります
  • ボリューム変化や不安定性などの要因を考慮しない
  • ストップ・ロスの設定と 利益の設定は不適切であり, 幅も狭すぎると どちらも危険です

オプティマイゼーションの方向性

  • 音量,移動平均などなど,入力信号を確認するためにより多くの要素を組み合わせます.
  • より合理的なストップ損失と十分な利益を得るためにストップ損失と利益を取ったアルゴリズムを最適化
  • パラメータ調節は,異なる製品で必要になる可能性があります.
  • より長い時間枠をテストできます

概要

戦略のアイデアは,全体的にシンプルで明確で,トレンド方向を決定するためにキャンドルストック閉値を使用し,リスクを制御するためにストップ・ロスト/テイク・プロフィートも持っており,株式や暗号取引のための基本的な戦略として機能することができます.しかし,単一のタイムフレームに基づいて判断すると,より簡単に偽信号を生成する傾向があります.戦略パフォーマンスを向上させるためにより多くの要因と調整パラメータを組み込むことで改善の余地があります.


/*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")







もっと