Начать новую тему Ответить на тему |
Список форумов 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
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Для этого надо запретить покупку если уже есть сигнал на закрытие покупки. Типа так
Код: |
Buy = ...; // правила покупки
Sell = ..; // правила закрытия покупки
// изменяем правила покупки
Buy = Buy AND Sell == 0;
........
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
abc_13
Зарегистрирован: 13.12.2011
Сообщения: 13
|
Здравствуйте. В описании робота говориться, что желательно, чтобы рабочий интервал совпадал с интервалом базы данных. К чему может привести несовпадение интервалов? Возможно, чтобы при экспорте минутных котировок из Квика в минутную базу двухминутки квика и Амиброкера не совпадали? И как быть, если все же хочется играть н двухминутках, а Ами не дает создавать базу двухминутную. Да и квик такие котировки на прямую не экспортирует? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Нормально. Не обязательно фрейм базы должен совпадать с рабочим фреймом робота. Я написал желательно чтобы не перегружали робота работая на часовках с минутной базой. Ну и более высокий фрейм Ами может строить по разному в зависимости от настроек.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
abc_13
Зарегистрирован: 13.12.2011
Сообщения: 13
|
Точно. Проблема именно в настройках отображения была и, соответственно, в разных возможностях компановки двух одноминутных баров в один двухминутной. И в результате стратегия, запущенная как индикатор, иногда делала не то, что параллельно робот. Точнее робот воспринимал котировки с одной компановкой двухминуток, а индикатор другой. Вобщем все перепуталось, но причина ясна Спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
Slava8519
Зарегистрирован: 19.04.2012
Сообщения: 10
|
Спасибо, помогло! А вот еще вопрос как использовать команду AplyStop().
Там у меня сейчас получается так:
Buy= ;//вход по пробою
Sell= ;
Short= ;//вход по пробою
Cover= ;
-----------
Buy1 = Buy[BarCount - 1]; //AND Sell1 == 0;
Sell1 = (Sell[BarCount - 2] AND Buy[BarCount - 1]==0) OR Short;
Short1 = Short[BarCount - 1]; //AND Cover1 == 0;
Cover1 = (Cover[BarCount - 2] AND Short[BarCount - 1]==0) OR Buy;
Куда здесь можно вставить AplyStop(). И зачем нужна(и нужна ли) функция Equity(1);? При использовании AplyStop() можно ли использовать функцию ExRem, чтобы предотвратить повторное вхождение после срабатывания takeprofit-а, до того как будет выполнен Sell1 или Cover1. И как тогда правильно записывать Buy1=ExRem(Buy1,Sell1) или Buy=ExRem(Buy,Sell) ?
Заранее очень признателен! |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Функция ApplyStop() задает стопы. Чтобы она работала в роботе обязательно нужно превратить этот стоп в сигнал покупки или продажи на соответствующем уровне. Это делает функция Equity() так, что её использование для стопов в роботе обязательно.
А использовать ApplyStop() очень просто. Пиши её в системе в любом месте и в конце системы Equity.
Хотя мне больше нравиться делать стопы без ApplyStop |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
000 писал(а): |
Вопросы и косяки сюда. |
Здравствуйте! Подскажите пожалуйста. Мне нужно сделать изменяющийся отступ при выставлении заявок.
Otstup = H-C-50;
но робот выдает ошибку что неправильный AFL код. Как правильно написать чтобы отступ был изменяющимся в зависимости от некоторого условия? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Сделать меняющийся отступ совсем не сложно, но сперва я хотел бы узнать зачем это?
Мне кажется сама идея меняющегося отступа возникла потому, что ты чего то не понимаешь.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
000 писал(а): |
Сделать меняющийся отступ совсем не сложно, но сперва я хотел бы узнать зачем это?
Мне кажется сама идея меняющегося отступа возникла потому, что ты чего то не понимаешь.... |
Нет-нет все правильно понимаю. заявка будет выставлена у меня не маркетом, а лимитом в стакан в расчете на волатильность и взятии по более лучшей цене. у меня система протестирована с отступом уже. так вот мне и нужно чтобы отступ считался по параметрам свечей (H,C,L,C) в виде некоторой формулы. А робот не хочет так считать |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Otstup = LastValue(H-C)-50; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
000 писал(а): |
Otstup = LastValue(H-C)-50; |
Спасибо! А Ref -1 не надо делать? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
000 писал(а): |
Otstup = LastValue(H-C)-50; |
Она получается дает значение текущей свечи. А нужно чтобы давала предыдущей. Ведь вход осуществляется по сигналу на предыдущей свече. нельзя это как нибудь написать? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
Дмитрий
Зарегистрирован: 29.11.2011
Сообщения: 96
Откуда: Саратов
|
000 писал(а): |
Otstup = LastValue(H-C)-50; |
кажется вот так надо
Otstup = LastValue(Ref(H,-1)-Ref(C,-1))-50; |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Можно даже так
Код: |
Otstup = LastValue(Ref(H - C,-1))-50;
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Slava8519
Зарегистрирован: 19.04.2012
Сообщения: 10
|
Здравствуйте! Вот продолжаю пытаться сделать внятный takeprofit. Столкнулся с проблемой что команда AplyStop() по видимому требует цену входа, а так как я вхожу по пробою то команды BuyPrice() у меня нет(так как роботу не надо указывать цену входа).
Решил воспользоваться вашим роботом со стопом - там все удобно. Но возникла проблема: почему-то начинает покупать и продавать на одном баре, хотя без стопа все работает как часы. Помогите пожалуйста. Сейчас код выглядит так:
Buy =; вход по пробою
Sell =;
Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short = ; вход по пробою
Cover = ;
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);
Stop = 2;
///////////Конец Системы////////////
Buy1 = Buy[BarCount - 1];
Sell1 = (Sell[BarCount - 2] AND Buy[BarCount - 1]==0) OR Short;
Short1 = Short[BarCount - 1];
Cover1 = (Cover[BarCount - 2] AND Short[BarCount - 1]==0) OR Buy;
/// стопы ///
if(pos > 0 AND C[BarCount-1] >= AS_READ_PARAM("Quik_Robot", Name(), "price")*(1 + Stop/100))
{
Sell1 = 1;
str = str + " сработал стоп при лонге";
}
if(pos < 0 AND C[BarCount-1] <= AS_READ_PARAM("Quik_Robot", Name(), "price")*(1 - Stop/100))
{
Cover1 = 1;
str = str + " сработал стоп при шорте";
} |
|
|
Посмотреть профиль Отправить личное сообщение |
![](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 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|