Начать новую тему Ответить на тему |
Список форумов 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
|
Да незачто.
При случае отпишись как работает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
vin
Зарегистрирован: 03.03.2011
Сообщения: 1
|
Подскажите, Lots может быть фунцией , если да то как ее прописать, если она считается в другом индикаторе и можно ли ее передать с помощью #include |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Может быть функцией.
Записать так
Код: |
Lots = .....;
Lots = Lots[BarCount-2]; |
include передать скорее всего можно, но зависит от конкретного случая и вообще я include не пользуюсь никогда. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
include вроде тормозит AFL? Тоже не использую...
000 писал(а): |
Да незачто.
При случае отпишись как работает. |
Пока нареканий нет. Особенно удобен твой AS_File плагин.
Но нужен совет. Столкнулся с общей проблемой у себя.
Во избежание двух сделок за один бар, слепил такую вот конструкцию:
Код: |
INDX = LastValue(BarIndex());
POS = AS_READ_PARAM(ROBO, FUT, "POSITION");
BAR = AS_READ_PARAM(ROBO, FUT, "BAR");
if(GO_LONG[BarCount-1] AND INDX[BarCount-1] > BAR)
{
switch(POS)
{
case -1:
ORDER (2*LOTS, "B", LastValue(C)+SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
case 0:
ORDER (LOTS, "B", LastValue(C)+SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
default: AS_WRITE_FILE(LOGS, "Сбой позиции, пытаемся войти в LONG, будучи уже в LONG, либо ошибка записи позиции");
}
}
if(GO_SHORT[BarCount-1] AND INDX[BarCount-1] > BAR)
{
switch(POS)
{
case 1:
ORDER (2*LOTS, "S", LastValue(C)-SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
AS_WRITE_PARAM(ROBO, FUT, "BAR", NumToStr(INDX));
case 0:
ORDER (LOTS, "S", LastValue(C)-SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
default: AS_WRITE_FILE(LOGS, "Сбой позиции, пытаемся войти в SHORT, будучи уже в SHORT, либо ошибка записи позиции");
}
}
if(EX_LONG[BarCount-1] AND INDX[BarCount-1] > BAR)
{
switch(POS)
{
case 1:
ORDER (LOTS, "S", LastValue(C)-SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 0);
AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
default: AS_WRITE_FILE(LOGS, "Сбой позиции, пытаемся выйти из LONG не имеея позиции либо ошибка записи позиции");
}
}
if(EX_SHORT[BarCount-1] AND INDX[BarCount-1] > BAR)
{
switch(POS)
{
case -1:
ORDER (LOTS, "B", LastValue(C)+SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 0);
AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX);
default: AS_WRITE_FILE(LOGS, "Сбой позиции, пытаемся выйти из LONG не имеея позиции либо ошибка записи позиции");
}
} |
Ну и столкнулся с тем, что всё работает.)))) Правда оказалось, что на одном баре может быть две сделки, например, выход из Long и вход в Short.
Как быть не подскажешь?
На опции default шибко не ругайся, это я так, шутки ради оставил... По идее их быть не должно.)))
Я, конечно, и сам придумаю, но думать буду дольше...
Ну и попутный вопрос, сколько может быть AND позиций в условном операторе if()?? |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А зачем ты переворот делаешь одной сделкой?
Делай закрыть лонг, открыть шорт.
Типа если EX_LONG если POS > 0 то ORDER (LOTS, "S", LastValue(C)-SLIPP); и запись pos = 0
и если GO_SHORT если pos == 0 то ORDER (LOTS, "S", LastValue(C)-SLIPP); и запись pos = -1
У тебя там кстати очепятка всралась
Код: |
if(GO_SHORT[BarCount-1] AND INDX[BarCount-1] > BAR)
{
switch(POS)
{
case 1:
ORDER (2*LOTS, "S", LastValue(C)-SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
AS_WRITE_PARAM(ROBO, FUT, "BAR", NumToStr(INDX));
case 0:
ORDER (LOTS, "S", LastValue(C)-SLIPP);
AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1);
AS_WRITE_PARAM(ROBO, FUT, "BAR", INDX); |
Почему 1 в AS_WRITE_PARAM(ROBO, FUT, "POSITION", 1); ??? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
А зачем ты переворот делаешь одной сделкой?
Делай закрыть лонг, открыть шорт.
Типа если EX_LONG если POS > 0 то ORDER (LOTS, "S", LastValue(C)-SLIPP); и запись pos = 0
и если GO_SHORT если pos == 0 то ORDER (LOTS, "S", LastValue(C)-SLIPP); и запись pos = -1 |
Так ведь меня не пустит номер Бара делать вторую сделку на этом же баре (переменная BAR = AS_READ_PARAM(ROBO, FUT, "BAR"); не дозволит).
Ну и кроме того есть бары, где есть выход из LONG, но нет входа в SHORT. Тоже самое в обратную, есть COVER, но нет захода в LONG.
000 писал(а): |
У тебя там кстати очепятка всралась |
Да, уже исправил это, просто старый код под руку попался. Великий Бог Копипаста при написании кодов и не так меня ещё подводил=))) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Надо чтобы при LONG (EX_LONG) не было возможно EX_LONG (LONG) на одном баре, но был возможен SHORT... Ну и наоборот.
Хыхы)))))
Один бар должен допускать только одну сделку LONG или SHORT, но если на баре случился EX_LONG или EX_SHORT, то должна быть возможность SHORT и LONG соотвественно...
Вроде бы всё просто: не нужно запоминать номер бара при закрытии любой из позиций (будь то лонг или шорт), чтобы была возможно входа в противоположную, но при сильной волатильности меня может повторно запихать в только что закрытую позицию, очень мало вероятно, но возможно... |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну.
Вот смотри. На примере лонга.
Есть сигнал на лонг. Смотрим pos. Если == 0, то лонг разрешен, если нет, то и сделки нет. и т.д.
Сделай закрытие лонга = шорт и всего делов....
Тогда если лонг pos == 1. Появился шорт, соответственно появилось закрытие лонга. Если pos == 1, то сработает закрытие лонга и pos станет == 0 (шорт при pos == 1 не сработает), а при следующем прогоне pos уже == 0 а шорт никуда не исчез. Соответственно сработает шорт при pos == 0 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
Привет всем!
Тоже этим роботом занимаюсь - вылез странный косяк -
робот работает, даже если не стоит галка у "Run every".
В смысле, если робот бы запущен, а потом галка снимается, транзакции продолжают поступать в квик. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Так всегда или только один раз было? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
000 писал(а): |
Ну.
Вот смотри. На примере лонга.
Есть сигнал на лонг. Смотрим pos. Если == 0, то лонг разрешен, если нет, то и сделки нет. и т.д.
Сделай закрытие лонга = шорт и всего делов....
Тогда если лонг pos == 1. Появился шорт, соответственно появилось закрытие лонга. Если pos == 1, то сработает закрытие лонга и pos станет == 0 (шорт при pos == 1 не сработает), а при следующем прогоне pos уже == 0 а шорт никуда не исчез. Соответственно сработает шорт при pos == 0 |
Случился лонг, зашли, поднялась волатильность и мы на этом же баре вышли из лонг - не есть хорошо. Для этого я стал записывать ещё и номер бара (свечи).
Теперь один бар - одна сделка. Но при этом отсекли сделку в противоположную сторону закрытой на этом баре позиции: закрыли лонг, и не вошли в шорт, потому что уже записали номер бара...
И объединить шорт с выходом из лонг нельзя - такое не каждый раз случается.
Короче, я придумал вроде как, нужон дополнительный триггер. Либо как-то вымучить параметр POS особо хитрым способом. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
BRTO
Зарегистрирован: 01.03.2009
Сообщения: 105
|
000 писал(а): |
Так всегда или только один раз было? |
Несколько раз, проверял.
Может это глюк бета-версии 5.44? В принципе, это не смертельно, т.к. можно отключить прием транзакций в квике. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
У меня ни разу эксплорер так не зависал.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
kosbar
Зарегистрирован: 17.03.2009
Сообщения: 356
|
Кто-нть вход по рынку пробовал, стоящая вещь?)) |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
spitfire
Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow
|
Думаю только для тех кто торгует по дневкам и выше Остальные идут мимо. |
|
|
Посмотреть профиль Отправить личное сообщение ICQ Number |
|
|
Начать новую тему Ответить на тему |
Список форумов 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 След. |
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|