Стратегии и роботы > Стратегия Invest_Grid

Обсуждение, описание стратегий и роботов, идеи для стратегий
_E_V_N_
Сообщения: 24
Зарегистрирован: 14 ноя 2022, 20:22
Поблагодарили: 3 раза

Re: Стратегия Invest_Grid

Непрочитанное сообщение _E_V_N_ » 05 фев 2023, 18:13

A.M. писал(а):Подтверждаю, оставлять без присмотра терминал нельзя.))
Использую Вашего робота две недели. Максимальное время работы без сбоя - 1,5 торговой сессии. В основном, проблемы возникают после разрыва интернет соединения. Например, сегодня, после перезагрузки роутера терминал канал увидел, а роботы (3 шт. на трёх инструментах) с момента отключения перестали выставлять заявки. Остановка и запуск результата не принесли. Удалил, создал новых с нулевой стартовой, и редактированием текущей позиции - заработали.

P.S. пока набирал сообщение, один из трёх опять встал... http://prntscr.com/26q44z0


С терминалом работает отдельный компьютер, на компьютере нет других программ кроме терминала Альфы. Запущен 101 робот, Сбоев не наблюдаю. Утром проверяю наличие подключения терминала, если подключения нет подключаюсь, и в принципе могу не подходить к монитору всю сессию, а это 14 часов в день. Вечером обычно рассчитываю результат работы за сутки. В последнее время ночью, во время пока торгов нет, связь стала рваться чаще, техподдержка объясняет это профилактическими работами на серверах. Роботы без переустановки работают 12-15 месяцев.
Если робот у вас перестает выставлять заявки, остановка и перезапуск робота не всегда помогает, тут требуется перезапуск терминала. Альфа никак не может устранить проблему "ожидания" ответа сервера на запросы робота. "Зависание ожидания" происходит не всегда, в основном когда обрыв соединяния совпадает с моментом обработки запроса (робот успевает получить часть запрошенной информации, но не получает сигнала окончания передачи), чаще всего это совпадает если сделка происходит в момент 59-00 секунд на минутном таймфрейме, 59 минут 59-00 секунд на часовом таймфрейме и так далее.
Избавился от сбоев удалив все папки уже удаленных роботов (почему то при удалении робота у меня не всегда удалялись папка робота), и удаления всех роботов из "Архива", по идее роботы в Архиве влиять не должны были, но по факту влияли и очень сильно тормозя терминал.
Поэтому утверждения, что терминал нельзя оставлять без присмотра считаю ошибочным.

Аватара пользователя
ip851874
Сообщения: 42
Зарегистрирован: 21 ноя 2020, 22:56
Откуда: Москва
Благодарил (а): 14 раз
Контактная информация:

Re: Стратегия Invest_Grid

Непрочитанное сообщение ip851874 » 26 май 2023, 00:46

evge писал(а):Эксперименты привели к тому что стратегию Invest_Grid работающую как в лонг так и в шорт с горяча удалил :), заменив код её с нуля написанным простым алгоритмом, который и выкладываю.

Тут всё просто и понятно. Работает как в лонг так и в шорт, для примера взяты 2 SMA быстрая и медленная.
Всё как обычно, в лонг заходим и набираем позицию на откатах указанных в параметре D
Закрывать позицию и переворачиваться начинает когда MA пересекутся в другую сторону, сначала на откатах будет закрываться ранее открытая позиция, затем начнет набирать позицию в другую сторону.

iGrid1-01.png
iGrid1-02.png

В итоге простой и понятный код:

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

/**Developed by evge;**/

function Initialize()
{
   StrategyName = "iGrid1";
   AddInput("I", Inputs.Candle, 5, true, "SBER=МБ ЦК");

   AddParameter("Lot", 100, "Кол-во докупки");
   AddParameter("D", 0.3, "Изм. цены для докупки");
   AddParameter("f", 20, "fast", 1);
   AddParameter("s", 180, "slow", 1);
 
   LongLimit = 5000;
   ShortLimit = -5000;
                 
   AddGlobalVariable("Last", Types.Double, 0.0);
   
   AddGlobalVariable("isLong", Types.Boolean, false);
}

function OnUpdate()
{

var IC = I.Close;
var CP = CurrentPosition();

// + Опередляем общее направление торговли
var S1 = SMA(I.Close, f);
var S2 = SMA(I.Close, s);

if (S1[0] > S2[0])
isLong = true;
else
isLong = false;
// -

if (Last == 0) Last = IC;

if (isLong && IC < Last - D)
{
   if (CP >= 0)
      EnterLong(Lot);
   else
      CloseShort(Lot);
}
else if (!isLong && IC > Last + D)
{
   if (CP <= 0)
      EnterShort(Lot);
   else
      CloseLong(Lot);
}

if (IC > Last + D) Last = IC;
if (IC < Last - D) Last = IC;

}

А как тут скользящие вывести на график ?

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 365 раз
Контактная информация:

Re: Стратегия Invest_Grid

Непрочитанное сообщение evge » 26 май 2023, 06:57

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

/**Developed by evge;**/

function Initialize()
{
   StrategyName = "iGrid1";
   AddInput("I", Inputs.Candle, 5, true, "SBER=МБ ЦК");

   AddParameter("Lot", 100, "Кол-во докупки");
   AddParameter("D", 0.3, "Изм. цены для докупки");
   AddParameter("f", 20, "fast", 1);
   AddParameter("s", 180, "slow", 1);
 
   LongLimit = 5000;
   ShortLimit = -5000;
                 
   AddGlobalVariable("Last", Types.Double, 0.0);
   
   AddGlobalVariable("isLong", Types.Boolean, false);

   AddChartIndicator("SMA", new Dictionary <string, string>{{"SMA", "f"}});
   AddChartIndicator("SMA", new Dictionary <string, string>{{"SMA", "s"}});
}

function OnUpdate()
{

var IC = I.Close;
var CP = CurrentPosition();

// + Опередляем общее направление торговли
var S1 = SMA(I.Close, f);
var S2 = SMA(I.Close, s);

if (S1[0] > S2[0])
isLong = true;
else
isLong = false;
// -

if (Last == 0) Last = IC;

if (isLong && IC < Last - D)
{
   if (CP >= 0)
      EnterLong(Lot);
   else
      CloseShort(Lot);
}
else if (!isLong && IC > Last + D)
{
   if (CP <= 0)
      EnterShort(Lot);
   else
      CloseLong(Lot);
}

if (IC > Last + D) Last = IC;
if (IC < Last - D) Last = IC;

}
никогда такого не было и вот опять


Вернуться в «Стратегии и роботы»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 13 гостей