Стратегии и роботы > Линии ABC
- evge
- Администратор
- Сообщения: 1807
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 360 раз
- Контактная информация:
Re: Линии ABC
По ошибке видно, что не задали входящий ряд! Укажите инструмент при тестировании ну и при создании стратегии желательно по умолчанию какой-то прописать.
никогда такого не было и вот опять
Re: Линии ABC
Инструмент задал - вроде стратегию пропустил
сделал простое условие - см.скрин
Пишет - Последовательность не содержит элементов
Что не так опять делаю? Или индикатор кривой?
сделал простое условие - см.скрин
Пишет - Последовательность не содержит элементов
Что не так опять делаю? Или индикатор кривой?
- evge
- Администратор
- Сообщения: 1807
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 360 раз
- Контактная информация:
Re: Линии ABC
Avialr писал(а):Пишет - Последовательность не содержит элементов
Что не так опять делаю? Или индикатор кривой?
У Вас определено только 1 правило, нет правила закрытия позиции. Всё что сделает робот это откроет позицию 1 раз и всё.
Пропишите ещё хотя бы 1 правило для закрытия лонга или переворот в шорт. Что бы стратегия "зажила".
Ещё, возможно, вторая ошибка в том что и Long он не откроет вовсе. Возможно у вас в правилах или индикаторе проблема.
никогда такого не было и вот опять
Re: Линии ABC
Создал правило для входа и выхода - то же самое
Индикатор - отображает что нужно (хочу только в гистограмму переделать) - должен работать? или не получится?
Индикатор - отображает что нужно (хочу только в гистограмму переделать) - должен работать? или не получится?
Код: Выделить всё
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);
}
- evge
- Администратор
- Сообщения: 1807
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 360 раз
- Контактная информация:
Re: Линии ABC
Проверил. Всё работает.
Попробуйте конструктором создать заново стратегию
Про стратегию:
Подозрительно, что у Вас нет серии Input1 и видно что Вы создали сами серию Input2.
Второе, параметров нет. Обычно параметр 1, но есть, если создавалась стратегия в конструкторе.
Создайте стратегию с самого начала в конструкторе. У меня Ваш индикатор и стратегия на его основе по Вашему правилу работает.
Попробуйте конструктором создать заново стратегию
Про стратегию:
Подозрительно, что у Вас нет серии Input1 и видно что Вы создали сами серию Input2.
Второе, параметров нет. Обычно параметр 1, но есть, если создавалась стратегия в конструкторе.
Создайте стратегию с самого начала в конструкторе. У меня Ваш индикатор и стратегия на его основе по Вашему правилу работает.
никогда такого не было и вот опять
Re: Линии ABC
Спасибо!
Вроде все получилось - но не с первого раза - ругалась что то программа - хотя делал одно и то же 3 раза.
С Гистограммой не поможешь?
Вроде все получилось - но не с первого раза - ругалась что то программа - хотя делал одно и то же 3 раза.
С Гистограммой не поможешь?
- evge
- Администратор
- Сообщения: 1807
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 360 раз
- Контактная информация:
Re: Линии ABC
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);
}
никогда такого не было и вот опять
Re: Линии ABC
Подскажите как можно прописать следующий момент в конструкторе:
- у нас уже есть покупка (длинная позиция например) - нужно продать ее и тут же сделать еще продажу, т.е. куплено 1 - нужно продать 2 - "перевернуться" как я слышал выражение.
- у нас уже есть покупка (длинная позиция например) - нужно продать ее и тут же сделать еще продажу, т.е. куплено 1 - нужно продать 2 - "перевернуться" как я слышал выражение.
Вернуться в «Стратегии и роботы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей