I am trying to add bands at +30 and -30 to and indicator that has a historgram. I have copied the .els language gelow this request to show the reference points in the study.
Please note to anyone who is gracious enough to help me with this that this is a password protected .els part of the Kwikpop add-on to e-signal. The developer allows the users to add graphics...like bands...but unfortuately anyone suggesting a solution wont be able to test the solution since a subscription password is required to run the Kwikpop add-on. Please understand that.
I read the documentation on the website for constructing bands and used:
addBand(30, PS_Solid,1, Color.black);
addBand(-30,PS_Solid,1, Color.black);
to try to get bands on the indicator at +30 and -30 since the oscillator is centered on the zero line.
I am getting a script error. It aparently does not know what to reference. The 30 line would reference the TSKPFAST1_1 part of the oscillator and the -30 would reference the TSKPFAST1_2 oscillator. I dont know properly how to used the bands to reference the correct part of the indicator. I tried just putting the language at the end of the script shown below...but that isnt working.
Also...if is possible to use a dotted line instead of a solid line that would be an extra bonus.
Any help would be appreciated.
Thanks so much....The .els language follows below...
/ load our DLL in global space.
var mydll = new DLL("C:\\Program Files\\Kwik POP for eSignal\\kpesignal.dll");
mydll.addFunction("E_CREATESTATE", DLL.INT, DLL.STDCALL, "E_CREATESTATE", DLL.STRING, DLL.INT);
mydll.addFunction("E_CHECKSTATE", DLL.INT, DLL.STDCALL, "E_CHECKSTATE", DLL.INT);
mydll.addFunction("E_BARVALUES", DLL.INT, DLL.STDCALL, "E_BARVALUES", DLL.INT, DLL.INT, DLL.INT, DLL.INT, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE);
mydll.addFunction("E_GETRETURN",DLL.DOUBLE,DLL.STD CALL, "E_GETRETURN",DLL.INT,DLL.INT);
mydll.addFunction("E_TSKPFAST1", DLL.DOUBLE, DLL.STDCALL, "E_TSKPFAST1", DLL.INT);
function preMain()
{
setPriceStudy(false);
setStudyTitle("TSKPFAST1");
setCursorLabelName("TSKPFAST1_1",0);
setDefaultBarFgColor(Color.blue,0);
setPlotType(PLOTTYPE_HISTOGRAM , 0 );
setCursorLabelName("TSKPFAST1_2",1);
setDefaultBarFgColor(Color.red,1);
setPlotType(PLOTTYPE_HISTOGRAM , 1 );
setCursorLabelName("TSKPFAST1_3",2);
setDefaultBarFgColor(Color.yellow,2);
setCursorLabelName("TSKPFAST1_4",3);
setDefaultBarFgColor(Color.cyan,3);
}
var stateID = 0;
var cum1 = 0;
function longdate()
{
var ldate = getYear() * 10000;
ldate += getMonth() * 100;
ldate += getDay();
return ldate;
}
function longtime()
{
var ltime = getHour() * 10000;
ltime += getMinute() * 100;
ltime += getSecond();
return ltime;
}
function main()
{
//first thing we're going to plot is TSKPa900
var nBarState = getBarState();
if ( nBarState == BARSTATE_ALLBARS)
{
cum1 = 0;
stateID = 0;
// make it create a new state when it starts up.
}
else if( nBarState == BARSTATE_NEWBAR)
{
cum1++;
}
var r = new Array();
r[0] = 0.0;
r[1] = 0.0;
r[2] = 0.0;
r[3] = 0.0;
if( stateID != 0 )
{
var check = mydll.call("E_CHECKSTATE", stateID);
if( check == 0 )
{
// We have to recalculate from the first bar.
reloadEFS();
stateID = 0;
}
}
if( stateID == 0 )
{
stateID = mydll.call("E_CREATESTATE",getUserName(),1); // the 1 tells it to use garbage collection.
}
if( stateID )
{
// we actually have gotten this far, we can go ahead and try to do something.
// mydll.addFunction("E_BARVALUES", DLL.INT, DLL.CDECL, "E_BARVALUES", DLL.INT, DLL.INT, DLL.INT, DLL.INT, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE);
var bv = mydll.call("E_BARVALUES",stateID,cum1, longdate(), longtime(), open(), high(), low(), close(), volume());
if( bv != 0 )
{
// they actually seem to have a license.
// this is where we calculate an actual indicator value.
mydll.call("E_TSKPFAST1", stateID);
// return both values
r[0] = mydll.call("E_GETRETURN",stateID,0);
r[1] = mydll.call("E_GETRETURN",stateID,1);
r[2] = mydll.call("E_GETRETURN",stateID,2);
r[3] = mydll.call("E_GETRETURN",stateID,3);
setBarThickness(2,0);
setBarThickness(2,1);
}
}
return (r);
}
Please note to anyone who is gracious enough to help me with this that this is a password protected .els part of the Kwikpop add-on to e-signal. The developer allows the users to add graphics...like bands...but unfortuately anyone suggesting a solution wont be able to test the solution since a subscription password is required to run the Kwikpop add-on. Please understand that.
I read the documentation on the website for constructing bands and used:
addBand(30, PS_Solid,1, Color.black);
addBand(-30,PS_Solid,1, Color.black);
to try to get bands on the indicator at +30 and -30 since the oscillator is centered on the zero line.
I am getting a script error. It aparently does not know what to reference. The 30 line would reference the TSKPFAST1_1 part of the oscillator and the -30 would reference the TSKPFAST1_2 oscillator. I dont know properly how to used the bands to reference the correct part of the indicator. I tried just putting the language at the end of the script shown below...but that isnt working.
Also...if is possible to use a dotted line instead of a solid line that would be an extra bonus.
Any help would be appreciated.
Thanks so much....The .els language follows below...
/ load our DLL in global space.
var mydll = new DLL("C:\\Program Files\\Kwik POP for eSignal\\kpesignal.dll");
mydll.addFunction("E_CREATESTATE", DLL.INT, DLL.STDCALL, "E_CREATESTATE", DLL.STRING, DLL.INT);
mydll.addFunction("E_CHECKSTATE", DLL.INT, DLL.STDCALL, "E_CHECKSTATE", DLL.INT);
mydll.addFunction("E_BARVALUES", DLL.INT, DLL.STDCALL, "E_BARVALUES", DLL.INT, DLL.INT, DLL.INT, DLL.INT, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE);
mydll.addFunction("E_GETRETURN",DLL.DOUBLE,DLL.STD CALL, "E_GETRETURN",DLL.INT,DLL.INT);
mydll.addFunction("E_TSKPFAST1", DLL.DOUBLE, DLL.STDCALL, "E_TSKPFAST1", DLL.INT);
function preMain()
{
setPriceStudy(false);
setStudyTitle("TSKPFAST1");
setCursorLabelName("TSKPFAST1_1",0);
setDefaultBarFgColor(Color.blue,0);
setPlotType(PLOTTYPE_HISTOGRAM , 0 );
setCursorLabelName("TSKPFAST1_2",1);
setDefaultBarFgColor(Color.red,1);
setPlotType(PLOTTYPE_HISTOGRAM , 1 );
setCursorLabelName("TSKPFAST1_3",2);
setDefaultBarFgColor(Color.yellow,2);
setCursorLabelName("TSKPFAST1_4",3);
setDefaultBarFgColor(Color.cyan,3);
}
var stateID = 0;
var cum1 = 0;
function longdate()
{
var ldate = getYear() * 10000;
ldate += getMonth() * 100;
ldate += getDay();
return ldate;
}
function longtime()
{
var ltime = getHour() * 10000;
ltime += getMinute() * 100;
ltime += getSecond();
return ltime;
}
function main()
{
//first thing we're going to plot is TSKPa900
var nBarState = getBarState();
if ( nBarState == BARSTATE_ALLBARS)
{
cum1 = 0;
stateID = 0;
// make it create a new state when it starts up.
}
else if( nBarState == BARSTATE_NEWBAR)
{
cum1++;
}
var r = new Array();
r[0] = 0.0;
r[1] = 0.0;
r[2] = 0.0;
r[3] = 0.0;
if( stateID != 0 )
{
var check = mydll.call("E_CHECKSTATE", stateID);
if( check == 0 )
{
// We have to recalculate from the first bar.
reloadEFS();
stateID = 0;
}
}
if( stateID == 0 )
{
stateID = mydll.call("E_CREATESTATE",getUserName(),1); // the 1 tells it to use garbage collection.
}
if( stateID )
{
// we actually have gotten this far, we can go ahead and try to do something.
// mydll.addFunction("E_BARVALUES", DLL.INT, DLL.CDECL, "E_BARVALUES", DLL.INT, DLL.INT, DLL.INT, DLL.INT, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE, DLL.DOUBLE);
var bv = mydll.call("E_BARVALUES",stateID,cum1, longdate(), longtime(), open(), high(), low(), close(), volume());
if( bv != 0 )
{
// they actually seem to have a license.
// this is where we calculate an actual indicator value.
mydll.call("E_TSKPFAST1", stateID);
// return both values
r[0] = mydll.call("E_GETRETURN",stateID,0);
r[1] = mydll.call("E_GETRETURN",stateID,1);
r[2] = mydll.call("E_GETRETURN",stateID,2);
r[3] = mydll.call("E_GETRETURN",stateID,3);
setBarThickness(2,0);
setBarThickness(2,1);
}
}
return (r);
}
Comment