CooledOff

Modified on 2013/05/11 10:02 by Eugene — Categorized as: Community Components

Syntax


public static bool CooledOff(this WealthScript obj, int bar, int time)

public bool CooledOff(int bar, int time)

Parameter Description

barBar number
timeThe number of bars since last position is exited to inhibit a new entry

Description

This function, created by Dion Kurczek, will cause a Strategy to wait for a certain period of time before entering a new position once the preceding position is closed.

Example

Below is a demo Strategy that shows how to use the function. Drag the StrategyParameter slider to vary the number of bars since last position is exited.

Example using C# extension methods:


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies { public class CooledOffDemo : WealthScript { private StrategyParameter paramBars; public CooledOffDemo() { paramBars = CreateParameter("Delay entry", 20, 1, 50, 1); } protected override void Execute() { for(int bar = 20; bar < Bars.Count; bar++) { if (IsLastPositionActive) SellAtStop( bar+1, LastPosition, Lowest.Series( Low, 20 )[bar] ); else if( this.CooledOff( bar, paramBars.ValueInt ) ) BuyAtStop( bar+1, Highest.Series( High, 20 )[bar] ); } } } }

Legacy syntax example:


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Components; /*** Requires installation of Community.Components Extension from www.wealth-lab.com > Extensions ***/

namespace WealthLab.Strategies { public class CooledOffDemo : WealthScript { private StrategyParameter paramBars; public CooledOffDemo() { paramBars = CreateParameter("Delay entry", 20, 1, 50, 1); } protected override void Execute() { /* Create an instance of the clas that contains the CooledOff function, passing WealthScript as "this" */ PositionHelper ph = new PositionHelper( this ); for(int bar = 20; bar < Bars.Count; bar++) { if (IsLastPositionActive) SellAtStop( bar+1, LastPosition, Lowest.Series( Low, 20 )[bar] ); else if( ph.CooledOff( bar, paramBars.ValueInt ) ) BuyAtStop( bar+1, Highest.Series( High, 20 )[bar] ); } } } }