Подскажите пожалуйста:
Нужно что бы робот после получения ОПРЕДЕЛЕННОГО (Например: 3 шт.) количества Стопов за день, ОТКЛЮЧАЛСЯ.
Если такое возможно, буду очень благодарен.
Общие вопросы по разработке > Завершение работы робота
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Завершение работы робота
Здравствуйте!
Стоп вообще или стоп только в этот день?
если стоп вообще, то считаете убыточные сделки через глобальную переменную и когда достигли предела делаем:
Stop() – остановить стратегию.
Если за день, то делать аналогично:
Считаем убыточные сделки и не торгуем после предела, добавив в начало обработчика OnUpdate() следующее:
т.е. выходим из обработчика если LossNum (кол-во убыточных сделок больше или равно 3)
первое условие сбрасывает счетчик, если дата текущего бара не равна дате предыдущего, т.е. следующий день.
Советую очень полезный документ:
Терминал 4.0. Скрипты пользовательских индикаторов и стратегий
Стоп вообще или стоп только в этот день?
если стоп вообще, то считаете убыточные сделки через глобальную переменную и когда достигли предела делаем:
Stop() – остановить стратегию.
Если за день, то делать аналогично:
Считаем убыточные сделки и не торгуем после предела, добавив в начало обработчика OnUpdate() следующее:
Код: Выделить всё
if (BarDate(0) != BarDate(1)) LossNum = 0;
if (LossNum >= 3) return;
т.е. выходим из обработчика если LossNum (кол-во убыточных сделок больше или равно 3)
первое условие сбрасывает счетчик, если дата текущего бара не равна дате предыдущего, т.е. следующий день.
Советую очень полезный документ:
Терминал 4.0. Скрипты пользовательских индикаторов и стратегий
никогда такого не было и вот опять
Re: Завершение работы робота
Пример стратегии
Код: Выделить всё
function Initialize()
{
StrategyName = "MyMTS21";
AddParameter("P1", 0, "", 1);
AddInput("Input1", Inputs.Candle, 1, true, "");
AddGlobalVariable("globalNum", Types.Int, 0);
}
function OnUpdate()
{
// Запоминаем число операций на начало дня
if (BarDate(0) != BarDate(1))
globalNum = RealizedPLCount();
// Считываем текущее число операций
int num = RealizedPLCount();
int LossNum = 0;
// пробегаемся циклом по всем операциям с начала дня и считаем убыточные
int j = 0;
for (int i = globalNum; i < num; i++)
if( (RealizedPL(j++)) < 0) LossNum++;
// Если их больше 3х не торгуем
if (LossNum >= 3)
{
if (CurrentPosition() != 0) ClosePosition();
return;
}
if (Input1.Close[0] > Input1.Close[1])
EnterLong();
if (Input1.Close[0] < Input1.Close[1])
EnterShort();
}
- evge
- Администратор
- Сообщения: 1811
- Зарегистрирован: 04 фев 2016, 09:46
- Откуда: Млечный путь, планета Земля
- Благодарил (а): 83 раза
- Поблагодарили: 367 раз
- Контактная информация:
Re: Завершение работы робота
Аналогично, через RealizedPL(), но уже в ЛС подсказал Tom
никогда такого не было и вот опять
Re: Завершение работы робота
evge писал(а):Аналогично, через RealizedPL(), но уже в ЛС подсказал Tom
А можно мне тоже подсказать пожалуйста в лс7
Мусор в твоём глазу больше уродует картину мироздания чем пятна на солнце
Вернуться в «Общие вопросы по разработке»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей