Начать новую тему Ответить на тему |
Список форумов 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 След. |
Автор |
Сообщение |
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
|
Посмотреть профиль Отправить личное сообщение |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
В общем, так - получилось.
Использую старый плагин AS_File.dll отсюда: http://www.amisite.ru/files/as_file.php.
Использую плагин AS_QuikTrade.dll отсюда: http://www.amisite.ru/files/as_quik_afl.php.
Код такой:
Код: |
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(), "BarID", 0);
}
else if(pos == 0 AND bs == "S") // шорт
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", -1*Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", 0);
}
else if(pos < 0 AND bs == "B") // закрытие шорта
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", 0);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", 0);
}
else if(pos == 0 AND bs == "B") // лонг
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", 0);
}
else if(pos > 0 AND bs == "B") // доливка к покупке
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", pos + Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", BarID);
}
else if(pos < 0 AND bs == "S") // доливка к шорту
{
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", pos - Lot);
AS_WRITE_PARAM("Quik_Robot", Name(), "BarID", BarID);
}
str = str + " позиция на момент исполнения " + pos;
}
else {
iz = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
|
Вроде всё работает (заявки в квик передаются, сделки в файл "Quik_Robot.ini" пишутся), отчёт пишется в файл "log.quik".
При использовании новой версии плагина AS_File почему-то отчёт писался в файл "log.quik.txt", а не в файл "log.quik", хотя код не менялся :
Код: |
if (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);
}
else 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);
}
else 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);
}
else 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);
}
else if(Buy2[BarCount-1] AND pos > 0 AND pos < LimB AND BarID != SdID) {
str = str + " Buy (доливка)";
sd = "BuyIn";
orders("B", round(C[BarCount-1]) + Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
else if(Short2[BarCount-1] AND pos < 0 AND abs(pos) < LimS AND BarID != SdID) {
str = str + " Short (доливка)";
sd = "ShortIn";
orders("S", round(C[BarCount-1]) - Otstup, Lots);
AS_WRITE_FILE("log.quik", str);
}
}
else if(TimeFrame != Interval()) {
PopupWindow( "Не соответствует временной интервал в настройках АА и в коде",
"ошибка", timeout = 5, left = -1, top = -1 );
} |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
ce_ser
Зарегистрирован: 22.06.2014
Сообщения: 9
|
|
Посмотреть профиль Отправить личное сообщение |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
Нет. Напишите руководство пользователя?
Хотя бы короткое?
Мне бы с роботом Олега при наличии подробной инструкции разобраться.
У меня получается с роботом Олега так:
Беру робота отсюда: http://www.amisite.ru/afl/exp/0004.php
Текст робота с моими правками - указанием доступа к учебному счёту - во вложении, файл "Quik_Robot3.afl"
Плагин AS_File отсюда: http://www.amisite.ru/files/plugins/AS_File_New.zip
Плагин AS_QuikTrade отсюда: http://www.amisite.ru/files/plugins/AS_QuikTrade.zip
Сначала возникает проблема, описанная тут: http://amisite.ru/phpBB2/viewtopic.php?p=25553#25553
Изменил в коде использование функции
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", .....);
на
AS_WRITE_PARAM("Quik_Robot", Name(), "pos", ..... , 0);
Появилась проблема, описанная тут: http://amisite.ru/phpBB2/viewtopic.php?p=25555#25555
Помимо этого, у меня используемый плагин AS_File при выполнении AS_WRITE_FILE("log.quik", str); почему-то выводит в файл "log.quik.txt", хотя в инструкции (http://www.amisite.ru/files/as_file_new.php) Олег написал: "Имя файла задается вместе с расширением".
Что вот мне не понятно - судя по форуму, у всех всё работает с этими плагинами. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ничего не понимаю. Ты же вроде написал
Цитата: |
Вроде всё работает (заявки в квик передаются, сделки в файл "Quik_Robot.ini" пишутся), отчёт пишется в файл "log.quik". |
??? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
000 писал(а): |
Ничего не понимаю. Ты же вроде написал
Цитата: |
Вроде всё работает (заявки в квик передаются, сделки в файл "Quik_Robot.ini" пишутся), отчёт пишется в файл "log.quik". |
??? |
Это работает, если я использую версию плагина AS_File самую первую, вот с этой страницы: http://www.amisite.ru/files/as_file.php:
А с новой, обновлённой, версией плагина AS_File вот отсюда http://www.amisite.ru/files/as_file_new.php у меня ничего не получилось.
Ты же сделал новую версию этого плагина - значит она нужнее старой
Вот я из-за этого и переживаю, что никак не могу заставить работать новую версию плагина - хотя как я понимаю - другие форумчане её, новую версию, используют. И у меня появляется ощущение, что у меня где-то что-то неправильно делается. И это ощущение потенциальной или реальной ошибки напрягает |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Я ща очень занят. Немного освобожусь и помогу.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
Олег, вопрос по коду.
В коде робота http://www.amisite.ru/afl/exp/files/Quik_Robot3.afl написано:
Код: |
/////////// Функции ////////////
procedure orders(bs, pr, Lot)
{
connection = 0;
QC = AS_QUIK_CONNECT(Quik);
if (QC == 1)
{
connection = 1;
text = "Есть соединение с сервером";
Color = colorGreen;
}
else if (QC == -1)
{
text = "нет соединения с квиком";
Color = colorRed;
}
else if (QC == -2)
{
text = "нет соединения с сервером";
Color = colorRed;
}
else
{
text = "фигня какая то";
Color = colorRed;
}
if(connection == 1)
{
order = AS_QUIK_SEND_SYNC_NEWORDER("123", // OrderID - Любые цифры
Account,
Client_Code,
"L", // Тип заявки M-рыночная, L-лимитированная
Class,
SecCode,
bs,
pr,
Lot);
}
if(StrToNum(order) > 100)
{
iz = "исполнена";
..........
str = str + " позиция на момент исполнения " + pos;
}
else {
iz = "не исполнена";
coloriz = colorRed;
str = str + " заяка НЕ исполнена" + " ответ сервера=" + order;
}
} |
Если есть соединение с сервером, то всё нормально.
А если нет соединения, то как себя поведёт условие
Код: |
if(StrToNum(order) > 100) |
?
Если я правильно понял код, то переменная order получает какое-то значение, только если connection == 1 (если есть соединение с сервером квика):
Код: |
if(connection == 1)
{
order = AS_QUIK_SEND_SYNC_NEWORDER("123", // OrderID - Любые цифры
.......
Lot);
}
|
В случае, если connection == 0 (когда появляются проблемы при присоединении к серверу), то переменная order не определена?
Или я не правильно понял код функции orders(bs, pr, Lot)?
Как себя поведет StrToNum(order), если аргумент не определён?
В справке это не отражено |
|
|
Посмотреть профиль Отправить личное сообщение |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
Олег, я опять с вопросом.
В коде робота (исходник - http://www.amisite.ru/afl/exp/files/Quik_Robot3.afl) у меня написано:
Код: |
TimeFrame = 60*1; // таймфрейм в секундах.
............
//////////////Система///////////////
Buy1 = Cross(C, MA(C, 40)) AND C > MA(C, 20);
Sell1 = Cross(MA(C, 20), C);
Short1 = Cross(MA(C, 40), C) AND C < MA(C, 20);
Cover1 = Cross(C, MA(C, 20));
Buy2 = Cross(MA(C, 2), MA(C, 5));
Short2 = Cross(MA(C, 5), MA(C, 3));
///////////Конец Системы////////////
Buy1 = Ref(Buy1, -1);
Sell1 = Ref(Sell1, -1);
Short1 = Ref(Short1, -1);
Cover1 = Ref(Cover1, -1);
Buy2 = Ref(Buy2, -1);
Short2 = Ref(Short2, -1);
//////////////////////////////////// |
По моим задумкам, робот должен торговать минутным интервалом - то есть, внутри минутного диапазона игнорировать сигналы.
Временной интервал в настройках АА и в коде соответствуют друг другу - везде установлен одно минутный интервал.
Но в файле log.quik указываются сделки:
Цитата: |
25.07.2019 14:36:19 SBER Cover заяка исполнена ответ сервера=4434446969 позиция на момент исполнения -10
25.07.2019 14:36:20 SBER Buy заяка исполнена ответ сервера=4434446998 позиция на момент исполнения 0
25.07.2019 14:36:21 SBER Buy (доливка) заяка исполнена ответ сервера=4434447011 позиция на момент исполнения 10
25.07.2019 14:37:18 LKOH Cover заяка исполнена ответ сервера=4434448524 позиция на момент исполнения -2
25.07.2019 14:37:19 LKOH Buy заяка исполнена ответ сервера=4434448543 позиция на момент исполнения 0
25.07.2019 14:37:20 LKOH Buy (доливка) заяка исполнена ответ сервера=4434448595 позиция на момент исполнения 1
|
Соответственно, в рамках ОДНОЙ минуты проходит по три сделки.
Что и где мне подкрутить в роботе, чтоб сигналы внутри выбранного интервала игнорировались? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Следует запретить несколько сигналов на одном баре.
По принципу.
Код: |
Buy2 = Cross(MA(C, 2), MA(C, 5)) AND Buy1 = 0; |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
Олег, спасибо!
Думал по поводу сигналов и только сейчас, после твоего ответа, сообразил, что это ТРИ РАЗНЫХ сигнала:
1. Cover - сигнал Cover1.
2. Buy - сигнал Buy1.
3. Buy (доливка) - сигнал Buy2.
А я всё пытался понять, почему не сработал (или не понятно как сработал) оператор |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Romich
Зарегистрирован: 21.07.2020
Сообщения: 8
|
Доброго дня!
При проверке кода AFL вылетают ошибки (см. рисунки). Плагин установлен новый. Что может быть не так? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Romich
Зарегистрирован: 21.07.2020
Сообщения: 8
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Похоже плагин не работает. Ами не х64 ??? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Romich
Зарегистрирован: 21.07.2020
Сообщения: 8
|
Ами - версия 6.20.1 на х32. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
Начать новую тему Ответить на тему |
Список форумов 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 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|