Общие вопросы по разработке > Один раз
Re: Один раз
ну так Evaluate() проверяет ваше условие при каждом изменении цены и тут проблему не решить ограничением количества проверок на свече.
Ведь неизвестно когда внутри свечи наступит нужный сигнал индикатора.
Индикатор проверил два раза, а на третий наступило условие, позволяющее верно войти, а лимит проверок уже исчерпан.
Тут надо менять чувствительность индикатора, ограничение его в числе проверок навредит.
В Квике установлено ограничение на открытие противоположных позиций внутри свечи - это и есть то, что вы спрашиваете
В АДу такого нет,как нет исполнения внутри свечи.
Ведь неизвестно когда внутри свечи наступит нужный сигнал индикатора.
Индикатор проверил два раза, а на третий наступило условие, позволяющее верно войти, а лимит проверок уже исчерпан.
Тут надо менять чувствительность индикатора, ограничение его в числе проверок навредит.
В Квике установлено ограничение на открытие противоположных позиций внутри свечи - это и есть то, что вы спрашиваете
В АДу такого нет,как нет исполнения внутри свечи.
Re: Один раз
Владимир Валерьевич писал(а):Alexey писал(а):Код: Выделить всё
function Initialize()
{...
AddGlobalVariable("PrevIndex", Types.Int, -1);
}
function Evaluate()
{
if (PrevIndex != CurrentIndex)
{ ...
PrevIndex = CurrentIndex;
}
}
Увы. Цена изменилась, "PrevIndex" сбросился на -1.
У меня в индикаторах работает корректно, правда отладчика нет поэтому не проверял че и как считает Надо попробовать в лог записать ради интереса...
-
- Сообщения: 36
- Зарегистрирован: 27 мар 2016, 22:16
- Благодарил (а): 9 раз
Re: Один раз
Alexey писал(а):Владимир Валерьевич писал(а):Alexey писал(а):Код: Выделить всё
function Initialize()
{AddGlobalVariable("PrevIndex", Types.Int, -1);
}
function Initialize()
{...
AddGlobalVariable("PrevIndex", Types.Int, -1);
}
function Evaluate()
{
if (PrevIndex != CurrentIndex)
{ ...
PrevIndex = CurrentIndex;
}
}
Увы. Цена изменилась, "PrevIndex" сбросился на -1.
У меня в индикаторах работает корректно, правда отладчика нет поэтому не проверял че и как считает Надо попробовать в лог записать ради интереса...
Э. обманул я Вас, получается.
Вот лог что показал на ТФ 2м:
2017.07.06 15:13:37.190 244
2017.07.06 15:13:37.190 244
2017.07.06 15:13:37.190 245
2017.07.06 15:13:37.191 245
2017.07.06 15:13:37.191 246
2017.07.06 15:13:37.191 246
2017.07.06 15:13:37.191 247
2017.07.06 15:13:37.191 247
2017.07.06 15:13:37.192 248
2017.07.06 15:13:37.192 248
2017.07.06 15:13:37.192 249
2017.07.06 15:13:37.192 249
2017.07.06 15:13:37.193 250
2017.07.06 15:13:37.193 250
2017.07.06 15:13:37.193 251
2017.07.06 15:13:37.193 251
2017.07.06 15:13:37.194 252
2017.07.06 15:13:37.194 252
2017.07.06 15:13:37.195 253
2017.07.06 15:13:37.195 253
2017.07.06 15:13:37.195 254
2017.07.06 15:13:37.195 254
2017.07.06 15:13:37.196 255
2017.07.06 15:13:37.196 255
2017.07.06 15:13:37.196 256
2017.07.06 15:13:37.196 256
2017.07.06 15:13:37.197 257
2017.07.06 15:13:37.197 257
2017.07.06 15:13:37.197 258
Код: Выделить всё
function Initialize()
{AddGlobalVariable("PrevIndex", Types.Int, -1);
}
function Evaluate()
{if (PrevIndex < CurrentIndex)
{LogData(String.Format("{0}", PrevIndex), IndicatorName);
...
PrevIndex = CurrentIndex;
}
LogData(String.Format("{0}", PrevIndex), IndicatorName);
}
а по идее должен был всего по две строки показывать в две минуты
-1 и текущий индекс.
Что-то я совсем запутался
Re: Один раз
Alexey писал(а):Владимир Валерьевич писал(а):Alexey писал(а):Код: Выделить всё
function Initialize()
{...
AddGlobalVariable("PrevIndex", Types.Int, -1);
}
function Evaluate()
{
if (PrevIndex != CurrentIndex)
{ ...
PrevIndex = CurrentIndex;
}
}
Увы. Цена изменилась, "PrevIndex" сбросился на -1.
У меня в индикаторах работает корректно, правда отладчика нет поэтому не проверял че и как считает Надо попробовать в лог записать ради интереса...
Проверил - пашет Только при запуске индикатора почему-то не совсем корректно работает, но на логику не влияет
Индикатор:
Код: Выделить всё
function Initialize()
{
IndicatorName = "TestPrevIndex"; // Задайте название индикатора и сохраните с данным именем
PriceStudy = true; // Рисовать в области цены (true – да, false – нет)
AddInput("Input", Inputs.Price); // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
AddSeries("A", DrawAs.Line, Color.Red); // Задаем вид линии индикатора A
AddGlobalVariable("PrevIndex", Types.Int, -1);
}
function Evaluate()
{
if (PrevIndex != CurrentIndex)
{
LogData (BarTime().ToString() + " <> " + PrevIndex.ToString(), "PrevIndex");
PrevIndex = CurrentIndex;
}
}
В лог файле при запуске на минутке следующее:
09:19:21 <> -1
09:19:21 <> -1
09:19:21 <> -1
09:19:21 <> -1
12:52:00 <> -1
12:53:00 <> 0
12:54:00 <> 1
12:55:00 <> 2
12:56:00 <> 3
///---///---///
///---///---///
///---///---///
15:15:00 <> 943
15:16:00 <> 944
15:17:00 <> 945
15:18:00 <> 946
Re: Один раз
Лог на 2х минутках
15:28:00 <> 939
15:30:00 <> 940
15:32:00 <> 941
15:34:00 <> 942
15:36:00 <> 943
15:38:00 <> 944
15:40:00 <> 945
15:42:00 <> 946
-
- Сообщения: 36
- Зарегистрирован: 27 мар 2016, 22:16
- Благодарил (а): 9 раз
Re: Один раз
Блин, а у меня на такой конструкции:
лог показывает:
2017.07.06 16:08:59.399 00:00:00 <> 256
2017.07.06 16:08:59.400 00:00:00 <> 257
2017.07.06 16:09:01.436 00:00:00 <> -1
2017.07.06 16:09:01.437 00:00:00 <> 0
2017.07.06 16:09:01.438 00:00:00 <> 1
2017.07.06 16:09:01.438 00:00:00 <> 2
...
2017.07.06 16:09:01.633 00:00:00 <> 256
2017.07.06 16:09:01.633 00:00:00 <> 257
2017.07.06 16:09:24.311 00:00:00 <> -1
2017.07.06 16:09:24.311 00:00:00 <> 0
2017.07.06 16:09:24.312 00:00:00 <> 1
2017.07.06 16:09:24.313 00:00:00 <> 2
...
2017.07.06 16:09:44.566 00:00:00 <> 257
2017.07.06 16:09:56.756 00:00:00 <> -1
2017.07.06 16:09:56.757 00:00:00 <> 0
2017.07.06 16:09:56.758 00:00:00 <> 1
...
2017.07.06 16:09:58.625 00:00:00 <> 256
2017.07.06 16:09:58.626 00:00:00 <> 257
2017.07.06 16:10:03.158 00:00:00 <> -1
2017.07.06 16:10:03.161 00:00:00 <> 0
2017.07.06 16:10:03.162 00:00:00 <> 1
2017.07.06 16:10:03.163 00:00:00 <> 2
Код: Выделить всё
if (PrevIndex != CurrentIndex)
{LogData (BarTime().ToString() + " <> " + PrevIndex.ToString(), "PrevIndex");
PrevIndex = CurrentIndex;
}
лог показывает:
2017.07.06 16:08:59.399 00:00:00 <> 256
2017.07.06 16:08:59.400 00:00:00 <> 257
2017.07.06 16:09:01.436 00:00:00 <> -1
2017.07.06 16:09:01.437 00:00:00 <> 0
2017.07.06 16:09:01.438 00:00:00 <> 1
2017.07.06 16:09:01.438 00:00:00 <> 2
...
2017.07.06 16:09:01.633 00:00:00 <> 256
2017.07.06 16:09:01.633 00:00:00 <> 257
2017.07.06 16:09:24.311 00:00:00 <> -1
2017.07.06 16:09:24.311 00:00:00 <> 0
2017.07.06 16:09:24.312 00:00:00 <> 1
2017.07.06 16:09:24.313 00:00:00 <> 2
...
2017.07.06 16:09:44.566 00:00:00 <> 257
2017.07.06 16:09:56.756 00:00:00 <> -1
2017.07.06 16:09:56.757 00:00:00 <> 0
2017.07.06 16:09:56.758 00:00:00 <> 1
...
2017.07.06 16:09:58.625 00:00:00 <> 256
2017.07.06 16:09:58.626 00:00:00 <> 257
2017.07.06 16:10:03.158 00:00:00 <> -1
2017.07.06 16:10:03.161 00:00:00 <> 0
2017.07.06 16:10:03.162 00:00:00 <> 1
2017.07.06 16:10:03.163 00:00:00 <> 2
-
- Сообщения: 36
- Зарегистрирован: 27 мар 2016, 22:16
- Благодарил (а): 9 раз
Re: Один раз
Владимир Валерьевич писал(а):Блин, а у меня на такой конструкции:Код: Выделить всё
if (PrevIndex != CurrentIndex)
{LogData (BarTime().ToString() + " <> " + PrevIndex.ToString(), "PrevIndex");
PrevIndex = CurrentIndex;
}
лог показывает:
2017.07.06 16:08:59.399 00:00:00 <> 256
2017.07.06 16:08:59.400 00:00:00 <> 257
2017.07.06 16:09:01.436 00:00:00 <> -1
2017.07.06 16:09:01.437 00:00:00 <> 0
2017.07.06 16:09:01.438 00:00:00 <> 1
2017.07.06 16:09:01.438 00:00:00 <> 2
...
2017.07.06 16:09:01.633 00:00:00 <> 256
2017.07.06 16:09:01.633 00:00:00 <> 257
2017.07.06 16:09:24.311 00:00:00 <> -1
2017.07.06 16:09:24.311 00:00:00 <> 0
2017.07.06 16:09:24.312 00:00:00 <> 1
2017.07.06 16:09:24.313 00:00:00 <> 2
...
2017.07.06 16:09:44.566 00:00:00 <> 257
2017.07.06 16:09:56.756 00:00:00 <> -1
2017.07.06 16:09:56.757 00:00:00 <> 0
2017.07.06 16:09:56.758 00:00:00 <> 1
...
2017.07.06 16:09:58.625 00:00:00 <> 256
2017.07.06 16:09:58.626 00:00:00 <> 257
2017.07.06 16:10:03.158 00:00:00 <> -1
2017.07.06 16:10:03.161 00:00:00 <> 0
2017.07.06 16:10:03.162 00:00:00 <> 1
2017.07.06 16:10:03.163 00:00:00 <> 2
Честно говоря я сам не понимаю как все это работает, такое впечатление что одни и те же данные рассчитываются многократно...
Но ту конструкцию которую я дал, сам применяю когда в индикаторе что-то нужно рассчитать раз за бар. Пока работает...
-
- Сообщения: 36
- Зарегистрирован: 27 мар 2016, 22:16
- Благодарил (а): 9 раз
Re: Один раз
Alexey писал(а):Честно говоря я сам не понимаю как все это работает, такое впечатление что одни и те же данные рассчитываются многократно...
Но ту конструкцию которую я дал, сам применяю когда в индикаторе что-то нужно рассчитать раз за бар. Пока работает...
Спасибо за участие.
Буду думать дальше.
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 17 гостей