Syntax
public static int GetTime(this WealthScript obj, int bar)
public static int GetTime(this Bars bars, int bar) // For use when using a non-synchronized Bars object
public int GetTime(int bar)
public int GetTime(Bars bars, int bar) // For use when using a non-synchronized Bars object
Parameter Description
bar | Bar number |
bars | Bars object |
GetTime returns 24-hour time as an integer. Example: 4pm = 1600
Syntax
public static int AddIntegerTime(this int t, int minutes)
public int AddIntegerTime( int minutes )
Parameter Description
t | Integer time e.g. 1600 |
minutes | Minutes to add, e.g. 5. To subtract, pass a negative integer. |
AddIntegerTime adds minutes to an integer time (HHnn) and returns a HHnn time.
Example:
// Legacy Syntax
Utility.AddIntegerTime(1600, -5) returns 1555
// Extension method syntax
int itime = 1600;
itime.AddIntegerTime(-5) returns 1555
itime.AddIntegerTime(120) returns 1800
Syntax
public static int FirstBarofDay(this WealthScript obj, int startDay)
public int FirstBarofDay( int startDay )
Parameter Description
FirstBarofDay returns the chart bar number of the first bar of the startDay. Example: Pass 2 to get the first bar of the second day loaded in the current chart.
Syntax
public static int DaysInPosition(this Position p, int bar)
public int DaysInPosition(int bar)
Parameter Description
bar | Bar number |
p | Position object |
DaysInPosition returns how many trading days have passed since establishing a position using intraday data.
Example:
// Extension method syntax
Position p = LastPosition;
int days = p.DaysInPosition(bar);
Description
Intraday support functions and methods created by Robert Sucher. They are often required for intraday strategies.
GetTime returns 24-hour time as an integer. Example: 4pm = 1600
AddIntegerTime adds minutes to an integer time (HHnn) and returns a HHnn time. Example 1600 - 5 = 1555
FirstBarofDay returns the chart bar number of the first bar of the startDay. Example: Pass 2 to get the first bar of the second day
DaysInPosition returns how many days have passed since establishing a position using intraday data.
Example
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 MOCStrategy : WealthScript
{
/* Sliders
* minTradeBars are the min number of bars before the end of day that an entry is allowed
*/
private StrategyParameter todayCloseTime;
private StrategyParameter minTradeBars;
public MOCStrategy()
{
todayCloseTime = CreateParameter("Close Today", 1600, 1300, 1600, 300);
minTradeBars = CreateParameter("Min Trade Bars", 5, 2, 10, 1);
}
protected override void Execute()
{
int todayClose = todayCloseTime.ValueInt;
int minBarsInTrade = minTradeBars.ValueInt;
int lastChartBar = Bars.Count - 1;
int nextToLastBarTime = todayClose.AddIntegerTime( -Bars.BarInterval );
for(int bar = this.FirstBarofDay( 2 ); bar < Bars.Count - 1; bar++)
{
if( !IsLastPositionActive )
{
if ( bar < lastChartBar - minBarsInTrade )
{
BuyAtLimit(bar + 1, Bars.Low[bar] * 0.995);
}
}
else
{
Position p = LastPosition;
if( (bar == lastChartBar) && (this.GetTime(bar) >= nextToLastBarTime) )
{
SetBarColor( bar, Color.Orange);
ExitAtMarket( bar + 1, p, "Exit at open of last bar");
}
else if ( (bar != lastChartBar) && Bars.IsLastBarOfDay(bar + 1) )
{
SetBarColor( bar, Color.Orange);
ExitAtMarket( bar + 1, p, "Exit at open of last bar");
}
else
{
// other exit logic here
}
}
}
}
}
}
Legacy syntax example:
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
using Community.Components; // Intraday support functions here
/*** Requires installation of Community.Components Extension from www.wealth-lab.com > Extensions ***/
namespace WealthLab.Strategies
{
public class MOCStrategy : WealthScript
{
/* Sliders
* minTradeBars are the min number of bars before the end of day that an entry is allowed
*/
private StrategyParameter todayCloseTime;
private StrategyParameter minTradeBars;
public MOCStrategy()
{
todayCloseTime = CreateParameter("Close Today", 1600, 1300, 1600, 300);
minTradeBars = CreateParameter("Min Trade Bars", 5, 2, 10, 1);
}
protected override void Execute()
{
// Intraday support functions here:
Utility u = new Utility( this );
int todayClose = todayCloseTime.ValueInt;
int minBarsInTrade = minTradeBars.ValueInt;
int lastChartBar = Bars.Count - 1;
int nextToLastBarTime = u.AddIntegerTime( todayClose, -Bars.BarInterval );
for(int bar = u.FirstBarofDay( 2 ); bar < Bars.Count - 1; bar++)
{
if( !IsLastPositionActive )
{
if ( bar < lastChartBar - minBarsInTrade )
{
BuyAtLimit(bar + 1, Bars.Low[bar] * 0.995);
}
}
else
{
Position p = LastPosition;
if( (bar == lastChartBar) && (u.GetTime(bar) >= nextToLastBarTime) )
{
SetBarColor( bar, Color.Orange);
ExitAtMarket( bar + 1, p, "Exit at open of last bar");
}
else if ( (bar != lastChartBar) && Bars.IsLastBarOfDay(bar + 1) )
{
SetBarColor( bar, Color.Orange);
ExitAtMarket( bar + 1, p, "Exit at open of last bar");
}
else
{
// other exit logic here
}
}
}
}
}
}