Здесь писал по памяти, не перенося из АД4.
Код: Выделить всё
AddGlobalVariable("LX", Types.Int, 0);
AddGlobalVariable("HX", Types.Int, 0);
замените на
Код: Выделить всё
AddGlobalVariable("LX", Types.Long, 0);
AddGlobalVariable("HX", Types.Long, 0);
Код: Выделить всё
AddGlobalVariable("LX", Types.Int, 0);
AddGlobalVariable("HX", Types.Int, 0);
Код: Выделить всё
AddGlobalVariable("LX", Types.Long, 0);
AddGlobalVariable("HX", Types.Long, 0);
Den писал(а):Проверил
Да, ваш упрощенный код идентичен моему сельскому "мегакоду"
Код: Выделить всё
var lastLVal = MY.индикатор(Input).GetLastValues ("L", 1)[0];
var lastHVal = MY.индикатор(Input).GetLastValues ("H", 1)[0];
Den писал(а):нет, я проверил ваш упрощенный работает точно так же как мой длинный
Код: Выделить всё
function Initialize()
{
IndicatorName = "Summa";
AddInput("Input1", Inputs.Candle);
PriceStudy = true;
AddSeries("H", DrawAs.Custom, Color.Coral);
AddSeries("L", DrawAs.Custom, Color.LightGreen);
AddGlobalVariable("CountUp", Types.Int, 0);
AddGlobalVariable("CountDn", Types.Int, 0);
AddGlobalVariable("HH", Types.Double, 0.0);
AddGlobalVariable("LL", Types.Double, 100000000.0);
}
function Evaluate() {
if (CurrentIndex > 2)
{
if ( Input1.Close[0] < Input1.Close[1] && Input1.Close[1] >= Input1.Close[2] )
{
if ( Input1.Close[1] > HH )
{
CountUp++;
HH = Input1.Close[1];
if ( CountUp >= 1 )
{
H[-1] = HH;
CountDn = 0;
LL = 1000000000.0;
}
}
}
if ( Input1.Close[0] > Input1.Close[1] && Input1.Close[1] <= Input1.Close[2] )
{
if ( Input1.Close[1] < LL )
{
CountDn++;
LL = Input1.Close[1];
if ( CountDn >= 1 )
{
L[-1] = LL;
CountUp = 0;
HH = 0.0;
}
}
}
H.DrawArrowDown(Color.HotPink, LineStyles.Solid, 4, Color.HotPink, 10);
L.DrawArrowUp(Color.Cyan, LineStyles.Solid, 4, Color.Cyan, 10);
}
}
Код: Выделить всё
function Initialize()
{
IndicatorName = "A-DOWN_XV";
AddInput("Input", Inputs.Candle);
AddShadowSeries("D", DrawAs.Custom, Color.Lime);
AddShadowSeries("U", DrawAs.Custom, Color.Violet);
AddShadowSeries("S", DrawAs.Custom, Color.Red);
AddGlobalVariable("Sum", Types.Double, 0);
AddGlobalVariable("LX", Types.Long, 0);
AddGlobalVariable("HX", Types.Long, 0);
PriceStudy = true;
AddParameter("P", 2, 1);
}
function Evaluate()
{
if (BarDate(0) != BarDate(1)) Sum = 0;
var lastLVal = MY.Summa(Input).GetLastValues ("L", 1)[0];
var lastHVal = MY.Summa(Input).GetLastValues ("H", 1)[0];
if ( lastHVal.X > lastLVal.X )
D = lastHVal.Y - lastLVal.Y;
else
U = lastHVal.Y - lastLVal.Y;
if (HX != lastHVal.X || LX != lastLVal.X)
{
HX = lastHVal.X;
LX = lastLVal.X;
Sum += lastHVal.Y - lastLVal.Y;
}
S = Sum;
D.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);
U.DrawHistogram(Input.Open, Color.Blue, Line.Solid, 1, Color.Blue, 3);
S.DrawHistogram();
}
Код: Выделить всё
function Initialize()
{
IndicatorName = "A-DOWN_VIII";
AddInput("Input", Inputs.Candle);
AddSeries("D", DrawAs.Custom, Color.Green);
AddSeries("U", DrawAs.Custom, Color.Red);
AddShadowSeries("S", DrawAs.Custom, Color.Blue);
AddGlobalVariable("Sum", Types.Double, 0);
AddGlobalVariable("LX", Types.Long, 0);
AddGlobalVariable("HX", Types.Long, 0);
PriceStudy = false;
AddParameter("P", 2000, 1);
}
function Evaluate()
{
if (BarDate(0) != BarDate(1)) Sum = 0;
var I = MY.индикатор(Input);
var Lx = 0;
var Hx = 0;
var Ly = 0.0;
var Hy = 0.0;
for (var x = 0; x < 999; x++)
{
if (I["L"][x] > 0) { Lx = x; Ly = I["L"][x]; }
if (I["H"][x] > 0) { Hx = x; Hy = I["H"][x]; }
if (Lx != 0 && Hx != 0) break;
}
if (Lx == 0 && Hx == 0 ) return;
if ( Lx > Hx )
D[1] = Hy - Ly;
else
U[1] = Hy - Ly;
if (HX != Hx || LX != Lx)
{
HX = Hx;
LX = Lx;
Sum += Hy - Ly;
}
S[0] = Sum;
D.DrawHistogram(Color.Red, Line.Solid, 1, Color.Red, 50);
U.DrawHistogram(Color.Green, Line.Solid, 1, Color.Green, 50);
S.DrawHistogram();
}
Вернуться в «Общие вопросы по разработке»
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 18 гостей