Quantopian's community platform is shutting down. Please read this post for more information and download your code.
Back to Community
Stochastic Indicator from Esignal to TradeStation - Need Help

Hi,

Can someone convert this Esignal indicator into TradeStation EasyLanguage, unfortunately I was unsuccessfull. Thanks.

function preMain() {
setStudyTitle("DSS Bressert New");
setCursorLabelName("DSS", 0);
setCursorLabelName("Trigger", 1);
setDefaultBarFgColor(Color.brown, 0);
setDefaultBarFgColor(Color.red, 1);
addBand(20, PS_SOLID, 1, Color.black);
addBand(80, PS_SOLID, 1, Color.black);
}

var EMA_1 = 0;
var EMA1_1 = 0;
var EMA2_1 = 0;
vAA = new Array();
var EMA = 0;
var EMA1 = 0;
var EMA2 = 0;

function main(pds,slw,triggerLen,emalen) {
if (pds == null)
pds = 10;
if (slw == null)
slw = 3;
if (triggerLen == null)
triggerLen = 5;
if (emalen == null)
emalen = 9;
var nBarState = getBarState();
var vHigh = getValue("High",0,-pds);
var vLow = getValue("Low",0,-pds);
var dClose = getValue("Close");
if(vHigh == null || vLow == null || dClose == null)
return;

if (nBarState == BARSTATE_NEWBAR) {
EMA_1 = EMA;
EMA1_1 = EMA1;
EMA2_1 = EMA2;
}

var K = 2 / (emalen + 1);
var K2 = 2 / (triggerLen + 1);
var aa = 0;
var dss = 0;
var High = 0;
var Low = low();
var aHigh = 0;
var aLow = 0;

for (i = 0; i < pds; i++) {
High = Math.max(High,vHigh);
Low = Math.min(Low,vLow);
} if((High - Low) != 0) {
EMA = K * ( (dClose - Low) / (High - Low) ) + (1 - K) * EMA_1;
} else { EMA = EMA_1;
}

aa = EMA * 100;
if (nBarState == BARSTATE_NEWBAR) {
for(i = pds - 1; i > 0; i--) {
vAA = vAA[i - 1];
} } vAA[0] = aa;

for (i = 0; i < pds; i++) {
if(i == 0) {
aLow = vAA[0];
} if (aHigh < vAA) {
aHigh = vAA;
} if (aLow > vAA) {
aLow = vAA;
} } if (aHigh - aLow != 0) {
EMA1 = K * ((aa - aLow) / (aHigh - aLow) ) + (1 - K) * EMA1_1;
} else { EMA1 = EMA1_1;
} var dss = EMA1 * 100;
EMA2 = K2 * dss + (1 - K2) * EMA2_1;

return new Array(dss,EMA2);