Table of Contents

Rule for a Single Candle

Overview

SimpleCandleRulesStrategy is a strategy that demonstrates the use of rules for candles in StockSharp. It tracks candle volumes and logs information when certain conditions are met.

Main Components

// Main components
public class SimpleCandleRulesStrategy : Strategy
{
}

OnStarted Method

Called when the strategy starts:

  • Initializes a subscription to 5-minute candles
  • Establishes rules for processing candles
// OnStarted method
protected override void OnStarted(DateTimeOffset time)
{
    var subscription = new Subscription(TimeSpan.FromMinutes(5).TimeFrame(), Security)
    {
        // ready-to-use candles much faster than compression on fly mode
        // turn off compression to boost optimizer (!!! make sure you have candles)

        //MarketData =
        //{
        //    BuildMode = MarketDataBuildModes.Build,
        //    BuildFrom = DataType.Ticks,
        //}
    };
    Subscribe(subscription);

    var i = 0;
    var diff = "10%".ToUnit();

    this.WhenCandlesStarted(subscription)
        .Do((candle) =>
        {
            i++;

            this
                .WhenTotalVolumeMore(candle, diff)
                .Do((candle1) =>
                {
                    LogInfo($"The rule WhenCandlesStarted and WhenTotalVolumeMore candle={candle1}");
                    LogInfo($"The rule WhenCandlesStarted and WhenTotalVolumeMore i={i}");
                })
                .Once().Apply(this);

        }).Apply(this);

    base.OnStarted(time);
}

Logic

  • The strategy subscribes to 5-minute candles
  • When each candle begins forming, a rule is established
  • The rule triggers when the total volume of the candle exceeds 10% (using a percentage value)
  • When the rule is triggered, information about the candle and counter is added to the log
  • After the first trigger, the rule stops working thanks to the Once() method

Features

  • Demonstrates the use of the WhenCandlesStarted and WhenTotalVolumeMore rules
  • Uses the candle subscription mechanism
  • Shows an example of creating a percentage value through "10%".ToUnit()
  • Shows an example of logging information in a strategy using the LogInfo method
  • Contains commented code for configuring candle building from ticks