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



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

СообщениеДобавлено: Ср Фев 19, 2020 5:10 pm Ответить с цитатой Вернуться к началу

Помогите правильно отредактировать скрипт Amibroker для выставления заявок в QUIK.Создаются файлы tri. и tro. , но Quik выдает ошибку!

Buy=Sell=Short=Cover=0;


sysN = 1; // номер системы (в данном примере) или номер бумаги (в примере ООО)
TickSize = 5; // шаг цены. у фьючерса на индекс РТС он равен 5.
LongSize = 5; // в лонг торгуем 5 контрактов
ShortSize = 3; // в шорт торгуем 3 контракта
TradePrice = LastValue( Close );
ticker = Name(); // код бумаги, типа RIZ0


quik = ParamToggle( "Autotrading", "No|Yes", defaultval=1 ); // вкл/выкл сброс транзакций в .tri файл
SysPos = StaticVarGet( ticker+sysN );
SysPos = Nz(SysPos);
zero = ParamTrigger("Обнуление позиции", "Click here to null a position");
if( zero )
{
SysPos = 0;
StaticVarSet( ticker+sysN+"order1", 0 );
StaticVarSet( ticker+sysN+"order2", 0 );
StaticVarSet( ticker+sysN+"order3", 0 );
StaticVarSet( ticker+sysN+"order4", 0 );
}


///////// Проверка исполнения транзакции \\\\\\\\\
for(i = 1; i <= 4; i++)
{
order = StaticVarGet( ticker+sysN+"order"+i );
order_st = NumToStr ( order, 1.0, False );
printf( "Ошибок в позе " + i + " = " + order_st + "\n" );
if( quik && order > 0 )
{
troFile = "C:/QUIK/Transactions/orders.tro";
trof = fopen(troFile, "r");


if(trof)
{
while(!feof(trof))
{
s = fgets(trof);
if(StrCount( s, order_st) > 0)
{
ststus = StrFind(s, "STATUS=");
ststus = StrMid( s, ststus+6, 1);
ststus_num = StrToNum(ststus);


if(ststus_num == 3)
{
ordn = StrFind(s, "ORDER_NUMBER=");
ordn = StrMid( s, ordn+12, 10);
PopupWindow( "Заявка, с биржевым номером " + ordn +
",\nуспешно зарегистрирована.",
"Заявка зарегистрирована!", timeout = 86400, left = -1, top = -1 );
StaticVarSet( ticker+sysN+"order"+i, 0 );
}
else
if(ststus_num != 3 AND ststus_num != 0)
{
PopupWindow( "Транзакция с номером " + order_st +
" не зарегистрирована.\n Ошибка № " + ststus,
"Транзакция не прошла!", timeout = 86400, left = -1, top = -1 );
StaticVarSet( ticker+sysN+"order"+i, -666 );
// если в окне Interpretation стоит цифра -666, значит транзакция не прошла
}
}
}
fclose(trof);
}
}}


//////////// Формируем транзакцию \\\\\\\\\\\\\
procedure save2tri(transid, tradedir, execution, Lots, fulldir)
{
fmkdir( "C:\\QUIK" );
fmkdir( "C:\\QUIK\\Transactions" );
triFile = "C:/QUIK/Transactions/trans.tri";
Account = "XXX"; // аккаунт на бирже
Classcode = "SPBFUT";


transid = NumToStr ( transid, 1.0, False );
f = fopen(triFile, "r");
if(f)
{
while(!feof(f))
{
s = fgets(f);
if(StrCount( s, transid) > 0)
{
for( i = 2; StrCount( s, transid) == 0; i++ )
{
PopupWindow( "Транзакция с номером " + transid +
" уже есть.\n Поделили на " + i,
"Повтор номера транзакции", timeout = 86400, left = -1, top = -1 );


transid = NumToStr( round( StrToNum(transid) / i ), 1.0, False);
}
}
}
fclose(f);
}


str =
"TRANS_ID=" + transid + "; " +
"PRICE=" + NumToStr(execution, format = 1.0, separator=False) + "; " +
"QUANTITY=" + NumToStr(Lots, format = 1.0, separator=False) + "; " +
"OPERATION=" + tradedir + "; " +
"CLASSCODE=" + Classcode + "; " +
"ACTION=" + "NEW_ORDER; " +
"TYPE=" + "L; " +
"SECCODE=" + ticker + "; " +
"ACCOUNT=" + Account + "; " +
"CLIENT_CODE="+ sysN + " " + fulldir + ";"; // комментарий


f = fopen(triFile, "a");
if(f)
{
fputs(str + "\n", f);
fclose(f);
}
}


if( quik )
{
//--------------- Cover ---------------//
if( Cover[BarCount-2] && SysPos == -1 )
{
transid = Now(format = 4) * 100 + 40 + sysN;
exprice = TradePrice + TickSize * 10;
save2tri(transid,"B",exprice, ShortSize, "Cover");
StaticVarSet( ticker+sysn+"order4", transid );
SysPos = 0;
}
//---------------- Buy ----------------//
if( Buy[BarCount-2] && SysPos == 0 )
{
transid = Now(format = 4) * 100 + 10 + sysN;
exprice = TradePrice + TickSize * 10;
save2tri(transid,"B",exprice, LongSize, "Buy");
StaticVarSet( ticker+sysn+"order1", transid );
SysPos = 1;
}
//---------------- Sell ---------------//
if( Sell[BarCount-2] && SysPos == 1 )
{
transid = Now(format = 4) * 100 + 20 + sysN;
exprice = TradePrice - TickSize * 10;
save2tri(transid,"S",exprice, LongSize, "Sell");
StaticVarSet( ticker+sysn+"order2", transid );
SysPos = 0;
}
//--------------- Short ---------------//
if( Short[BarCount-2] && SysPos == 0 )
{
transid = Now(format = 4) * 100 + 30 + sysN;
exprice = TradePrice - TickSize * 10;
save2tri(transid,"S",exprice, ShortSize, "Short");
StaticVarSet( ticker+sysn+"order3", transid );
SysPos = -1;
}
}


StaticVarSet( ticker+sysN, SysPos );
printf("Текущая позиция: " + WriteVal( SysPos, 1.0) + ". \n");
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Фев 20, 2020 10:00 am Ответить с цитатой Вернуться к началу

Так это надо начинать ковырять не с выкладывания кода, а как раз содержимое .tri
Неплохо так же знать как именно ругается Квик.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen