Начать новую тему Ответить на тему |
Список форумов 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 След. |
Автор |
Сообщение |
Hokum
Зарегистрирован: 15.11.2013
Сообщения: 60
|
попробовал потестить, вход делает и тут же начинает закрывать, потом снова покупает и закрывает... и так каждую секунду...
поменял :
[code]
Stop = 1; //1 тик за лой
...
Buy1 = (C-O)>=2; //добавил правило лонга
Sell1 = price+5 ; //тейкпрофит 5 пунктов
...
Buy1 = Buy1[BarCount - 2] AND L[BarCount - 1] > C[BarCount - 2]-(Stop);// убрал процентность стопа
...
/// стопы ///
if(pos > 0 AND L[BarCount-1] < AS_READ_PARAM("Quik_Robot", Name(), "price")-(Stop))//убрал процентность стопа
[code]
цена не заходила за минимум текущего бара, но робот позу закрывал...
по идее робот делает вход на сигнальной свече, но дальше что то непонятное... что я не так сделал? [/code] |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Трудно точно сказать что не так не видя всего кода, однако есть подозрение.
Рассмотрим вот эту часть кода
Код: |
////////////////////////////////////
text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + " " + Name();
pos = AS_READ_PARAM("Quik_Robot", Name(), "pos");
//////////////Система///////////////
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));
|
Ты изменил строку
Код: |
Sell1 = Cross(MA(C, 20), C); |
на
Код: |
Sell1 = price+5 ; //тейкпрофит 5 пунктов |
Но в коде чуть выше написано
В итоге получается что Sell1 = 0 + 5;
Соответственно продажа активна всегда когда есть длинная позиция.
Надо сделать так
Код: |
////////////////////////////////////
text = iz = sd = order = "";
color = coloriz = colorDefault;
price = 0;
str = Now(0) + " " + Name();
pos = AS_READ_PARAM("Quik_Robot", Name(), "pos");
price = AS_READ_PARAM("Quik_Robot", Name(), "price");
//////////////Система///////////////
Buy1 = Cross(C, MA(C, 40)) AND C > MA(C, 20);
Sell1 = 0;
Short1 = 0;
Cover1 = 0;
///////////Конец Системы////////////
Buy1 = Buy1[BarCount - 2] AND L[BarCount - 1] > (C[BarCount - 2] - Stop);
Sell1 = H[BarCount - 1] > price + 5;
Short1 = 0;
Cover1 = 0; |
Это мы разобрались с профитом.
Что касается стопа.
Лучше всего при открытии позиции записать конкретную цену стопа L[BarCount - 2] - 1 (прямо обозвать stoPrice). И потом при проверке стопа сравнивать прямо с этой ценой. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Hokum
Зарегистрирован: 15.11.2013
Сообщения: 60
|
ага, значит вся эта коляска имеет вид:
if(Name() == "тикер") {
SecCode = "тикер";
Class = "класс тикера";
Lots = 1;
TickS = 1;
Stop = L[BarCount - 2] - 1; // стоп за лой сигналной свечи + 1 пункт (если лой сигнальной свечи равен 100 то стоп = 99)
Otstup = 5; // Заявка будет выставлена хуже текущей цены на Otstup рублей
в самом начале задаем Stop?
а код для лонгового стопа (в пунктах) имеет вид:
if(pos > 0 AND L[BarCount-1] < AS_READ_PARAM("Quik_Robot", Name(), "price")-(Stop))
{
Sell1 = 1;
str = str + " сработал стоп при лонге";
тогда вопрос: почему в твоем коде процентность стопа вычисляется в блоке ///стопы/// а не в самом начале, в блоке /// задаем размер лотов, коды и отступ для разных символов?
и еще вопрос:
у меня в тестере был стоплосс
ApplyStop(stopTypeLoss, stopModePoint,
abs((Ref(L,-1)-SLExp)-BuyPrice), //SLExp=1 BuyPrice=O (Цена открытия)+Otstup
ExitAtStop=1, volatile=False, ReEntryDelay = 0);
то получается для робота Ref(L,-1) меняется на L[BarCount-2]???
L[BarCount-1] - лой текущей свечи??
L[BarCount-2] - лой предыдущей свечи??? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нет. Не правильно.
Код: |
Stop = L[BarCount - 2] - 1; |
Это не стоп за лой сигналной свечи + 1 пункт. Это стоп за лой предпоследней свечи. На свече открытия это действительно стоп за лой предпоследней свечи, а когда нарисуется следующая свеча то и стоп изменится.
Функция ApplyStop() автоматически "запоминает" стоп на момент входа а в роботе это надо делать руками. Поэтому я и предложил записать стоп в файл и читать его оттуда.
Цитата: |
тогда вопрос: почему в твоем коде процентность стопа вычисляется в блоке ///стопы/// а не в самом начале, в блоке /// задаем размер лотов, коды и отступ для разных символов? |
Просто я решил, что так удобнее для изменения кода. Изменил одну цифру и все. Не надо разбираться в нагромождении расчетов. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Hokum
Зарегистрирован: 15.11.2013
Сообщения: 60
|
ок. Добавил функцию записи числа стопа в ini-файл.
Получается следующее:
пока позиции нет - всё хорошо.
Поступает сигнал - берет позицию, записывает в файл строку StopPrice=число.
Сидит и ждет события для закрытия. (и стоп и лосс срабатывают корректно на 1-ом тестовом лоте)
После события на закрытие лонга пишет строку в ini-файл
StopPrice=0
и далее игнорирует последующие входы.
ощущение что он как то "одноразово" делает сделки. как быть? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Тебе надо чтобы он входил и выходил на одном баре несколько раз? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Hokum
Зарегистрирован: 15.11.2013
Сообщения: 60
|
неее, такое не надо. Обычная торговля по свечке. Вошли по сигналу, вышли по условию, входим по следующему сигналу и т.д.
может скинуть код в личку? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Hokum писал(а): |
неее, такое не надо. Обычная торговля по свечке. Вошли по сигналу, вышли по условию, входим по следующему сигналу и т.д.
может скинуть код в личку? |
Давай. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Skornet
Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все
|
Добрый день!
У меня возникла проблема при подключении Ами к Квику. Конфигурация:
Win XP, Quik 6.10, Ami 5.6.2 pro (cra), плагины As_... в C:\Program Files\AmiBroker\Plugins ,Trans2QuikAPI_1.2 в C:\Program Files\AmiBroker\,Quik в C:\Aton\QUIK, включил обработку внешних транзакций (работает). Но соединения Ами с Квик нет. Я перепробовал все варианты которые нашёл на форумах вашего сайта и арки, вытаскивал квик в корень С: (установщик от Атона не даёт других вариантов кроме, как в C:\Aton\QUIK), при этом изменял путь в роботе соответсвенно. Закидывал Trans2QuikAPI куда только можно, но робот так и не подключился - строка соединение белая.
Все функции в коде подсвечиваются синим. Строки заявка в тестере красные
Проверял API_Tester_DLG для Trans2QuikAPI, с сайта Quik.ru: транзакции получает, connect-disconnect делает, связи между Квик и dll подтверждает. В чём может причина?
Вспомнил когда-то отключал некоторые службы в Windows. Может это влиять?
Скажу сразу не программист (базовые знания на уровне где-то, когда-то бейсик и паскаль), немного подружился с AFL, и не очень продвинутый пользователь.
И ещё два вопроса:
1 Можно ли в коде робота использовать Param для изменения параметров расчёта "на ходу"
2 Лог файл робота создаётся автоматически или ручками. потерялся уже. |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот такой код
Код: |
Filter = 1;
q = AS_QUIK_CONNECT("C:\\Aton\\QUIK");
AddColumn(q, "");
|
Пихаешь в АА и топчешь Explore 1 раз. Квик обязательно должен быть запущен.
Что пишет в столбце "Column 0"??? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Skornet
Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
-2 обозначает есть связь Ами с Квиком, но сам Квик не связан с сервером. Т.е. связь с Квиком есть. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Skornet писал(а): |
Добрый день!
И ещё два вопроса:
1 Можно ли в коде робота использовать Param для изменения параметров расчёта "на ходу"
2 Лог файл робота создаётся автоматически или ручками. потерялся уже. |
1. Можно. Только надо следить, чтобы не получилось так, что робот был в позе, а после изменнения параметра система типа не в позе и соответственно не будет из нее выходить, а реально поза на рынке есть.
2. Автоматически создается. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Skornet
Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все
|
По вопросам я понял.
В пятницу пробовал запустить, но не было ни одной сделки, не было ни какой реакции, ни ошибок. Параметры клиента правильные. В тестере система работала.
Тогда куда смотреть?
И в коде так и должно быть Buy1.., Sell2...или это переменные, или команды должны быть, без цифр?
Связи с сервером нет , видимо в Атоне профилактика. |
Последний раз редактировалось: Skornet (Вс Фев 23, 2014 11:04 pm), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вместо системы напиши в коде робота
Buy1 = 1;
Размер позиции поставь минимальный.
и один раз Explore. Должна пройти покупка и открыться позиция. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
|
Начать новую тему Ответить на тему |
Список форумов 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 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|