Автор |
Сообщение |
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
Ааа. Не доглядел. Там скобки не хватало. |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну скобку пропустил. С кем не бывает
Код: |
Buy = LastValue(Ref(Buy, -1));
Sell = LastValue(IIf(Sell > 1.1 AND Sell < 4.9, Sell, Ref(Sell, -1)));
Short = LastValue(Ref(Short, -1));
Cover = LastValue(IIf(Cover > 1.1 AND Cover < 4.9, Cover, Ref(Cover, -1)));
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
Привет, Олег!
Запустил, этот код в реальный рынок, посмотреть, как все это работает. Столкнулся с такой проблемой, когда меня закрыло по стопу, потом меня закрыло еще и по скользящим повторно. То есть я оказался в противоположной позиции. Если я правильно понял, в этом коде получается два независимых выхода, которые могут исполнится вместе. А нужно, разумеется, чтобы когда закрыло по ApplyStop, мы ждали следующий сигнал, а не отрабатывали и условие sell тоже.
Может можно написать что-то типа:
Sell= Cross (EMA(Close, 40), EMA(Close, 31)) OR ApplyStop ;
Или проблема в чем-то другом? |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Скорее всего в другом. Не долен он 2 раза подряд закрывать один лонг.
Дай строки из tri, посмотрю, может удастся понять в чем трабл. Только убери оттуда конфиденциальную информацию. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
Блин( я его почистил уже. Ну ничего, погоняю в понедельник, и скину инфу) с этой системой меня часто будут по стопам выносить)))
Еще хотел спросить, это нормально, что заявки исполняются на 2-4 секунде? Можно ли как-то уменьшить до секунды? Ну или до двух, но стабильно. А то они у меня и по 5 секунд идут изредка. |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Не знаю. Я с квиком не работаю.
Попробуй отследить где тормоза
Ами -> tri
tri -> Квик
Квик -> биржа |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
Боюсь, не знаю как это сделать. Намекни, пожалуйста. |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
В начале вообще по 7 секунд задержки были, поменял Realtime chart refresh interval [sec] на -1 Вроде получше стало. |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну Ами можно заставить писать в tri время твоего компа в тот момент когда он пишет строку заявки.
Вот в этом месте
Код: |
transid = "TRANS_ID=" +FullName()+LastValue(TimeNum())+dir+"; "; |
робота сделай так
Код: |
transid = "TRANS_ID=" +FullName()+LastValue(TimeNum())+dir+"_" + Now(4) + "; "; |
В результате ТрансИД будет содержать время компа в момент записи строки (последние 6 цифр, ччммсс).
А вот дальше не знаю.
Только в таком виде робот работать не будет. Квик такой трансИД не пропустит, но можно сделать временно и посмотреть на сколько тормозит связка Квик-> Ами (получение данных) -> tri.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
ok, спасибо. в понедельник попробую. |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
Привет, Олег!
Сегодня был удачный момент. Закрыли по стопу аж два раза. Первый раз сработал стоп, закрылся лонг, а потом на следующей свече пересеклись скользящие и еще раз продался фьючерс. К тому же на этой же свече был переворот в шорт и получилось, что я стал в шорт двойным сайзом. Короче отработался и стоп и выход по скользящим. Был еще один вход, который закрылся по стопу. Но там, что-то непонятное произошло, закрытие стопа и переворот скользящим произошел вроде бы в одно время и почти в одном месте. Получилось, что в 14.40.02 сначала закрылся шорт по стопу, а потом через 12 секунд в 14.40.12 еще был куплен фьючерс. Я так понял, что опять дважды отработало. Ниже скопировал информацию из .tri файла, акк и клиента убрал.
TRANS_ID=011315001; PRICE=163035; QUANTITY=1; OPERATION=B; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0;
TRANS_ID=011410002; PRICE=156320; QUANTITY=1; OPERATION=S; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0;
TRANS_ID=011415002; PRICE=156450; QUANTITY=1; OPERATION=S; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0;
TRANS_ID=011415003; PRICE=156450; QUANTITY=1; OPERATION=S; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0;
TRANS_ID=011435004; PRICE=163010; QUANTITY=1; OPERATION=B; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0;
TRANS_ID=011440004; PRICE=162975; QUANTITY=1; OPERATION=B; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0;
TRANS_ID=011445001; PRICE=163130; QUANTITY=1; OPERATION=B; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0;
TRANS_ID=011800002; PRICE=157480; QUANTITY=1; OPERATION=S; CLASSCODE=SPBFUT; ACTION=NEW_ORDER; TYPE=L; SECCODE=RIZ0; |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Хм. Проверь тестером робот пропустил сигналы покупки или исполнил лишние сигналы продажи? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Arahan
Зарегистрирован: 26.06.2010
Сообщения: 47
|
Ох, немного перепутал. Проблемы с немного более сложным кодом в условии входа. Может в этом дело? Хоты косяки то вроде только с выходом из позиции.
Условие buy или short , сразу по нескольким пересечениям, вот так:
Buy = Hold( Cross(EMA(Close, 11), EMA(Close, 22)), 5 ) AND Cross (EMA(Close, 15), EMA(Close, 25))
OR Ref (Cross(EMA(Close, 11), EMA(Close, 22)),-1) AND Cross(EMA(Close, 15), EMA(Close, 25));
Все остальное не менял, выход или по стопу или по обратному пересечению двух скользящих.
Бэктестер показывает всё как надо. Сейчас глянул сканер, входы идут по условию пересечения первых скользящих, а условия вторых скользящих игнорируются. Т.е. в сканере много не нужных входов\выходов. Странно, но в риале робот входит как надо, а вот там где срабатывает стоп он выходит и по пересечению скользящих. Т.е. как будто не видит, что стоп уже сработал.
Единственное, не знаю почему, но если полный код робота закидываю, не работает ни бэктестер ни сканер. Так что я тестил только код системы без Equity и тела робота. Может что-то не так делаю? |
|
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Arahan писал(а): |
Единственное, не знаю почему, но если полный код робота закидываю, не работает ни бэктестер ни сканер. Так что я тестил только код системы без Equity и тела робота. Может что-то не так делаю? |
Вот тут собака и порылась.
Именно функция Equity определяет стработал стоп или нет и в случае если сработал не пропускает обычный выход.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|