Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
Автор |
Сообщение |
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Заявку ты в любом случае ставишь функцией AS_QUIK_SEND_SYNC_NEWORDER.
Если это заявка лучше рынка, то она попадает в стакан, а номер её функция возвращает. Собственно пока она не исполнена, можно снимать в любой момент по этому номеру.
А если хуже рынка, то она сразу исполниться и смысла её снимать нету.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
Пытаюсь снять заявку получив из файла номер заявки и вместо 1720298587 уходит 1720290176.
AS_QUIK_KILL_ORDER возвращает 5, из файла с [SBER]NUM=1720298587, ами считывает правильно, но потом происходит подмена последних 3-4 цифр.
kosbar писал(а): |
Надо бы добавить в описание плагина описание функции по удалению ордеров. Я тут мучаюсь с этой функцией, никак не пойму как ей номер ордера передать, жалуется, говорит не тот тип...
Вот правильный пример функции:
AS_QUIK_KILL_ORDER("333", "SPBFUT00111", "SPBFUT", "RIH2", "6942616014");
А ордер придётся сейвить в файл, через StrToNum и читать не без NumToStr
ЫЫЫ, веселье: функция ами StrToNum шестизначный номер Ордера - 6942951928 превращает в число со знаком = -1646982656.
Олег, а функции - AS_WRITE_PARAM() и AS_READ_PARAM(), смогут записать и прочитать строковый параметр? Ну, я это ща проверю, конечно... Но чот сумневаюсь)))))
НЭ МОГУТ! |
Человек тут писал что нэ могут .. Как же правильно получить этот номер?
Код: |
num = AS_READ_PARAM("Robo", Name(), "NUM");
if(connection)
{
Vb= AS_QUIK_KILL_ORDER ("123", // OrderID - Любые цифры
"45519", // Код Клиента
"QJSIM", // Код класса
"SBER", // Символ (SECCODE)
"num"); // Номер ордера который хотим снять
}
|
|
Последний раз редактировалось: zyanov (Пт Май 11, 2012 12:33 am), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я не могу понять в чем трабл.
Номер ордера получается в текстовом формате т.к. в числовом Ами лажается из за переполнения формата.
Номер снимаемого ордера тоже надо отправлять в текстовом формате.
В промежутке тоже не надо превращать текст в номер.
Т.Е. С НОМЕРОМ ЗАЯВКИ РАБОТАЙ ВСЕГДА КАК С ТЕКСТОМ!!! |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А для записи номера ордера в файл используй функцию AS_WRITE_STRING() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
записывает
Код: |
AS_WRITE_STRING("robot", Name(), "pos", order); |
читает
Код: |
num= AS_READ_PARAM("robot", Name(), "pos");
|
пробую и так
Код: |
num= NumToStr(AS_READ_PARAM("robot", Name(), "pos")); |
А как будет правильно? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Первые два правильно. Третий не правильно.
Ошибка. Второй тоже не правильно. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег.
Последний раз редактировалось: 000 (Вс Май 13, 2012 5:41 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
так и делал |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Так что неполучается? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
zyanov
Зарегистрирован: 15.04.2012
Сообщения: 28
|
Не получается удалить заявку по причине неправильности номера заявки |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну если ты пользуешься тем кодом который видно на скрине, то кавычки то у num удали вот тут
"num"); // номер ордера который хотим снять
и раньше, там где читаешь номер ордера из файла надо не AS_READ_PARAM(), а AS_READ_PARAM_STR |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Slava8519
Зарегистрирован: 19.04.2012
Сообщения: 10
|
Здравствуйте! А вот еще вопрос появился: а как натравить этот робот на тиковые графики? Например на 20ти или 50ти тиковые. Можно ли такое в принципе? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А почему нельзя? Какой интервал в АА включишь, на таком и будет работать. Только надо проверку интервала в роботе чуток модифицировать или убрать совсем. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Slava8519
Зарегистрирован: 19.04.2012
Сообщения: 10
|
В теории я все понял - вроде ничего сложного. Но когда убираю проверку - почему-то робот перестает отправлять какие либо заявки в принципе. При этом ни о каких ошибках не сообщает. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А как ты её убираешь? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Slava8519
Зарегистрирован: 19.04.2012
Сообщения: 10
|
Я сделал просто:
if ((TimeFrame == Interval() OR TimeFrame != Interval()) AND Permit_Ticker)
{
if(Buy1[BarCount-1] AND pos == 0) {
str = str + " Buy";
sd = "Buy";
orders("B", round(C[BarCount-1]) + Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
if(Sell1[BarCount-1] AND pos > 0) {
str = str + " Sell";
sd = "Sell";
orders("S", round(C[BarCount-1]) - Otstup, abs(pos));
AS_WRITE_FILE("log.quik", str);
}
if(Short1[BarCount-1] AND pos == 0) {
str = str + " Short";
sd = "Short";
orders("S", round(C[BarCount-1]) - Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
if(Cover1[BarCount-1] AND pos < 0) {
str = str + " Cover";
sd = "Cover";
orders("B", round(C[BarCount-1]) + Otstup, abs(pos));
AS_WRITE_FILE("log.quik", str);
}
}
Я наверное чего-то недопонял. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов AmiSite.ru » Роботы |
На страницу Пред. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|