Страница 2 из 4
Re: CurrentIndex
Добавлено: 16 ноя 2017, 14:26
evge
Запоминайте индекс бара предполагаемого H в глоб переменной,
когда наступает событие и нужно задним числом этот H проставить, делаем так
Код: Выделить всё
H[CurrentIndex - СохраненныйИндекс] = Input.High[CurrentIndex - СохраненныйИндекс];
Re: CurrentIndex
Добавлено: 16 ноя 2017, 14:30
Den
ну как видите
1. последний сигнал = H[0]
2. H[0] >= H[1]
3. H[0] >= LAST
4. H[0] != L[0]
Re: CurrentIndex
Добавлено: 16 ноя 2017, 14:34
Den
Если можно тут исправьте ну или свой вариант кода покажите ,пожалуйста
Код: Выделить всё
function Initialize()
{
IndicatorName = "COUNT";
AddInput("Input1", Inputs.Candle);
PriceStudy = true;
AddSeries("H", DrawAs.Custom, Color.Coral);
AddSeries("L", DrawAs.Custom, Color.LightGreen);
}
function Evaluate()
{
var lastLVal = MY.C_I(Input1).GetLastValues ("L", 1)[0];
var lastHVal = MY.C_I(Input1).GetLastValues ("H", 1)[0];
if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.C_I(Input1).GetLastValues ("H", 1)[0].Y) )
if (MY.C_I(Input1).GetLastValues ("H", 1)[0].Y >= LAST)
if ((MY.C_I(Input1).GetLastValues ("H", 1)[0].Y > MY.C_I(Input1).GetLastValues ("H", 1)[1].Y))
if ((MY.C_I(Input1).GetLastValues ("H", 1)[0].Y != MY.C_I(Input1).GetLastValues ("L", 1)[0].Y))
H[1] = MY.С_I(Input1).GetLastValues ("H", 1)[0].Y;
if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.C_I(Input1).GetLastValues ("L", 1)[0].Y) )
if (MY.C_I(Input1).GetLastValues ("L", 1)[0].Y <= LAST )
if ((MY.C_I(Input1).GetLastValues ("L", 1)[0].Y > MY.C_I(Input1).GetLastValues ("L", 1)[1].Y))
if ((MY.C_I(Input1).GetLastValues ("H", 1)[0].Y != MY.C_I(Input1).GetLastValues ("L", 1)[0].Y))
L[1] = MY.C_I(Input1).GetLastValues ("L", 1)[0].Y;
H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 10, Color.Fuchsia, 100);
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 10, Color.Lime, 100);
}
Re: CurrentIndex
Добавлено: 16 ноя 2017, 14:39
Den
вот паттерн от Н до L, розовая линия это LAST
Re: CurrentIndex
Добавлено: 16 ноя 2017, 14:57
evge
зачем столько ненужного кода приводить и скриншотов?
всё равно я не смогу его протестировать и проверить, т.к. нет у меня ваших индикаторов.
лучше на словах разъяснить что хотите.
я могу подсказать как решить вопрос.
выше я показал, как запомнить индекс бара с макимумом и как далее его смещение определить в будущем и присвоить значение в истории.
Re: CurrentIndex
Добавлено: 16 ноя 2017, 15:05
Den
так тестируйте , без проблем.
Главное понять, почему не показывает COUNT
У меня нет ваших знаний, я не смогу себе помочь так как вы помогли мне с подсчетом, помните?
это LAST
Код: Выделить всё
function Initialize()
{
IndicatorName = "C_I";
AddInput("Input", Inputs.Price);
AddSeries("H", DrawAs.Custom, Color.Gray);
AddSeries("M", DrawAs.Line, Color.Gray, false);
AddSeries("Close", DrawAs.Custom, Color.Gray);
AddSeries("Open", DrawAs.Custom, Color.Gray);
AddSeries("U", DrawAs.Custom, Color.Lime);
AddSeries("D", DrawAs.Custom, Color.Violet);
PriceStudy = true;
AddParameter("P", 2, 1);
}
function Evaluate()
{
if ( CurrentIndex > P)
{
double WMA1 = WMA(Input, (int)(0.5*P))[0];
double WMA2 = WMA(Input, (int)(0.5*P))[0];
M = 2.0*WMA1 - WMA2;
double P3 = Math.Truncate(Math.Sqrt(0.5*P));
var sum = 0.0;
var sumZ = 0.0;
for (var i = 0; i < P3; i++)
{
sum = sum + M[-i]*(P3-i);
sumZ = sumZ + (i+1);
}
H = sum/sumZ;
Open = H[1];
U = H[0];
D = H[0];
if ( H[0] > H[1] )
U.DrawArrowUp(Color.Aqua, LineStyles.Solid, 2, Color.Aqua, 10);
else
D.DrawArrowDown(Color.Violet, LineStyles.Solid, 2, Color.Violet, 10);
}
}
Re: CurrentIndex
Добавлено: 16 ноя 2017, 15:08
Den
Этот выставляет сигналы на основе LAST (вначале я хотел его упросить через CurrentIndex )
Код: Выделить всё
function Initialize()
{
IndicatorName = "COUNT_II";
AddInput("Input1", Inputs.Candle);
PriceStudy = true;
AddSeries("H", DrawAs.Custom, Color.Coral);
AddSeries("L", DrawAs.Custom, Color.LightGreen);
AddShadowSeries("D", DrawAs.Custom, Color.HotPink);
}
function Evaluate()
{
if (Input.High[0] >= MY.C_I(Input.Close, 2).GetValue("U", 0) )
{
H[0] = Input1.High[0];
}
if (Input.Low[0] <= MY.C_I(Input.Close, 2).GetValue("D", 0) )
{
L[0] = Input1.Low[0];
}
H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 4, Color.Fuchsia, 100);
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 4, Color.Lime, 100);
}
Re: CurrentIndex
Добавлено: 16 ноя 2017, 15:12
Den
Итоговый , который не показывает
Код: Выделить всё
function Initialize()
{
IndicatorName = "COUNT";
AddInput("Input1", Inputs.Candle);
PriceStudy = true;
AddSeries("H", DrawAs.Custom, Color.Coral);
AddSeries("L", DrawAs.Custom, Color.LightGreen);
}
function Evaluate()
{
var lastLVal = MY.COUNT_II(Input1).GetLastValues ("L", 1)[0];
var lastHVal = MY.COUNT_II(Input1).GetLastValues ("H", 1)[0];
if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y) )
if ((MY.COUNT_II(Input1).GetLastValues ("H", 2)[0].Y > MY.COUNT_II(Input1).GetLastValues ("H", 2)[1].Y))
if ((MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y != MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y))
H[1] = MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y;
if ( (lastHVal.X > lastLVal.X ? lastHVal.Y : lastLVal.Y) == (MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y) )
if ((MY.COUNT_II(Input1).GetLastValues ("L", 2)[0].Y < MY.COUNT_II(Input1).GetLastValues ("L", 2)[1].Y))
if ((MY.COUNT_II(Input1).GetLastValues ("H", 1)[0].Y != MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y))
L[1] = MY.COUNT_II(Input1).GetLastValues ("L", 1)[0].Y;
H.DrawArrowDown(Color.Fuchsia, LineStyles.Solid, 10, Color.Fuchsia, 100);
L.DrawArrowUp(Color.Lime, LineStyles.Solid, 10, Color.Lime, 100);
}
Re: CurrentIndex
Добавлено: 16 ноя 2017, 17:44
Den
Евгений, ну так почему последний индикатор не показывает? Вернее некорректно.
Re: CurrentIndex
Добавлено: 16 ноя 2017, 17:49
evge
Пока не смотрел.