Страница 5 из 6

Re: Линии ABC

Добавлено: 13 мар 2016, 15:18
Avialr
Для стратегии индикатор был переименован в "ХХХ" - результат на базе него

Re: Линии ABC

Добавлено: 13 мар 2016, 15:54
evge
По ошибке видно, что не задали входящий ряд! Укажите инструмент при тестировании ну и при создании стратегии желательно по умолчанию какой-то прописать.

NRTRm-04.png
NRTRm-04.png (19.27 КБ) 22052 просмотра

NRTRm-03.png
NRTRm-03.png (32.4 КБ) 22052 просмотра

Re: Линии ABC

Добавлено: 13 мар 2016, 17:28
Avialr
Инструмент задал - вроде стратегию пропустил
сделал простое условие - см.скрин

Пишет - Последовательность не содержит элементов
Что не так опять делаю? Или индикатор кривой?

Re: Линии ABC

Добавлено: 13 мар 2016, 17:53
evge
Avialr писал(а):Пишет - Последовательность не содержит элементов
Что не так опять делаю? Или индикатор кривой?


У Вас определено только 1 правило, нет правила закрытия позиции. Всё что сделает робот это откроет позицию 1 раз и всё.

Пропишите ещё хотя бы 1 правило для закрытия лонга или переворот в шорт. Что бы стратегия "зажила".

Ещё, возможно, вторая ошибка в том что и Long он не откроет вовсе. Возможно у вас в правилах или индикаторе проблема.

Re: Линии ABC

Добавлено: 13 мар 2016, 18:08
Avialr
Создал правило для входа и выхода - то же самое

Индикатор - отображает что нужно (хочу только в гистограмму переделать) - должен работать? или не получится?

Код: Выделить всё

function Initialize()
{
 IndicatorName = "XXX";
 PriceStudy = false;
 AddInput("Input", Inputs.Price);
 AddParameter("CurLevel", 70); //
 AddParameter("Delta", 1.50); //
 AddSeries("RoundPrice", DrawAs.Line, Color.Yellow);
}

function Evaluate()
{

 if ( Input[0] > CurLevel + Delta )
 {
 double a = Input[0] - CurLevel;
 a = Math.Truncate(a / Delta);
 CurLevel = CurLevel + a * Delta;
 }
 if ( Input[0] < CurLevel - Delta )
 {
 double a = -Input[0] + CurLevel;
 a = Math.Truncate(a / Delta);
 CurLevel = CurLevel - a * Delta;
 }
RoundPrice = (Input[0] - CurLevel);
}

Re: Линии ABC

Добавлено: 13 мар 2016, 18:42
evge
Проверил. Всё работает.

Попробуйте конструктором создать заново стратегию

Про стратегию:

Подозрительно, что у Вас нет серии Input1 и видно что Вы создали сами серию Input2.
Второе, параметров нет. Обычно параметр 1, но есть, если создавалась стратегия в конструкторе.

Создайте стратегию с самого начала в конструкторе. У меня Ваш индикатор и стратегия на его основе по Вашему правилу работает.

Re: Линии ABC

Добавлено: 13 мар 2016, 19:18
Avialr
Спасибо!
Вроде все получилось - но не с первого раза - ругалась что то программа - хотя делал одно и то же 3 раза.

С Гистограммой не поможешь?

Re: Линии ABC

Добавлено: 14 мар 2016, 05:43
evge
Avialr писал(а):С Гистограммой не поможешь?


Код: Выделить всё

function Initialize()
{
 IndicatorName = "XXX";
 PriceStudy = false;
 AddInput("Input", Inputs.Price);
 AddParameter("CurLevel", 70); //
 AddParameter("Delta", 1.50); //
 AddSeries("RoundPrice", DrawAs.Custom, Color.Black, AxisType.ZeroBased);
}

function Evaluate()
{

 if ( Input[0] > CurLevel + Delta )
 {
 double a = Input[0] - CurLevel;
 a = Math.Truncate(a / Delta);
 CurLevel = CurLevel + a * Delta;
 }
 if ( Input[0] < CurLevel - Delta )
 {
 double a = -Input[0] + CurLevel;
 a = Math.Truncate(a / Delta);
 CurLevel = CurLevel - a * Delta;
 }
RoundPrice = (Input[0] - CurLevel);

if (RoundPrice > 0)
   RoundPrice.DrawHistogram(Color.Green, Color.Green, 90);
   else
   RoundPrice.DrawHistogram(Color.Red, Color.Red, 90);

}


XXX-01.png
XXX-01.png (33.99 КБ) 22030 просмотров

Re: Линии ABC

Добавлено: 14 мар 2016, 21:41
Avialr
Огромное Спасибо!!!

Re: Линии ABC

Добавлено: 15 мар 2016, 10:39
Avialr
Подскажите как можно прописать следующий момент в конструкторе:
- у нас уже есть покупка (длинная позиция например) - нужно продать ее и тут же сделать еще продажу, т.е. куплено 1 - нужно продать 2 - "перевернуться" как я слышал выражение.