|
Nitra Slovakia
Posts: 3 since Feb 2014
Thanks Given: 2
Thanks Received: 0
|
I turned off : Update on every tick
I compile the code in this form :
Inputs:
NameOfList("myHistList"),
RegionsToKeep("EUR;USD;GBP"),
ChopUpStrings(False),
Ticks_OffSet(8),
HighImpact_Color(Red),
MediumImpact_Color(yellow),
LowImpact_Color(cyan),
DisplayArrow(True),
Arrow_Size(5),
DisplayLine(True),
Line_Width(1),
Line_Style(2),
DisplayText(True),
Text_FontSize(10),
Text_FontName("Lucida Sans Typewriter"),
Text_FontColor(white);
Variables:
tickOffSet( Ticks_OffSet * MinMove), //(Power(10, Round(Log(PriceScale) / Log(10), 0)) / MinMove) ),
tickSize(MinMove / PriceScale),
dtEconEvent(0), prevDtEconEvent(0), dtNextBar(0), dtPrevBar(0), indexNumber(1),
firstDate(0), firstTime(0), arrowID(0), textID(0), tlID(0), loopDoneForBar(False), impactOfEvent(0),
listLength(0),
x(0), y(0), z(0);
if (CurrentBar = 1) then begin
firstDate = Date;
firstTime = Time_s;
end;
Arrays:
barPrice[](0), barDT[](0), barPriceLow[](0);
once cleardebug;
// Collect data
if (BarStatus(1) = 2) then begin
x = Array_GetMaxIndex(barPrice);
Array_SetMaxIndex(barPrice, x + 1);
Array_SetMaxIndex(barDT, x + 1);
Array_SetMaxIndex(barPriceLow, x + 1);
barPrice[x+1] = Highest(High, 10); //High;
if (x > 10) then
barPrice[x+1-10] = Highest(High, 20);
barDT[x+1] = ELDateToDateTime(Date) + ELTimeToDateTime_s(Time_s);
barPriceLow[x+1] = Low - (MinMove * 2);
end; //: Data collection
if (LastBarOnChart_s = True) and (BarStatus(1) = 2) and (GetAppInfo(aiRealTimeCalc) = 0) then begin
// Generate economic events list
once begin
value1 = EE.GetHistoricalEvents(NameOfList, firstDate, Date);
// value1 = EE.GetFutureEvents(NameOfList);
value1 = EE.KeepTimeRange(NameOfList, SessionStartTime(0, DayOfWeek(Date)), SessionEndTime(0, DayOfWeek(Date)));
value1 = EE.KeepRegions(NameOfList, RegionsToKeep); // Only keep the specified regions in the list
value1 = EE.RemoveImpact(NameOfList, 0); // Remove all events with impact 0 (i.e. bank holiday)
// Note: uncomment the line below to see which Economic Events are in the list after the filtering functions. (For debugging purposes)
// EE.PrintToOutputLog(NameOfList);
end;
Print("Lengt of bar array: ", array_getmaxindex(barPrice), " and barDt: ", array_getmaxindex(barDT));
dtEconEvent = EE.DateTimeOfEvent(NameOfList, indexNumber);
listLength = EE.GetMaxIndex(NameOfList);
z = 1;
y = 1;
value1 = 1;
value2 = 1;
// Loop through data
for x = 1 to Array_GetMaxIndex(barDT) - 1 begin
// if there are multiple economic events on this time
for z = 0 to 9 begin
if (IntPortion(barDT[x]) = IntPortion(dtEconEvent)) and (barDT[x-1] < dtEconEvent) and (barDT[x+1] > dtEconEvent) then begin
Print("PrevBar: ", DateTimeToString(barDT[x-1]), " Event: ", DateTimeToString(dtEconEvent), " next bar: ", DateTimeToString(barDT[x+1]));
Print(Spaces(2), "Date of event: ", FormatDate("dd-MM-yy", ELDateToDateTime(EE.DateList(NameOfList, indexNumber))),
" Time of event: ", FormatTime("HH:mm:ss", ELTimeToDateTime(EE.TimeList(NameOfList, indexnumber))),
" name of event: ", EE.EventList(NameOfList, indexNumber));
// Plot
if (z = 0) then begin
if (DisplayText = True) then
textID = Text_New_s(EE.DateList(NameOfList, indexNumber),
EE.TimeList(NameOfList, indexNumber) * 100,
barPrice[x] + (tickSize * 2) + Arrow_Size,
IffString(ChopUpStrings = True,
StrChopUp(Text(EE.EventList(NameOfList, indexNumber), " (", EE.RegionList(NameOfList, indexNumber), ")")),
Text(EE.EventList(NameOfList, indexNumber), " (", EE.RegionList(NameOfList, indexNumber), ")")
));
if (DisplayArrow = True) then
arrowID = Arw_New_s(EE.DateList(NameOfList, indexNumber),
EE.TimeList(NameOfList, indexNumber) * 100,
barPrice[x], True);
if (DisplayLine = True) then
tlID = TL_New_s(EE.DateList(NameOfList, indexNumber),
EE.TimeList(nameOfList, indexNumber) * 100,
barPriceLow[x],
EE.DateList(NameOfList, indexNumber),
EE.TimeList(nameOfList, indexNumber) * 100,
barPriceLow[x] * 0.85);
end //: z = 0
else if (DisplayText = True) then
value1 = Text_SetString(textID, Text(Text_GetString(textID), NewLine, "&", NewLine,
IffString(ChopUpStrings = True,
StrChopUp(Text(EE.EventList(NameOfList, indexNumber), " (", EE.RegionList(NameOfList, indexNumber), ")")),
Text(EE.EventList(NameOfList, indexNumber), " (", EE.RegionList(NameOfList, indexNumber), ")"))
));
// Formatting
value6 = Text_SetSize(textID, Text_FontSize);
value6 = Text_SetFontName(textID, Text_FontName);
value6 = Text_SetStyle(textID, 0, 1);
value6 = Text_SetColor(textID, Text_FontColor);
value7 = Arw_SetSize(arrowID, Arrow_Size);
value8 = TL_SetStyle(tlID, Line_Style);
value8 = TL_SetSize(tlID, Line_Width);
impactOfEvent = EE.ImpactList(NameOfList, indexNumber);
switch (impactOfEvent) begin
case 1: // low impact
value5 = Arw_SetColor(arrowID, LowImpact_Color);
value5 = TL_SetColor(tlID, LowImpact_Color);
case 2: // medium
value5 = Arw_SetColor(arrowID, MediumImpact_Color);
value5 = TL_SetColor(tlID, MediumImpact_Color);
case 3: // high
value5 = Arw_SetColor(arrowID, HighImpact_Color);
value5 = TL_SetColor(tlID, HighImpact_Color);
end; //: ImpactOfEvent switch
indexNumber = indexNumber + 1;
dtEconEvent = IFF(indexNumber > listLength, 9999999, EE.DateTimeOfEvent(NameOfList, indexNumber));
Print(Spaces(3), "Next econ event = ", DateTimeToString(dtEconEvent));
// value2 = value2 + 1;
end else if (IntPortion(barDT[x]) > IntPortion(dtEconEvent)) then begin
Print("BarDT: ", DateTimeToString(BarDT[x]), " econ event: ", DateTimeToString(dtEconEvent), " - happened on a market closed day");
indexNumber = indexNumber + 1;
dtEconEvent = EE.DateTimeOfEvent(NameOfList, indexNumber);
// value1 = value1 + 1;
end;
end; //: z loop
end; //: x loop
// Print("How many economic events missed? ", value1);
// Print("How many economic events plotted? ", value2);
loopDoneForBar = False;
while (loopDoneForBar = False) begin
// If the economic event doesn't happen on this day -> skip
// that way, when the market is closed when economic events happened, the list moves on
if (IntPortion(barDT[x]) > IntPortion(dtEconEvent)) then begin
y = y + 1;
Print(Spaces(2), "How many days skipped? ", NumToStr(y, 0));
Print(Spaces(4), "Date: ", FormatDate("dd-MM-yyyy", barDT[x]),
" event date: ", FormatDate("dd-MM-yyyy", dtEconEvent));
indexNumber = indexNumber + 1;
if (indexNumber <= listLength) then begin
dtEconEvent = EE.DateTimeOfEvent(NameOfList, indexNumber);
// Print("indexnum: ", NumToStr(indexNumber, 0));
end;
loopDoneForBar = True;
end else
if (barDT[x-1] < dtEconEvent) and (barDT[x+1] > dtEconEvent) then begin
z = z + 1;
Print("How many events are there according to the code? ", NumToStr(z, 0),
" And what is x? ", NumToStr(x, 0));
// Print(Spaces(2), "dt: ", NumToStr(dtEconEvent, 10), " indexNumber: ", indexNumber,
// " Date: ", FormatDate("dd-MM-yyyy", dtEconEvent), " time: ", ToTime_DT(dtEconEvent));
// Draw text & arrows
textID = Text_New_s(EE.DateList(NameOfList, indexNumber), EE.TimeList(NameOfList, indexNumber) * 100, barPrice[x] + tickOffSet,
Text(EE.EventList(NameOfList, indexNumber), "(", EE.RegionList(NameOfList, indexNumber), ")"));
arrowID = Arw_New_s(EE.DateList(NameOfList, indexNumber), EE.TimeList(NameOfList, indexNumber),
barPrice[x] + 0.33 * tickOffSet, True);
indexNumber = indexNumber + 1;
dtEconEvent = EE.DateTimeOfEvent(NameOfList, indexNumber);
if (dtEconEvent = prevDtEconEvent) then
loopDoneForBar = False
else
loopDoneForBar = True;
end else
loopDoneForBar = True;
end;
//prevDtEconEvent = dtEconEvent;
Print("length of list? : ", EE.GetMaxIndex(NameOfList));
end; //: LastBarOnChart_s check
I got this error message : attached screenshot
|