Торговый автомат Амиброкер+Квик

  • Автор темы mehanizator1
  • Дата начала

ko

New member
Прошу прощение за невежество, но не поясните ли, чем хорош Ami Broker?
Ради чего его стоит использовать и какие преимущества пред Метастоком?

Спасибо
 

mehanizator1

New member
Прошу прощение за невежество, но не поясните ли, чем хорош Ami Broker?
Ради чего его стоит использовать и какие преимущества пред Метастоком?

Спасибо
там более продвинутый язык построения систем, и тестер лучше.
 

ko

New member
Прошу прощение за невежество, но не поясните ли, чем хорош Ami Broker?
Ради чего его стоит использовать и какие преимущества пред Метастоком?

Спасибо
там более продвинутый язык построения систем, и тестер лучше.
Спасибо. И я так понимаю, что Ami Broker умеет получать данные из Метастока в риалтайме? Поэтому и возможно создание автомата?
Ami Broker получает данные из Метастока, генерит текстовый файл и посовывает его Квику? Так работает робот?
 

mehanizator1

New member
И я так понимаю, что Ami Broker умеет получать данные из Метастока в риалтайме?
ну там не совсем риалтайм, задержка порядка минуты будет. если критично, то лучше экспорт не через мету делать, а через ексель.

Ami Broker получает данные из Метастока, генерит текстовый файл и посовывает его Квику? Так работает робот?
да
 

Yurmih

New member
ну там не совсем риалтайм, задержка порядка минуты будет. если критично, то лучше экспорт не через мету делать, а через ексель.
Mehanizator, для моей системы кртитична задержка в одну минуту. Подскажи, пожалуйста, как через ексель делать экспорт в ами.
 

mehanizator1

New member
ну там не совсем риалтайм, задержка порядка минуты будет. если критично, то лучше экспорт не через мету делать, а через ексель.
Mehanizator, для моей системы кртитична задержка в одну минуту. Подскажи, пожалуйста, как через ексель делать экспорт в ами.
это долго излагать, поищи здесь http://forex.kbpauk.ru/postlist.php/Cat/0/Board/ami (требуется регистрация)
 

asd

New member
ну там не совсем риалтайм, задержка порядка минуты будет. если критично, то лучше экспорт не через мету делать, а через ексель.
Mehanizator, для моей системы кртитична задержка в одну минуту. Подскажи, пожалуйста, как через ексель делать экспорт в ами.
здесь всё подробно расписано, там ещё есть QUIK и MySQL через ODBC и ещё кой-чё интересное для Ami
 

asd

New member
Щас попробовал этого робота - всё работает, только непонял, зачем выводить лимитированную заявку с отступом и как в таком случае узнать реальный объём сделки в Квике ? Не проще ли вывести рыночную заявку?
 

mehanizator1

New member
Щас попробовал этого робота - всё работает, только непонял, зачем выводить лимитированную заявку с отступом и как в таком случае узнать реальный объём сделки в Квике ? Не проще ли вывести рыночную заявку?
в то время когда писался этот робот, рыночные заявки в квик не проходили, по крайней мере через моего брокера. поэтому пришлось изощряться.
 
Большое спасибо тебе механизатор за то, что разработал автомат и поделился им со всеми. Хочу немного покритиковать. Дело в том, что расчет индикаторов и соответственно принятие решения происходит один раз за интервал графика. Однако, если был кратковременный разрыв связи и в метасток пропущенные данные поступили с опозданием, то возможно игнорирование торговых сигналов.

Для того, чтобы этого избежать нужно анализировать не последнее значение Buy, Sell, Short, Cover, а несколько последних.

if ((Now(3)==LastValue(DateNum()))AND(BarCount>1)AND(Name()==Ticker)AND(TimeFrame==Interval()/60)AND((Buy[BarCount-1]==1)OR(Sell[BarCount-1]==1)OR(Short[BarCount-1]==1)OR(Cover[BarCount-1]==1)))
{
History = 10;
if (BarCount > History)
{
for (i = BarCount - History; i < BarCount; i++)
{
ifbuy=IIf(Buy==1,1,0);
ifsell=IIf(Sell==1,1,0);
ifshort=IIf(Short==1,1,0);
ifcover=IIf(Cover==1,1,0);
if (ifbuy) {
price=(1+Otstup/100)*Close;
makeandsave("B",1,price);
}
if (ifsell) {
price=(1-Otstup/100)*Close;
makeandsave("S",2,price);
}
if (ifshort) {
price=(1-Otstup/100)*Close;
makeandsave("S",3,price);
}
if (ifcover) {
price=(1+Otstup/100)*Close;
makeandsave("B",4,price);
}
}
}
}
 
Не могу понять в чем дело

Почему то по одному сигналу на продажу генерятся два
и в разное время. Вот что пишется в tri файл
TRANS_ID=12292104500;PRICE=6546;QUANTITY=1;OPERATION=S;CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=GMKN; ACCOUNT=L01-00000F00; CLIENT_CODE=L01-00000F00;
TRANS_ID=12292110000;PRICE=6597;QUANTITY=1;OPERATION=S;CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=GMKN; ACCOUNT=L01-00000F00; CLIENT_CODE=L01-00000F00;

В индикаторе
стоит Short = 0, Cover = 0, файл транзакций специально очистил.

В чем может быть дело?
 
Re: Не могу понять в чем дело

Почему то по одному сигналу на продажу генерятся два
и в разное время. Вот что пишется в tri файл
TRANS_ID=12292104500;PRICE=6546;QUANTITY=1;OPERATION=S;CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=GMKN; ACCOUNT=L01-00000F00; CLIENT_CODE=L01-00000F00;
TRANS_ID=12292110000;PRICE=6597;QUANTITY=1;OPERATION=S;CLASSCODE=EQNL; ACTION=NEW_ORDER; TYPE=L; SECCODE=GMKN; ACCOUNT=L01-00000F00; CLIENT_CODE=L01-00000F00;

В индикаторе
стоит Short = 0, Cover = 0, файл транзакций специально очистил.

В чем может быть дело?
Да, особенность в том, что система работает на 15 минутках
 
там же разная цена и время, это не один сигнал, а два.
что-то с системой. exrem стоит?

SystemName="GMKN_robot_BB_3year_real";

TickerID=1; // уникальный для каждого индикатора номер
Ticker="GMKN"; // название бумаги в Амиброкере. На другой бумаге работать не будет
TimeFrame=15; // таймфрейм в минутах. На других таймфреймах работать не будет
Classcode="EQNL"; // код класса бумаги
Seccode="GMKN"; // код бумаги
Account="L01-00000F00"; // ваш аккаунт на бирже
Client="L01-00000F00"; // код клиента
Lots=1; // сколько лотов желаете торговать
FileName="c:/trade/real/trans.tri"; // слэши прямые!!! имя файла с транзакциями для квика
Otstup=1; // в процентах. заявка будет выставлена хуже текущей цены на столько процентов
Point=0; // количество знаков после запятой в цене


Periods = Optimize( "Periods", 50, 25, 60, 5 );
Width = Optimize( "Width", 0.3, 0.1, 1, 0.1 );
RSIperiods = Optimize( "RSI", 31, 25, 70, 3 );
MAperiods = Optimize( "MAPeriods", 11, 10, 20, 1 );

function MRSI( ar, range )
{
U = IIf( ar > Ref(ar, -1), ar - Ref(ar, -1), 0);
D = IIf( ar <= Ref(ar, -1), Ref(ar, -1) - ar, 0);
UE = Wilders( U, range );
DE = Wilders( D, range );
return (100 - (100/(1 + UE/DE)));
}

array = MA(MRSI(C, RSIperiods), MAperiods );

Buy = Cross( array, BBandBot( array , Periods, Width ));
Sell = Cross( BBandTop( array, Periods, Width ), array );

Short = 0;
Cover = 0;

////// Убираем лишние сигналы /////////////

Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);

Дальше стандартный код, как у Вас на сайте.
 

mehanizator1

New member
а, ну если по кроссам сигнал возникает, то понятно. кроссов на одном баре может быть несколько, и бар закрыться без кросса. в результате система будет отрабатывать кроссы еще и на следующем баре, так как для нее на прошлом баре сделки не было.
 
а, ну если по кроссам сигнал возникает, то понятно. кроссов на одном баре может быть несколько, и бар закрыться без кросса. в результате система будет отрабатывать кроссы еще и на следующем баре, так как для нее на прошлом баре сделки не было.
Можно ли просто проверять Buy[BarCount-2], Sell[BarCount-2],
Short[BarCount-2], Cover[BarCount-2] ?
 

mehanizator1

New member
а, ну если по кроссам сигнал возникает, то понятно. кроссов на одном баре может быть несколько, и бар закрыться без кросса. в результате система будет отрабатывать кроссы еще и на следующем баре, так как для нее на прошлом баре сделки не было.
Можно ли просто проверять Buy[BarCount-2], Sell[BarCount-2],
Short[BarCount-2], Cover[BarCount-2] ?
так там не будет ничего после того как бар закрылся. кросс то произошел внутри.
 
а, ну если по кроссам сигнал возникает, то понятно. кроссов на одном баре может быть несколько, и бар закрыться без кросса. в результате система будет отрабатывать кроссы еще и на следующем баре, так как для нее на прошлом баре сделки не было.
Можно ли просто проверять Buy[BarCount-2], Sell[BarCount-2],
Short[BarCount-2], Cover[BarCount-2] ?
так там не будет ничего после того как бар закрылся. кросс то произошел внутри.
А какие рецепты то есть от такой болезни? Заменить на больше, меньше?
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху