一根K线逆势策略

概览

OneCandleCountertrendStrategy 是一个简单的反趋势策略,它基于对单根K线的分析来做出决策。

主要组件

public class OneCandleCountertrendStrategy : Strategy
{
	private readonly StrategyParam<DataType> _candleType;
}

策略参数

该策略允许自定义以下参数:

  • K线类型 - 要使用的K线类型(默认5分钟)

策略初始化

OnStarted2 方法中,创建了K线订阅并准备了可视化:

protected override void OnStarted2(DateTime time)
{
	base.OnStarted2(time);

	// 创建订阅
	var subscription = SubscribeCandles(CandleType);
	
	subscription
		.Bind(ProcessCandle)
		.Start();

	// 在图表上设置可视化
	var area = CreateChartArea();
	if (area != null)
	{
		DrawCandles(area, subscription);
		DrawOwnTrades(area);
	}
}

处理 K线

ProcessCandle 方法在每个完成的K线上被调用,并实现交易逻辑:

private void ProcessCandle(ICandleMessage candle)
{
	// 检查K线是否已完成
	if (candle.State != CandleStates.Finished)
		return;

	// 检查策略是否已准备好交易
	if (!IsFormedAndOnlineAndAllowTrading())
		return;

	// 逆势策略:看跌K线买入,看涨K线卖出
	if (candle.OpenPrice < candle.ClosePrice && Position >= 0)
	{
		// 看涨K线 - 卖出
		SellMarket(Volume + Math.Abs(Position));
	}
	else if (candle.OpenPrice > candle.ClosePrice && Position <= 0)
	{
		// 看跌K线 - 买入
		BuyMarket(Volume + Math.Abs(Position));
	}
}

交易逻辑

  • 卖出信号:当没有做空持仓时出现看涨K线(收盘价高于开盘价)
  • 买入信号:当没有多头持仓时出现看跌K线(收盘价低于开盘价)
  • 每次新交易时,持仓量按当前持仓数量增加

特征

  • 该策略通过 GetWorkingSecurities() 方法自动确定要使用的工具
  • 该策略仅适用于已完成的K线
  • 该策略使用市价单进行建仓
  • 该策略基于单根K线应用了一个简单的反趋势检测逻辑
  • 当图表区域可用时,K线和交易将在图表上显示