protected override void Initialize()
{
if (_htfPeriod > 0)
{
_usesHigherTimeFrame = true;
switch (_htfType)
{
case 1: Add(PeriodType.Second, _htfPeriod); break;
case 2: Add(PeriodType.Minute, _htfPeriod); break;
case 3: Add(PeriodType.Day, _htfPeriod); break;
case 4: Add(PeriodType.Week, _htfPeriod); break;
case 5: Add(PeriodType.Month, _htfPeriod); break;
case 6: Add(PeriodType.Year, _htfPeriod); break;
case 7: Add(PeriodType.Tick, _htfPeriod); break;
case 8: Add(PeriodType.Range, _htfPeriod); break;
case 9: Add(PeriodType.Volume, _htfPeriod); break;
default: _usesHigherTimeFrame = false; break;
}
}
_ema = EMA(13);
_macd = MACD(12,26,9);
SetProfitTarget("", CalculationMode.Ticks, 7);
SetStopLoss("", CalculationMode.Ticks, 10, false);
Add(_ema);
Add(_macd);
CalculateOnBarClose = true;
}
private void MyInitialize()
{
if (_usesHigherTimeFrame)
{
_htfMacd = MACD(BarsArray[1],12,26,9);
_htfEma = EMA(BarsArray[1],26);
}
_initialized = true;
}
protected override void OnBarUpdate()
{
if (!_initialized) MyInitialize();
if (TimeToTrade)
{
DoPlots();
if (!InPosition)
LookForTrade();
if (InPosition)
ManagePosition();
}
else if (InPosition)
FlattenPosition();
}
private void DoPlots()
{
if (BarsInProgress == 0 && _usesHigherTimeFrame)
{
if (_htfTrend == TREND_UP)
BackColor = Color.FromArgb(100, Color.LightGreen);
else if (_htfTrend == TREND_DOWN)
BackColor = Color.FromArgb(100, Color.LightPink);
else
BackColor = Color.FromArgb(100, Color.LightYellow);
}
}
private void LookForTrade()
{
if (_usesHigherTimeFrame)
{
if (BarsInProgress == 1)
{
if (_htfEma[0] > _htfEma[1] && _htfMacd.Diff[0] > _htfMacd.Diff[1])
_htfTrend = TREND_UP;
else if (_htfEma[0] < _htfEma[1] && _htfMacd.Diff[0] < _htfMacd.Diff[1])
_htfTrend = TREND_DOWN;
else
_htfTrend = TREND_NONE;
PrintDebug("HTF trend is " + _htfTrend);
}
}
if (BarsInProgress == 0)
{
if (_ema[0] > _ema[1] && _macd.Diff[0] > _macd.Diff[1])
{
bool buy = true;
if (_usesHigherTimeFrame &&_htfTrend != TREND_UP)
buy = false;
if (buy)
EnterLongLimit(1, GetCurrentAsk() , "");
}
if (_ema[0] < _ema[1] && _macd.Diff[0] < _macd.Diff[1])
{
bool sell = true;
if (_usesHigherTimeFrame &&_htfTrend != TREND_DOWN)
sell = false;
if (sell)
EnterShort(1, GetCurrentAsk() , "");
}
}
}
Comment