Hello,
The goal, on a seconds time frame charts, is to buy the close of a finished 5mn candle, provided this 5mn candle meets several criterias.
Then sell once 1 second close below latest 5mn low.
Here is the code.
Buy doesn't seem to happen at 5mn close and I can't determine why. It seems to buy prematurely.
Why, and how to make sure it buys correctly at 5mn close.
My premise was that with TimeFrameGetPrice I didn't need to compress, but maybe I was wrong:
Filter = 1; // show all bars
SetPositionSize(50, spsShares );
/**************************************************/
/* Trading System
/**************************************************/
timeNow = TimeNum();
firstBarOfDay = Day() != Ref(Day(), -1);
dayHigh = HighestSince( firstBarOfDay, High );
volumeUpToNow = SumSince( firstBarOfDay, V ) + ValueWhen( firstBarOfDay, V );
tradingTime = timeNow >= 040000 AND timeNow <= 092000;
previousDailyClose = TimeFrameGetPrice( "C", inDaily, -1 );
previousDailyHigh = TimeFrameGetPrice( "H", inDaily, -1 );
previous2DailyHigh = TimeFrameGetPrice( "H", inDaily, -2 );
previous3DailyHigh = TimeFrameGetPrice( "H", inDaily, -3 );
changeSinceYesterdayClose = (C-previousDailyClose)/previousDailyClose*100;
//PositionScore = changeSinceYesterdayClose;
previous5mnOpen = TimeFrameGetPrice( "O", in5Minute, -1 );
previous5mnHigh = TimeFrameGetPrice( "H", in5Minute, -1 );
previous5mnLow = TimeFrameGetPrice( "L", in5Minute, -1 );
previous5mnClose = TimeFrameGetPrice( "C", in5Minute, -1 );
previous5mnVolume = TimeFrameGetPrice( "V", in5Minute, -1 );
previous5mnHMinusLMidpoint = (previous5mnHigh - previous5mnLow) / 2;
previous5mnHMinusLThird = (previous5mnHigh - previous5mnLow) / 3;
previous5mnMidpoint = previous5mnLow + previous5mnHMinusLMidpoint;
previous5mThirdFromHight = previous5mnHigh - previous5mnHMinusLThird;
previous5mnPercentFromLowToHigh = (previous5mnHigh-previous5mnLow)/previous5mnLow*100;
fiveMinOpen = TimeFrameGetPrice( "O", in5Minute, 0 );
fiveMinHigh = TimeFrameGetPrice( "H", in5Minute, 0 );
fiveMinLow = TimeFrameGetPrice( "L", in5Minute, 0 );
fiveMinClose = TimeFrameGetPrice( "C", in5Minute, 0 );
fiveMnVolume = TimeFrameGetPrice( "V", in5Minute, 0 );
fiveMnHMinusLMidpoint = (fiveMinHigh - fiveMinLow) / 2;
fiveMnHMinusLThird = (fiveMinHigh - fiveMinLow) / 3;
fiveMnMidpoint = fiveMinLow + fiveMnHMinusLMidpoint;
fiveMThirdFromHight = fiveMinHigh - fiveMnHMinusLThird;
FiveMnPercentFromLowToHigh = (H-fiveMinLow)/fiveMinLow*100;
FiveMnPercentFromOpenToClose = (H-fiveMinOpen)/fiveMinOpen*100;
FiveMnPercentFromOpenToCloseCandleFinished = (fiveMinClose-fiveMinOpen)/fiveMinOpen*100;
AddColumn( FiveMnPercentFromOpenToCloseCandleFinished, "FiveMnPercentFromOpenToCloseCandleFinished" );
AddColumn( fiveMinClose, "fiveMinClose" );
//AddColumn( dayHigh, "dayHigh" );
Buy =
C > 1 AND
tradingTime AND
changeSinceYesterdayClose > 8 AND
FiveMnPercentFromOpenToCloseCandleFinished > 10;
BuyPrice = fiveMinClose;
Sell = C < previous5mnLow;
SellPrice = C;