| Coding Forum Collaborate, receive help, or discuss coding related issues. |
![]() | | Tweet | |
| | #1 | ||
![]() | Reset or Clear Each New Bar I have tried this: if LastBarOnChart and BarStatus( 1 ) = 2 then but nothing displays using this statement. Here is the code that I want to reset each bar.... Code: Ltxt = text_new(date,time,close," "); text_SetLocation(Ltxt,date,CalcTime(time,RightOffset),Close-(txtOff)); text_SetString(Ltxt," "+SEtxt+RightStr(NumtoStr(LoE,Dec),TTrun)); text_SetColor(Ltxt,Locolor); | ||
| |
|
| | #2 | ||
![]() | Re: Reset or Clear Each New Bar Code: if currentbar = 1 then Ltxt = text_new(date,time,close," "); text_SetLocation(Ltxt,date,CalcTime(time,RightOffset),Close-(txtOff)); text_SetString(Ltxt," "+SEtxt+RightStr(NumtoStr(LoE,Dec),TTrun)); text_SetColor(Ltxt,Locolor); ;-)
__________________ Only an idiot would reply to a stupid post | ||
| |
|
| | #3 | ||
![]() | Re: Reset or Clear Each New Bar But this does not seem to work. When I add this nothing plots at all. Perhaps I will provide a little more of my code Code: //-- Intra-bar (Minute) Chart Timer -------------------------
if BarType = 1
then begin
// Grab Computer Time at End-of-Bar and calc end-time
if BarStatus(1) = 2 then
dtEndTime = ComputerDateTime + dtBarTime;
// Calc Time Left and Display
if dtEndTime <> 0
then begin
// Calc Time Left & Pct. Left
dtTimeLeft = dtEndTime - ComputerDateTime;
BarLeftPct = (dtTimeLeft / dtBarTime) * 100;
// Format the text
if DispMode = cDispPct
then
TxtStr = NumToStr(BarLeftPct, 0)+"%"+Pad
else if
DispMode = cDispRaw
then
TxtStr = FormatTime("m:ss", dtTimeLeft)+" "{+Pad};
end
else
TxtStr = "Syncing..."+Pad;
// Display Text
text_setstring(TxtID," < "+ TxtStr+"R:"+NumToStr(Risk,0)+" ["+NumToStr((RiskOffset),0)+"]"+ATxt);
//// Entry Text
Htxt = text_new(date,time,close," ");
text_SetLocation(Htxt,date,CalcTime(time,RightOffset),Close+({2*}txtOff));
text_SetString(Htxt," "+LEtxt+RightStr(NumtoStr(HiE,Dec),TTrun));
text_SetColor(Htxt,hicolor);
Ltxt = text_new(date,time,close," ");
text_SetLocation(Ltxt,date,CalcTime(time,RightOffset),Close-(txtOff));
text_SetString(Ltxt," "+SEtxt+RightStr(NumtoStr(LoE,Dec),TTrun));
text_SetColor(Ltxt,Locolor); | ||
| |
|
| | #4 | ||
![]() | Re: Reset or Clear Each New Bar Quote:
Peter: remove all occurrences of these codes from your indicator: (all TEXT_NEW) Code: Htxt = text_new(date,time,close," "); Ltxt = text_new(date,time,close," "); Code: if currentbar = 1 then
begin
Htxt = text_new(date,time,close," ");
Ltxt = text_new(date,time,close," ");
end; the idea is this: at bar #1, you draw a text object to the chart. bar #1 is somewhere to the left of your chart... but you really don't care where that is. you only draw that once, because currentbar = 1 only happens one time. subsequently when your conditions are triggered, your code reloactes the text object to a new location, and your code reassigns a new value to the text object... when a new condition is triggered again, your code reloactes the text object to a new location... yet again !!! and your code reassigns a new value to the text object...... yet again !!! how come you do not see repeated text objects on your chart? because you have only drew it once.... at bar #1. enjoy !
__________________ Only an idiot would reply to a stupid post Last edited by Tams; 10-28-2009 at 09:18 AM. | ||
| |
|
| | #5 | ||
![]() | Re: Reset or Clear Each New Bar You are a gentleman. When I followed your instructions nothing plotted at all. I believe I understand conceptually what you are saying. Here is the complete code thus far. Code: {=====================================================================
NAME: BarCountdownTimer
TYPE: Indicator
AUTHOR: Bill Conley (AKA Kahuna) - Timer Counter
Peter Brazel - Risk, Bossilator and other features.
OUTPUT:
This countdown timer works on Intrabar, Tick or Volume charts.
It displays the Time, Ticks or Volume remaining in a bar as text
to the right of the last bar and a user defined portion of the
way up the chart (VertTextPct input). It provides an option to
display remaining bar as a percent of the bar interval size. It
changes color from Normal Color (NormColor input) to Alert Color
(AlertColor input) when the bar reaches the Alert level
percent (AlertPct input). A TS alert is also triggered which
the trader can chose to enable via the TS Alerts tab. This
alerts the trader as the bar is ending.
INPUTS:
VertTextPct - Percent of chart window height at which to display timer (Default: 80)
NormColor - Color for normal (non-alert) text display (Default: yellow)
AlertColor - Color for alert text display (Default: red)
AlertPct - Alert when this percentage of the bar remains (Default: 10),
DispMode - Display mode option: 1=Percentage, 2=Time/Ticks/Volume (Default: 2)
COMMENTS:
For use with intrabar, tick and share bar charts only. For Volume
(Sharebar) charts, make sure Volume is set to "Trade Vol" and for
Tick charts set volume to "Tick Count" for proper operation
of indicator.
RELEASE NOTES:
V. 1.0 10/08/09 Initial Version
== Inputs & Variables =================================================}
inputs: RiskDisplaySettings(""),
EntryBar(1), //Risk Calc Entry Bar 1=1 bar back
Dec(4),
Mult(10000), //Multiplier to convert ticks to $
RiskOffset(1), // E.G. 1 Tick above the high to enter long
TextOff(1),
TruncateTxt(2), //Numbers to display for swings. Default=3 e.g. 1.3456 will display 456
LETxt("LE :"),
SETxt("SE :"),
HiColor(Cyan),
LoColor(Magenta),
CounterSettings(""),
VertTextPct(80{0-100}),
RightOffset(1),
NormColor(yellow),
AlertColor(red),
AlertPct(10{0-100}),
DispMode(2 {1=Pct,2=Time/Ticks/Vol})
;
vars: TickSize( MinMove / PriceScale ),
{ IntrabarPersist Bar_Number( 0 ),
IntrabarPersist Bar_Ticks ( 0 ),}
HiE(0),
LoE(0),
Risk(0),
TxtOff(0),
TextID(0),
txt(""),
ATxt(""),
Htxt(-1),
LTxt(-1),
R1T(-1),
TicksLeft(0),
color(0),
TTrun(0),
EB(0),
{Timer}
{ Text Object Vars }
TxtStr(""), // Text String
AlertStr(""), // Alert Text String
TxtID(text_new(date,time,close, " ")), // Text Object Reference
{ Time/Ticks/Vol Vars }
dtEndTime(0), // EndTime for Bar
dtTimeLeft(0), // Time Left in Bar
dtBarTime(0), // Total Time in Bar
BarLeftPct(0), // Percent of Bar Remaining
BarLeftAmt(0), // Bar Remaining in Ticks/Vol
{ Constants }
cDispPct(1), // Option to display Percentages
cDispRaw(2), // Option to display Time/Tick/Vol Values
cMinDayInv(1/1440), // One Min portion of day
Pad(" ") // Pad to right of text display
;
// Other Calcs
TTrun=TruncateTxt;
HiE=High[EB]+(RiskOffset*TickSize);
LoE=Low[EB]-(RiskOffset*TickSize);
TxtOff=(TextOff*TickSize);
Risk=(HiE-LoE)*Mult; {HL*Mult;}
EB = EntryBar;
{== Timer Initialization ===================================================}
once begin
// Check for valid chart
if BarType <> 0 and BarType <> 1 then
RaiseRuntimeError(
"Countdown Timer is only supported on Intrabar, Tick or Volume Charts");
// Check for valid input values
if DispMode <> 1 and DispMode <> 2 then
RaiseRuntimeError("The DispMode input must be set to 1 or 2");
if VertTextPct > 100 or VertTextPct < 0 then
RaiseRuntimeError("The VertTextPct input must be set between 0 and 100");
if AlertPct > 100 or AlertPct < 0 then
RaiseRuntimeError("The AlertPct input must be set between 0 and 100");
// Chart Specific Init
if BarType = 1 then begin // Intrabar Chart
dtBarTime = cMinDayInv * BarInterval;
if DispMode = cDispRaw then
AlertStr = GetSymbolName+" bar has "+NumToStr(BarInterval*60*(AlertPct/100),0)+" seconds remaining"
else
AlertStr = GetSymbolName+" bar has "+NumToStr(AlertPct,0)+"% remaining";
end
else if BarType = 0 then begin // Tick/Vol Chart
if DispMode = cDispRaw then
AlertStr = GetSymbolName+" bar has "+NumToStr(BarInterval*(AlertPct/100),0)+" ticks/vol remaining"
else
AlertStr = GetSymbolName+" bar has "+NumToStr(AlertPct,0)+"% remaining";
end;
end;
{== Timer Calculations ====================================================}
if _LastBarOnChart then begin // Only display in real-time
// Set Text Location from right of chart
//Value2 = Text_FloatLocation(TxtID, VertTextPct);
Value2=Text_SetLocation(TxtID, Date, CalcTime(Time,RightOffset), Close);
{TextID = Text_New(Date, Time, Close, " ");
Text_SetLocation(TextID, Date, CalcTime(Time,RightOffset), Close);
text_SetString(TextID," < "+NumToStr(value1,0)+" R : "+NumToStr(Risk,0)+" ["+NumToStr((RiskOffset),0)+"]"+ATxt);
text_SetColor(TextID,color);}
//Value2=Text_SetLocation(TextID, Date, CalcTime(Time,RightOffset), Close);
//-- Intra-bar (Minute) Chart Timer -------------------------
if BarType = 1
then begin
// Grab Computer Time at End-of-Bar and calc end-time
if BarStatus(1) = 2 then
dtEndTime = ComputerDateTime + dtBarTime;
// Calc Time Left and Display
if dtEndTime <> 0
then begin
// Calc Time Left & Pct. Left
dtTimeLeft = dtEndTime - ComputerDateTime;
BarLeftPct = (dtTimeLeft / dtBarTime) * 100;
// Format the text
if DispMode = cDispPct
then
TxtStr = NumToStr(BarLeftPct, 0)+"%"+Pad
else if
DispMode = cDispRaw
then
TxtStr = FormatTime("m:ss", dtTimeLeft)+" "{+Pad};
end
else
TxtStr = "Syncing..."+Pad;
// Display Text
text_setstring(TxtID," < "+ TxtStr+"R:"+NumToStr(Risk,0)+" ["+NumToStr((RiskOffset),0)+"]"+ATxt);
//// Entry Text
if currentbar = 1 then
begin
Htxt = text_new(date,time,close," ");
Ltxt = text_new(date,time,close," ");
end;
text_SetLocation(Htxt,date,CalcTime(time,RightOffset),Close+({2*}txtOff));
text_SetString(Htxt," "+LEtxt+RightStr(NumtoStr(HiE,Dec),TTrun));
text_SetColor(Htxt,hicolor);
{Ltxt = text_new(date,time,close," ");}
text_SetLocation(Ltxt,date,CalcTime(time,RightOffset),Close-(txtOff));
text_SetString(Ltxt," "+SEtxt+RightStr(NumtoStr(LoE,Dec),TTrun));
text_SetColor(Ltxt,Locolor);
///////
// Trigger Alert / Use Alert Color
if dtEndTime <> 0 and
BarLeftPct < AlertPct
then begin
text_SetColor(TxtID, AlertColor);
Alert(AlertStr);
end
else
text_SetColor(TxtID, NormColor);
end
//-- Tick/Volume Chart Timer -------------------------------
else
if BarType = 0
then begin
// Calc Bar Remaining
BarLeftAmt = BarInterval - Ticks;
BarLeftPct = (BarLeftAmt / BarInterval) * 100;
// Calc Remaining value
if DispMode = cDispPct then
TxtStr = NumToStr(BarLeftPct, 0)+"%"+Pad
else if
DispMode = cDispRaw
then
TxtStr = NumToStr(BarLeftAmt, 0)+" "+Pad;
// Display Text
text_setstring(TxtID," <"+ TxtStr+"R:"+NumToStr(Risk,0)+" ["+NumToStr((RiskOffset),0)+"]"+ATxt);
// LS Entry Txt
if currentbar = 1 then
begin
Htxt = text_new(date,time,close," ");
Ltxt = text_new(date,time,close," ");
end;
{Htxt = text_new(date,time,close," ");}
text_SetLocation(Htxt,date,CalcTime(time,RightOffset),Close+({2*}txtOff));
text_SetString(Htxt," "+LEtxt+RightStr(NumtoStr(HiE,Dec),TTrun));
text_SetColor(Htxt,hicolor);
{Ltxt = text_new(date,time,close," ");}
text_SetLocation(Ltxt,date,CalcTime(time,RightOffset),Close-(txtOff));
text_SetString(Ltxt," "+SEtxt+RightStr(NumtoStr(LoE,Dec),TTrun));
text_SetColor(Ltxt,Locolor);
// Trigger Alert / Use Alert Color
if BarLeftPct < AlertPct
then begin
text_SetColor(TxtID, AlertColor);
Alert(AlertStr);
end
else begin
text_SetColor(TxtID, NormColor);
end;
end;
end; | ||
| |
|
| | #6 | ||
![]() | Re: Reset or Clear Each New Bar Quote:
try simplify your code to isolate the problem... e.g. change CalcTime(Time,RightOffset ) to TIME change Close-(txtOff) to CLOSE change text_SetString(Ltxt," "+SEtxt+RightStr(NumtoStr (LoE,Dec),TTrun)); to text_SetString(Ltxt, " THIS IS A TEST "); ie. test the TEXT_SETLOCATION concept to make sure it works... before adding additional parameters and/or variables.
__________________ Only an idiot would reply to a stupid post | ||
| |
|
| | #7 | ||
![]() | Re: Reset or Clear Each New Bar The code that produces the text works fine except that it does not clear when a new bar begins. Attached is a screenshot of the code plotting the first time exactly as it should. I will review your posts tomorrow as there is some small adjustment following your logic that should provide my answer. Thank you for your assistance. | ||
| |
|
| | #8 | ||
![]() | Re: Reset or Clear Each New Bar Quote:
is that because you have 2 text objects going at the same time? think... if you want Htxt to print, but not Ltxt, where would you want to put Ltxt?
__________________ Only an idiot would reply to a stupid post | ||
| |
|
![]() |
| Tags |
| countdown, timer |
| Thread Tools | |
| Display Modes | Help Others By Rating This Thread |
| |
| ∧ Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Clear Tick Indicator | Minetoo | Coding Forum | 9 | 03-11-2009 01:38 AM |
| A Clear Mind | walterw | Trading Psychology | 12 | 03-22-2007 11:47 AM |