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



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

СообщениеДобавлено: Вт Июл 28, 2015 5:43 pm Ответить с цитатой Вернуться к началу

Олег, не получается ...код дает ошибку..что то там про com объект в строчке которую ты написал заменить.

В общем забей. Старый код заработал. На семерке, альфу и ами запускаю от имени администратора и все работает как и раньше)
Посмотреть профиль Отправить личное сообщение
al2410



Зарегистрирован: 11.11.2012
Сообщения: 9
Откуда: МО п. Уваровка

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

Здравствуйте Олег. Воспользовался кодом Orange2000 который чуть выше постом как есть без изменений, но файл Quik_Robot.ini в папке Amibroker не появляется, соответственно код не работает, файл AS_File.dll скачал и закинул в Plugins. Подскажите в чём дело.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

А сигналы то были?
Пока сигналов нет лог файл не создается.

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



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

СообщениеДобавлено: Сб Авг 01, 2015 5:02 pm Ответить с цитатой Вернуться к началу

al2410 писал(а):
Здравствуйте Олег. Воспользовался кодом Orange2000 который чуть выше постом как есть без изменений, но файл Quik_Robot.ini в папке Amibroker не появляется, соответственно код не работает, файл AS_File.dll скачал и закинул в Plugins. Подскажите в чём дело.


Файл создается и называется log.quik
Проверьте.

У меня этот код в итоге не заработал все равно. Где-то ошибка. Но работает код в первом посте. Поэтому я успокоился)
Посмотреть профиль Отправить личное сообщение
Orange2000



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

СообщениеДобавлено: Вт Авг 04, 2015 10:15 am Ответить с цитатой Вернуться к началу

Олег, доброе утро!

такой овпрос, он и раньше беспокоил меня. По данному коду ( в шапке).

Торгую минутки. Если, например, отключали интернет на 10 минут. Потом включили. Альфа автоматом делает релогин и в ами появляются эти 10 минут сразу. И если внутри эти 10 минут был сигнал робота то он игнорируется.

Ну в логике алгоритма я так понимаю идет анализ последней свечи, а так как она уже прошла, поэтому и нет сделки.

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


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

СообщениеДобавлено: Вт Авг 04, 2015 7:50 pm Ответить с цитатой Вернуться к началу

В принципе можно написать так, чтобы код следил какова должна быть текущая позиция с учетом n-последних баров и если поза робота не соответствует то корректируем позу робота. Только вот мне кажется, что не в любом случае это надо делать. Например если пропущен вход из неитральной позиции, то наверное не стоит догонять паровоз...

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



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

СообщениеДобавлено: Сб Сен 19, 2015 9:43 am Ответить с цитатой Вернуться к началу

Олег, доброе утро!

Не знаю, можно ли решить данную проблему с этим нашим роботом. Дело в том что периодически когда работают скрипты, ами перестает закачивать котировки через альфа плагин. Делаю разъединить плагин и вновь соединить и опять качает.
Происходит раз в день обязательно.
Закономерностей особо не могу найти. Происходит на разных таймфреймах, разных бумагах в момент отсылки зявки только. Если например скрипты работают как советники (лонг и шорт =0) то ничего не виснет.
Чаще почему то виснет когда ШОРТ идет.
ВОт фрагмент кода, где возможно есть недоработка:

Код:

if ((Now(3)==LastValue(DateNum()))AND(BarCount>1)AND(Name()==Ticker)AND(TimeFrame==Interval()/60)AND((Buy[BarCount-1]>0)OR(Sell[BarCount-1]>0)OR(Short[BarCount-1]>0)OR(Cover[BarCount-1]>0))) {
  ifbuy=IIf(Buy[BarCount-1]==1,1,0); 
  ifsell = Sell[BarCount-1] > 0;
  ifshort=IIf(Short[BarCount-1]==1,1,0); 
  ifcover = Cover[BarCount-1] > 0;
 
  if (ifbuy AND pos == 0) {
    price=(1+Otstup/100)*Close[BarCount-1];
    script = GetScriptObject();
    OrderNum = script.OrderBuy (lotsB,price);
    writeposition( 3 );
    WriteVal (OrderNum);

  }
  if (ifsell AND (pos == 1 OR pos == 3)) {
    price=(1-Otstup/100)*Close[BarCount-1];
    script = GetScriptObject();
    OrderNum = script.OrderSell (lotsB, price);
    writeposition( 0 );
    WriteVal (OrderNum);

  }
  if (ifshort AND pos == 0) {
    price=(1-Otstup/100)*Close[BarCount-1];
   script = GetScriptObject();
    OrderNum = script.OrderSell (lotsS,price);
   writeposition( 2 );
    WriteVal (OrderNum);

  }
  if (ifcover AND (pos == 1 OR pos == 2)) {
    price=(1+Otstup/100)*Close[BarCount-1];
   script = GetScriptObject();
    OrderNum = script.OrderBuy (lotsS,price);
   writeposition( 0 );
    WriteVal (OrderNum);
  }
}



может ты что нить увидишь тут?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Сен 20, 2015 11:17 pm Ответить с цитатой Вернуться к началу

Привет.
Первый вопрос который возникает, а действительно ли такая проблема возникает только когда работает скрипт? Может плагин и без скрипта время от времени отваливается? Если без скрипта работает стабильно и дело именно в совместной работе, то вероятно дело в ком объектах.
Цитата:
Функцию CreateObject следует использовать при отсутствии текущих экземпляров объекта. Если экземпляр объекта уже существует, будет запущен новый экземпляр и создан объект соответствующего типа. Для использования существующего экземпляра или запуска приложения и загрузки файла следует использовать функцию GetObject. Если объект зарегистрировался в качестве объекта с единственным экземпляром, то вне зависимости от числа запусков функции CreateObject создается только один экземпляр объекта.

Может сюда покопать?

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



Зарегистрирован: 11.11.2012
Сообщения: 9
Откуда: МО п. Уваровка

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

Orange2000 писал(а):
al2410 писал(а):
Здравствуйте Олег. Воспользовался кодом Orange2000 который чуть выше постом как есть без изменений, но файл Quik_Robot.ini в папке Amibroker не появляется, соответственно код не работает, файл AS_File.dll скачал и закинул в Plugins. Подскажите в чём дело.


Файл создается и называется log.quik
Проверьте.

У меня этот код в итоге не заработал все равно. Где-то ошибка. Но работает код в первом посте. Поэтому я успокоился)


Уважаемый Orange2000! Подскажите пожалуйста, какие есть нюансы в успешной работе вашего кода из первого поста? В течении нескольких лет время от времени пытаюсь его запустить но безрезультатно. Amibroker настраиваю по описанию отсюда http://www.amisite.ru/afl/exp/0001.php. В ваш код не вношу никаких изменений кроме своего счёта, таймфрейма в 5 минут и инструмента(SBER-12.15). В Amibrokere жму Scan, график сигналы рисует, в окне Result List сделки показывает но в Альфу не посылает. Если жму Explore, в окне Result List ничего не происходит и на графике сигналов нет. В Альфе открыты окна Мои позиции, Мои заявки, Мои сделки и соответствующий график с таймфреймом 5 мин. Всё запускаю от имени администратора. Что ещё я не делаю или делаю не так?
Посмотреть профиль Отправить личное сообщение
Orange2000



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

СообщениеДобавлено: Пн Сен 28, 2015 9:40 pm Ответить с цитатой Вернуться к началу

al2410 писал(а):
Что ещё я не делаю или делаю не так?


Прверьте начало файла:
Вот мое текущее..сделайте по аналогии
Код:

TickerID=4;               // уникальный для каждого индикатора номер
Ticker="FORTS.RTSI-12.15";      // название бумаги в Амиброкере. На другой бумаге работать не будет
TimeFrame=5;              // таймфрейм в минутах. На других таймфреймах работать не будет
lotsB=5;                  // сколько лотов желаете торговать в long
lotsS=5;                  // сколько лотов желаете торговать в short

Otstup=1;                // в процентах. заявка будет выставлена хуже текущей цены на столько процентов
qqq="rts_2_5";           // уникальное дополнение для файла проверки, если надо несколько роботов на одной бумагею. Файл пишется в папке Амиброкера.
Acco="00000-000"   ;        // ваш счет
Mar="FORTS";              // площадка (FORTS или MICEX_SHR)
Emi= "RTSI-12.15";        // обозначение бумаги


Данный файл делайте как индикатор и делаете Insert на график. В папке Ами появится файл с названием из qqq. Подправите его в зависимости от позиции робота на данный момент. 0- кеш, 2- шорт, 3 - лонг). Ами в процессе работы не сворачиваете в панель задач.

В папке в альфой должен быть файл winros.exe, проверьте. В вин7 немного путанница с ней, ставится отдельно от программ файлс. Т.е. точно определите откуда запускается альфадирект.
Должно все работать.

а вообще график обновляется и как обновляте? через плагин альфадиректа?
Посмотреть профиль Отправить личное сообщение
al2410



Зарегистрирован: 11.11.2012
Сообщения: 9
Откуда: МО п. Уваровка

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

Плагин 310821-AlfaDirectDataFeed от "Xamele0n" взял с форума Паука, графики обновляются, при запуске амиброкер автоматически запускается альфадирект.
Посмотреть профиль Отправить личное сообщение
Orange2000



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

СообщениеДобавлено: Вт Сен 29, 2015 10:51 am Ответить с цитатой Вернуться к началу

al2410 писал(а):
Плагин 310821-AlfaDirectDataFeed от "Xamele0n" взял с форума Паука, графики обновляются, при запуске амиброкер автоматически запускается альфадирект.


через скан не надо делать. Мой скрипт работает как индикатор. Пробуйте!

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



Зарегистрирован: 11.11.2012
Сообщения: 9
Откуда: МО п. Уваровка

СообщениеДобавлено: Ср Сен 30, 2015 3:32 pm Ответить с цитатой Вернуться к началу

Уважаемый Orange2000! Спасибо за помощь! Всё оказалось намного проще чем могло бы показаться. В Вашем коде из первого поста написано так
Цитата:
Ticker="RTSI-12.15"; // название бумаги в Амиброкере. На другой бумаге работать не будет

а в вашем посте выше, так
Цитата:
Ticker="FORTS.RTSI-12.15"; // название бумаги в Амиброкере. На другой бумаге работать не будет

Кто бы мог подумать что код окажется нерабочим из-за неправильного указания тикера.
Кстати на Windows7 никаких манипуляций с winros не производил, код и так работает!

Правда заметил что в файл qqq так же записывается позиция которая не прошла в альфадирект, допустим из-за нехватки средств по лимитам клиента. Непонятно как это будет влиять на торговлю в автоматическом режиме.
Посмотреть профиль Отправить личное сообщение
al2410



Зарегистрирован: 11.11.2012
Сообщения: 9
Откуда: МО п. Уваровка

СообщениеДобавлено: Пт Окт 09, 2015 5:03 pm Ответить с цитатой Вернуться к началу

Orange2000 добрый день! Вот этот код
Код:
TickerID=1;               // уникальный для каждого индикатора номер
Ticker="FORTS.RTSI-12.15";      // название бумаги в Амиброкере. На другой бумаге работать не будет
TimeFrame=5;              // таймфрейм в минутах. На других таймфреймах работать не будет
lotsB=1;                  // сколько лотов желаете торговать в long
lotsS=1;                  // сколько лотов желаете торговать в short
Otstup=1;                // в процентах. заявка будет выставлена хуже текущей цены на столько процентов
qqq="rtsi_2_5";           // уникальное дополнение для файла проверки, если надо несколько роботов на одной бумаге. Файл пишется в папке Амиброкера.
Acco="00000-000"   ;        // ваш счет
Mar="FORTS";              // площадка (FORTS или MICEX_SHR)
Emi= "RTSI-12.15";        // обозначение бумаги

Dat= Now(1) + " 23:45";

fh = fopen( Name()+qqq + ".alfa", "r");     
if( !fh ) {                         
  fh = fopen( Name()+qqq + ".alfa", "w");   
  fputs( "0", fh );
  pos = 0;
  fclose( fh );
}
else {
  pos = StrToNum(fgets( fH ));           
  fclose( fh );                           
}
procedure writeposition( n ) {          // Пишем позицию в файл
  fh = fopen( Name ()+qqq + ".alfa", "w");
  fputs(NumToStr( n, 1.0, False ),fh);
  fclose( fh );
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
EnableScript("vbscript");

<%
Dim AD
Set AD = CreateObject("ADLite.AlfaDirect")
Acco= AFL("Acco")
Dat= AFL("Dat")
Mar= AFL("Mar")
Emi= AFL("Emi")

function OrderBuy(vblots,vbprice)
vbordernum = AD.CreateLimitOrder (Acco, Mar, Emi, Dat, "Buy comment", "RUR", "B", vblots, vbprice, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, 10)
OrderBuy = vbordernum
End function

function OrderSell(vblots,vbprice)
vbordernum = AD.CreateLimitOrder (Acco, Mar, Emi, Dat, "Sell comment", "RUR", "S", vblots, vbprice, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, Null, 10)
OrderSell = vbordernum
End function

%>
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////// Правила системы ///////////////
bars = Optimize("Opt1", 2, 2, 38, 1);
HLine=Ref(HHV(H,bars),-1);
LLine=Ref(LLV(L,bars),-1);
Buy=H>Hline;
Sell=L<LLine;
Short=L<LLine;
Cover=H>Hline;
ApplyStop( 0, 1, .1, 1 );
////// Убираем лишние сигналы /////////////
Buy=ExRem(Buy,Sell);Sell=ExRem(Sell,Buy);Short=ExRem(Short,Cover);Cover=ExRem(Cover,Short);
 
///////////// Рисуем всякое ///////////////
Equity(1);
GraphXSpace = 9;

Plot(C,"price",12,1);
PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-10);
PlotShapes(IIf(Sell,shapeHollowDownArrow,0),4,0,Graph0,-20);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-20);
PlotShapes(IIf(Short,shapeDownArrow,0),4,0,Graph0,-10);
Plot( Volume, "Volume", 0, styleHistogram | styleOwnScale, 1,110000 );

//////////////////////////////////////////////////////////////////////////////////

if ((Now(3)==LastValue(DateNum()))AND(BarCount>1)AND(Name()==Emi)AND(TimeFrame==Interval()/60)AND((Buy[BarCount-1]>0)OR(Sell[BarCount-1]>0)OR(Short[BarCount-1]>0)OR(Cover[BarCount-1]>0))) {
  ifbuy=IIf(Buy[BarCount-1]==1,1,0); 
  ifsell = Sell[BarCount-1] > 0;
  ifshort=IIf(Short[BarCount-1]==1,1,0); 
  ifcover = Cover[BarCount-1] > 0;
 
  if (ifbuy AND pos == 0) {
    price=(1+Otstup/100)*Close[BarCount-1];
    script = GetScriptObject();
    OrderNum = script.OrderBuy (lotsB,price);
    writeposition( 3 );
    WriteVal (OrderNum);

  }
  if (ifsell AND (pos == 1 OR pos == 3)) {
    price=(1-Otstup/100)*Close[BarCount-1];
    script = GetScriptObject();
    OrderNum = script.OrderSell (lotsB, price);
    writeposition( 0 );
    WriteVal (OrderNum);

  }
  if (ifshort AND pos == 0) {
    price=(1-Otstup/100)*Close[BarCount-1];
   script = GetScriptObject();
    OrderNum = script.OrderSell (lotsS,price);
   writeposition( 2 );
    WriteVal (OrderNum);

  }
  if (ifcover AND (pos == 1 OR pos == 2)) {
    price=(1+Otstup/100)*Close[BarCount-1];
   script = GetScriptObject();
    OrderNum = script.OrderBuy (lotsS,price);
   writeposition( 0 );
    WriteVal (OrderNum);
  }
}

GfxSetOverlayMode(1);
GfxSelectFont("Tahoma", Status("pxheight")/6 );
GfxSetTextAlign( 6 );// center alignment
GfxSetTextColor( ColorRGB( 231, 231, 225 ) );
GfxSetBkMode(1); // transparent
GfxTextOut( Name(), Status("pxwidth")/2, Status("pxheight")/12 );

На ноутбуке с Windows7 Максимальная у меня этот код работает, а на другом ноутбуке с Windows7 Профессиональная никак не хочет работать. Можете проверить на своей системе?!
Никак не пойму какая разница между системами! Может не хватает каких-то библиотек или наоборот я лишние поставил. Не понимаю.
Посмотреть профиль Отправить личное сообщение
Orange2000



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

СообщениеДобавлено: Пн Окт 12, 2015 10:44 am Ответить с цитатой Вернуться к началу

Добрый день.
Код работает.
win7 home service pack1 лицензия.

Прверьте первую строчку кода на компе который не работает, Номер должен быть уникальным.
Ну и еще проверьте создается ли файл в папке с Ами. Может быть проблема с правами.
Ну и банально просто ошибка в названии самого графика в амиброкере.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen