資源の読み込みに... 荷物...

連続して3つの下落のキャンドルと2つの移動平均値に基づいた取引戦略

作者: リン・ハーンチャオチャン開催日:2024年5月14日17時30分35秒
タグ:SMASMA200

img

概要

この戦略は,連続して3つの下落のキャンドルと2つの移動平均値に基づいた取引戦略である.戦略の主な考え方は:連続して3つの下落のキャンドルがあり,現在の閉店価格が200日間の移動平均値よりも高くなったとき,ロングポジションを開く.10日間の移動平均値が価格と交差する,または価格が利益を得たり,ストップ・ロスを達成するレベルに達すると,ポジションを閉じる.この戦略は,指定された時間範囲内でのみ実行される.

戦略原則

  1. 連続する下落のキャンドルの数を計算します.閉値が下がると,連続した下落のキャンドルの数は1倍増加します.そうでなければ0にリセットされます.
  2. 10日間の移動平均と 200日間の移動平均を計算します.
  3. 現在の閉店価格が10日間の移動平均値より高いかどうかを決定する.
  4. 入場条件が満たされているか確認します. 3つの連続した下落のキャンドル,現在の時刻が指定範囲内であり,現在の閉場価格が200日間の移動平均値よりも高くなります.
  5. 出口条件が満たされているか確認します. 10日間の移動平均値が価格と交差するか,価格が取利益またはストップロスのレベルに達するか.
  6. 入場条件が満たされ,現在のポジションがない場合,ロングポジションを開く.
  7. 出口条件が満たされ,現在のポジションがある場合,ポジションを閉じる.

戦略 の 利点

  1. 価格動向と移動平均要因を考慮し,動向市場と振動市場の両方の機会を把握することができます.
  2. リスクを効果的にコントロールできる 利得とストップ・ロスのレベルを設定します
  3. 戦略の実行期間を制限し,特定の期間中に過度のリスクを回避します
  4. コードロジックは明確で読みやすいので 分かりやすく最適化できます

戦略リスク

  1. 連続して下落するキャンドルの判断は 単純すぎて 誤った信号を誘発するかもしれません
  2. 利潤とストップロスのレベルを設定するのは 柔軟性が足りず 市場が大きく変動するときに 頻繁に取引したり 機会を逃したりすることがあります
  3. 予期せぬ出来事や 大事なニュース,その他の非従来の要因を考慮しなくて, リスクが追加される可能性があります

戦略の最適化方向

  1. RSIやMACDなどのより技術的な指標を導入することで,より堅牢なシグナル判断ロジックを構築できる.
  2. ATR のような変動指標に基づいて動的得益/停止損失または停止損失を導入することで,得益と停止損失のレベルを最適化する.
  3. 戦略に対する異なるパラメータ設定の影響を調べ,例えば連続する下落のキャンドルの数,移動平均期等を分析し,最適なパラメータ組み合わせを見つけます.
  4. ポジション管理を組み込み,異なる市場環境に基づいてポジションを動的に調整し,資本利用効率を向上させる.

概要

この戦略は,連続的な下落キャンドルと二重移動平均を組み合わせることで,シンプルで理解しやすい取引モデルを構築する.トレンドの機会を把握しながら,戦略は特定のリスク管理措置も設定する.しかし,信号判断とリスク管理の最適化にはさらなる余地がある.より多くの技術指標を導入し,パラメータ設定を最適化し,ダイナミックなテイク/ストップ・ロストとポジション管理を実装することで,戦略の堅牢性と収益性がさらに向上することができる.


/*backtest
start: 2023-05-08 00:00:00
end: 2024-05-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Estrategia de Trading", overlay=true)

// Definir el número de cierres de velas decrecientes consecutivas
var int cierres_decrecientes_consecutivos = 0
num_cierres_decrecientes = input.int(3, title="Número de cierres decrecientes", minval=1)

// Definir el porcentaje de cambio para cerrar la operación
porcentaje_cierre_arriba = input.float(1.5, title="Porcentaje de cierre arriba (%)", step=0.1)
porcentaje_cierre_abajo = input.float(1.0, title="Porcentaje de cierre abajo (%)", step=0.1)

// Definir las medias móviles para el cierre de la operación
periodos_media_movil_cierre = input.int(10, title="Períodos de la media móvil para cierre")
periodos_media_movil_200 = input.int(200, title="Períodos de la media móvil de 200")

// Definir el rango de fechas para la simulación
start_date = timestamp(2024, 1, 1, 0, 0)
end_date = timestamp(2024, 12, 31, 23, 59)

// Calcular la media móvil para el cierre de la operación
sma_cierre = ta.sma(close, periodos_media_movil_cierre)
sma_200 = ta.sma(close, periodos_media_movil_200)

// Calcular si el precio está por encima o por debajo de la media móvil para el cierre de la operación
precio_por_encima_sma_cierre = close > sma_cierre
precio_por_debajo_sma_cierre = close < sma_cierre

// Calcular si se han producido num_cierres_decrecientes consecutivos
if (ta.change(close) < 0)
    cierres_decrecientes_consecutivos := cierres_decrecientes_consecutivos + 1
else
    cierres_decrecientes_consecutivos := 0

es_cierres_consecutivos = cierres_decrecientes_consecutivos >= num_cierres_decrecientes

// Definir condiciones de entrada y salida de la estrategia dentro del rango de fechas y con el precio por encima de la SMA de 200
condicion_entrada = es_cierres_consecutivos and close > sma_200
condicion_cierre_sma = (precio_por_encima_sma_cierre[1] and not precio_por_encima_sma_cierre) or (not precio_por_encima_sma_cierre[1] and precio_por_encima_sma_cierre)

// Calcular precios de salida basados en porcentajes
precio_salida_arriba = strategy.position_avg_price * (1 + porcentaje_cierre_arriba / 100)
precio_salida_abajo = strategy.position_avg_price * (1 - porcentaje_cierre_abajo / 100)

// Ejecutar operación en largo dentro del rango de fechas y con el precio por encima de la SMA de 200
if (condicion_entrada and strategy.opentrades == 0)
    strategy.entry("Long", strategy.long)

// Cerrar operación en largo si se cumple la condición de salida por cambio en el cruce de la media móvil dentro del rango de fechas
if (strategy.position_size > 0 and condicion_cierre_sma)
    strategy.close("Long")

// Cerrar operación en largo si el precio alcanza el porcentaje de cierre arriba o abajo dentro del rango de fechas
strategy.exit("Stop Loss", "Long", limit=precio_salida_arriba, stop=precio_salida_abajo)

// Plot para visualizar la media móvil para el cierre de la operación
plot(sma_cierre, color=color.red)

// Plot para visualizar la SMA de 200
plot(sma_200, color=color.blue)


関連性

もっと