Код: Выделить всё
function Initialize()
{
IndicatorName = "CMO";
PriceStudy = false;
AddInput("Input", Inputs.Price);
AddParameter("Period", 14);
AddSeries("CMO", DrawAs.Custom, Color.Blue);
AddSeries("PosBuffer", DrawAs.Line, Color.Red, false);
AddSeries("NegBuffer", DrawAs.Line, Color.Red, false);
AddSeries("mom", DrawAs.Custom, Color.Red, false);
AddLevel(50, Color.Gray, "CMO");
//AddLevel(0, Color.Gray, "CMO");
AddLevel(-50, Color.Gray, "CMO");
}
function Evaluate()
{
var dblPos=0.0;
var dblNeg=0.0;
var xmom = MOMENTUM(Input,1);
mom[0] = xmom;
if (CurrentIndex < Period)
{
for (int i = 0; i < CurrentIndex; i++)
{
if (mom[i] > 0) dblPos += mom[i];
else dblNeg += mom[i];
PosBuffer = dblPos;
NegBuffer = -dblNeg;
}
}
else
{
for (int i = 0;i < Period; i++)
{
if (mom[i] > 0) dblPos += mom[i];
else dblNeg += mom[i];
PosBuffer = dblPos;
NegBuffer = -dblNeg;
}
}
CMO = (PosBuffer - NegBuffer)/(PosBuffer + NegBuffer)*100;
CMO.DrawLine();
}