Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Помогите разобратся с роботом Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Июл 15, 2016 10:36 am Ответить с цитатой Вернуться к началу

Вот это место
Код:
   if(StrToNum(order) > 100)
   {
      iz = "исполнена";
      coloriz = colorGreen;
      str = str + "  заяка исполнена" + " ответ сервера=" + order;
      if(pos > 0 AND bs == "S")                // закрытие лонга
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", 0);
      }
      else if(pos == 0 AND bs == "S")         // шорт
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", Close[BarCount - 2]);
      }
      else if(pos < 0 AND bs == "B")          // закрытие шорта
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", 0);
      }
      else if(pos == 0 AND bs == "B")       // лонг
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", Close[BarCount - 2]);
      }
      str = str + "  позиция на момент исполнения " + pos;
   }

измени так
Код:
   if(StrToNum(order) > 100)
   {
      iz = "исполнена";
      coloriz = colorGreen;
      str = str + "  заяка исполнена" + " ответ сервера=" + order;
      if(pos > 0 AND bs == "S")                // закрытие лонга
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", 0);
      }
      else if(pos == 0 AND bs == "S")         // шорт
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", Close[BarCount - 1]);
      }
      else if(pos < 0 AND bs == "B")          // закрытие шорта
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", 0);
      }
      else if(pos == 0 AND bs == "B")       // лонг
      {
         AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot);
         AS_WRITE_PARAM("Quik_Robot", Name(), "price", Close[BarCount - 1]);
      }
      str = str + "  позиция на момент исполнения " + pos;
   }

Больше ошибок не вижу.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Пт Июл 15, 2016 10:43 am Ответить с цитатой Вернуться к началу

Спасибо. Протестирую отпишусь.
Посмотреть профиль Отправить личное сообщение
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Сб Июл 16, 2016 4:59 pm Ответить с цитатой Вернуться к началу

А как можно описать.
После появления сигнала например Sell ждать 5 мин, если он не пропал, то сделка Sell исполняется, если пропал то противоположная сделка Buy. Система реверсивная, т.е находясь в Buy и при появления сигнала Sell(который пропал) оставаться в сделке.
Код:

Buyperiods=Param("Breakout periods best is usually 18",6,1,100,1);
 Sellperiods=Param("Exit Breakout",7,1,100,1);
 Buy= C>Ref(HHV(High,Buyperiods),-1);
 Sell= C<Ref(LLV(Low,Sellperiods),-1);
  Buy = ExRem( Buy, Sell );
 Sell = ExRem( Sell, Buy );
 Short =  Sell;
 Cover =  Buy;
Посмотреть профиль Отправить личное сообщение
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Вс Июл 17, 2016 12:27 pm Ответить с цитатой Вернуться к началу

Система получает сигналы по тайфрейму 75 мин.
Вход осуществляется на 5 минутном тайфрейме на следующей свече по сигналу 75 мин.
Если сигнална 75 мин. был и пропал в течении 5 минут, то вход не осуществляется.
Я так понимаю надо работать с жатием разжатием таймфрема?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Июл 17, 2016 1:41 pm Ответить с цитатой Вернуться к началу

Полно всяких нюансов. Робот же не постоянно "смотрит" на рынок а сканирует периодически (1 раз в сек). По идее при появлении сигнала надо его записать и записать время его появления. Затем следить и если он пропал, то запись о сигнале убираем. Если текущее время на 5 мин больше времени появления сигнала, то исполняем сигнал. Но. Если в течении секунды когда робот не смотрит на рынок сигнал пропал и опять появился, то робот об этом никогда не узнает. (((

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Вс Июл 17, 2016 1:48 pm Ответить с цитатой Вернуться к началу

Ну а сигнал на большем таймфрейме(75 мин.), а исполнение на меньшем
таймфрейме (5 мин) на следующей свече. Как записать?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Июл 17, 2016 6:38 pm Ответить с цитатой Вернуться к началу

Разумеется надо использовать функции TimeFrame...()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Вс Июл 17, 2016 7:33 pm Ответить с цитатой Вернуться к началу

Код:

TimeFrameSet( 15*in5Minute );/// таймфрейм 75 мин
 
 SBuy= C>Ref(HHV(High,6),-1); ///сигнал Buy
 SSell= C<Ref(LLV(Low,7),-1);///сигнал Sell
 
TimeFrameRestore(); // разжимаем до 5 минуток выставленый в АА

 Buy=SBuy;
  Sell=SSell;
  Buy = Buy[BarCount - 1];
 Sell = Sell[BarCount - 1];
   Buy = ExRem(Buy, Sell);
 Sell = ExRem(Sell, Buy);
   Short =  Sell;
  Cover =  Buy;
 PlotShapes( shapeUpTriangle*Buy, colorGreen, 0, L, -10 );
 PlotShapes( shapeDownTriangle*Sell, colorRed, 0, H, -10 );

Сильно не пинать учусь. Чего то не рисует точки входа и на бектестере
нет результатов.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Июл 17, 2016 10:51 pm Ответить с цитатой Вернуться к началу

Ты пишешь "разжимаем до 5 минуток выставленый в АА " это не так. Функцией TimeFrameRestore() ты просто возвращаешь массивы OHLCV в иначальное состояние
Еще надо именно расжать массив сигналов. Это делается функцией TimeFrameExpand()

Код:
TimeFrameSet( 15*in5Minute );/// таймфрейм 75 мин
 
 SBuy= C>Ref(HHV(High,6),-1); ///сигнал Buy
 SSell= C<Ref(LLV(Low,7),-1);///сигнал Sell
 
TimeFrameRestore();

SBuy = TimeFrameExpand(SBuy, 15*in5Minute);
SSell = TimeFrameExpand(SSell, 15*in5Minute);
.....

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Пн Июл 18, 2016 3:59 pm Ответить с цитатой Вернуться к началу

Сделал почему то не отображает сигналы.
Надо и вторую часть кода сжимать разжимать?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Июл 18, 2016 4:54 pm Ответить с цитатой Вернуться к началу

Нет. Больше ничего разжимать не надо.
А вот это ты зачем сделал?
Код:
Buy = Buy[BarCount - 1];
Sell = Sell[BarCount - 1];

Тут ты "убил" все сигналы.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Пн Июл 18, 2016 4:58 pm Ответить с цитатой Вернуться к началу

а как надо что бы вход был на следующей свече?
Посмотреть профиль Отправить личное сообщение
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Пн Июл 18, 2016 8:49 pm Ответить с цитатой Вернуться к началу

Прогонял счас этот код на Bar Replay на двух таймфреймах
75 мин и нижний график 5 мин, так вот вход происходит на 5-ой 5 минутке. Появляется сигнал на 75 мин, а потом через 5 свечей на 5минутке.
Как связать сигнал на свече 75 мин и 5 мин свече?
Да еще ложные сигналы, которые появляются и исчезают на 75 мин, на 5 мин не появляются!!!
То есть мы на правильном пути.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Июл 18, 2016 10:08 pm Ответить с цитатой Вернуться к началу

Если бы я еще знал какой ЭТОТ код ты прогнал был бы не такой туман Smile

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
IzBu



Зарегистрирован: 28.06.2016
Сообщения: 83

СообщениеДобавлено: Пн Июл 18, 2016 10:10 pm Ответить с цитатой Вернуться к началу

Код:

TimeFrameSet( 15*in5Minute );/// таймфрейм 75 мин
 
 SBuy= C>Ref(HHV(High,6),-1); ///сигнал Buy
 SSell= C<Ref(LLV(Low,7),-1);///сигнал Sell
SBuy = ExRem(SBuy, SSell);
 SSell = ExRem(SSell, SBuy);
 
TimeFrameRestore(); //
SBuy = TimeFrameExpand(SBuy, 15*in5Minute);
SSell = TimeFrameExpand(SSell, 15*in5Minute);
 Buy=SBuy;
  Sell=SSell;
     Buy = ExRem(Buy, Sell);
 Sell = ExRem(Sell, Buy);
   Short =  Sell;
  Cover =  Buy;
 PlotShapes( shapeUpTriangle*Buy, colorGreen, 0, L, -10 );
 PlotShapes( shapeDownTriangle*Sell, colorRed, 0, H, -10 );

Вот этот
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen