3本の連続した黒いローソク足と二重移動平均線に基づく取引戦略

SMA SMA200
作成日: 2024-05-14 17:30:35 最終変更日: 2024-05-14 17:30:35
コピー: 3 クリック数: 506
1
フォロー
1617
フォロワー

3本の連続した黒いローソク足と二重移動平均線に基づく取引戦略

概要

この戦略は,連続した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)