Автор |
Сообщение |
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Я имел в виду что если купили на сигнале часового фрейма, а продали на сигнале 15 мин, при этом сигнала на продажу на часовом фрейме еще не возникло, следовательно мы модем только покупать и если на 15-ти минутках опять Buy, то покупаем.
Я немного поторопился и неудачный пример привел, здесь надо просто добавить переменную в часовом интервале X = C > Hh; а Buy = HBuy OR X AND MBuy; Просто хотел на простом примере.
А вот для торговли на свингах токого выражения как X = C > Hh никак не написать, надо как-то по другому запоминать истинность условия покупки на часовом фрейме, как-то так Buy = HBuy OR X == 1 AND MBuy; , но так не работает, что можно сделать......? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Цитата: |
Я имел в виду что если купили на сигнале часового фрейма, а продали на сигнале 15 мин, при этом сигнала на продажу на часовом фрейме еще не возникло, следовательно мы модем только покупать и если на 15-ти минутках опять Buy, то покупаем |
Вроде понял.
1. Тебе не надо использовать TimeFrameSet(in15Minute); т.к. меньший фрейм не используется и можно тупо тестить на 15 минутках. Но это к делу не относится.
А так у тебя вроде все нормально написано (или я не правильно понял). Может только на всякий случай скобки влепить
Код: |
Buy = HBuy OR (HBuy AND MBuy);
Sell = HShort OR MShort;
Short = HShort OR (HShort AND MShort);
Cover = HBuy OR MBuy;
|
Цитата: |
А вот для торговли на свингах токого выражения как X = C > Hh никак не написать, надо как-то по другому запоминать истинность условия покупки на часовом фрейме, как-то так Buy = HBuy OR X == 1 AND MBuy; , но так не работает, что можно сделать......? |
Бррррр. Не понял. Объясняй еще раз. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Например условие:
Код: |
Cond1 = C > HHV(H,5); |
Если это условие истино на часовом фрейме, то покупаем и таким же условием торгуем в 15-ти минутном фрейме. Вопрос в том как правильно записать условие покупки:
1. Если на часовом фрейме это условие истино, то покупаем.
2. Если на меньшем фрейме сработал сигнал на продажу, но часовой сохранился и далее на меньшем фрейме снова покупка, то покупаем.
Причем необходимо чтобы и на часовом и на 15-ти минутном фрейме убирались все лишние сигналы, Extrem-мились.... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну у тебя вроде все так и написано.
Вот посмотри. Твой код. Я его на 15 мин смотрел. Кое что убрал, кое что добавил.Чисто графически сделал снизу ленту. Если красная, о на часовках Short, если зеленая, то на часовках Buy
Код: |
TimeFrameSet(inHourly);
Hh = Ref(H,-5);
HL = Ref(L,-5);
HBuy = Cross(C,Hh);
HShort = Cross(Hl,C);
TimeFrameRestore();
Hh = TimeFrameExpand(Hh, inHourly);
HL = TimeFrameExpand(HL, inHourly);
HBuy = TimeFrameExpand(HBuy, inHourly);
HShort = TimeFrameExpand(HShort, inHourly);
Mh = Ref(H,-5);
Ml = Ref(L,-5);
MBuy = Cross(C, Mh);
MShort = Cross(Ml, C);
Buy = HBuy OR (HBuy AND MBuy);
Sell = HShort OR MShort;
Short = HShort OR (HShort AND MShort);
Cover = HBuy OR MBuy;
Buy = ExRem(Buy, Sell);
Sell = ExRem(Sell, Buy);
Short = ExRem(Short, Cover);
Cover = ExRem(Cover, Short);
Plot(C,"c",colorBlack,styleCandle);
Plot(1, "", IIf(HBuy, colorGreen, colorRed), styleOwnScale|styleArea, 0, 30);
//Plot(Hh,"Hh",colorGreen,styleLine);
//Plot(Hl,"Hl",colorRed,styleLine);
Plot(Mh,"Mh",colorAqua,styleLine);
Plot(Ml,"Ml",colorOrange,styleLine);
PlotShapes(IIf(Buy , shapeUpArrow, shapeNone), colorLime, 0, L, -25);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone), colorRed, 0, H, -25);
PlotShapes(IIf(Short, shapeHollowDownArrow, shapeNone), colorRed, 0, H, -35);
PlotShapes(IIf(Cover , shapeHollowUpArrow, shapeNone), colorLime, 0, L, -35);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Немного не про то Олег. Сам виноват, не тот пример привел, если не возражаешь начну все сначала. Вот другой код, в этом коде меня так же интересует как правильно написать правила покупки. В тех правилах которые уже имеются меня не устраивает то, что после срабатывания Sell на малом фрейме, не на большом, повторная покупка происходит только в том случае, если на часовом фрейме снова сигнал на покупку в сочетании с малым, т.е. уже игнорируется функция Exrem для часового фрейма, а надо чтобы если часовой фрейм дал сигнал купить, то купить, а потом пока на часовом не появился сигнал продажи торговать на малом фрейме только Buy, Sell.
Код: |
TimeFrameSet(inHourly);
HVerx = ValueWhen(H > Ref(H,-1) AND H > Ref(H,1),H,1);
HVniz = ValueWhen(L < Ref(L,-1) AND L < Ref(L,1),L,1);
HBuy = Cross(C,HVerx);
HShort = Cross(HVniz,C);
TimeFrameRestore();
HVerx = TimeFrameExpand(HVerx,inHourly);
HVniz = TimeFrameExpand(HVniz,inHourly);
HBuy = TimeFrameExpand(HBuy, inHourly);
HShort = TimeFrameExpand(HShort, inHourly);
MVerx = ValueWhen(H > Ref(H,-1) AND H > Ref(H,1),H,1);
MVniz = ValueWhen(L < Ref(L,-1) AND L < Ref(L,1),L,1);
MBuy = Cross(C,MVerx);
MShort = Cross(MVniz,C);
Buy = HBuy OR HBuy AND MBuy;
Sell = HShort OR MShort;
Short = HShort OR HShort AND MShort;
Cover = HBuy OR MBuy;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = ExRem(Short,Cover);
Cover = ExRem(Cover,Short);
Plot(C,"c",colorBlack,styleCandle);
Plot(HVerx,"HVerx",colorGreen,styleLine);
Plot(HVniz,"HVniz",colorRed,styleLine);
Plot(MVerx,"MVerx",colorLime,styleLine);
Plot(MVniz,"MVniz",colorOrange,styleLine);
PlotShapes(IIf(Buy , shapeUpArrow, shapeNone), colorLime, 0, L, -25);
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone), colorRed, 0, H, -25);
PlotShapes(IIf(Short, shapeHollowDownArrow, shapeNone), colorRed, 0, H, -35);
PlotShapes(IIf(Cover , shapeHollowUpArrow, shapeNone), colorLime, 0, L, -35); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Т.е. чтобы сигнал покупки на часовом фрейме действовал не только в тот час когда был сигнал, а с часа сигнала на покупку, до часа синала на продажу? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Да, чтобы повторные сигналы игнорировались, а в этом промежутке торговать Buy, Sell на малом фрейм, также с учетом удаления повторяющихся сигналов... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Прямо внутри часового фрейма делаешь тригер. Типа
Код: |
HCond = Flip(HBuy, HShort); |
Потом его экспандишь и используешь как фильтр. Типа
Код: |
Buy = ... AND HCond == 1 AND MBuy; |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Все как надо Олег, спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Привет. Подскажите плз почему результат бактеста этого кода на 1 минуте ощутимо отличается от 60 минутного…
Код: |
TimeFrameSet(inHourly);
Hema = EMA(C,70);
Verx = Cross(C,Hema);
Vniz = Cross(Hema,C);
TimeFrameRestore();
Hema = TimeFrameExpand(Hema,inHourly);
Verx = TimeFrameExpand(Verx,inHourly);
Vniz = TimeFrameExpand(Vniz,inHourly);
Buy = Verx;
Sell = Vniz;
Short = Vniz;
Cover = Verx;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);
Short = ExRem(Short,Cover);
Cover = ExRem(Cover,Short);
Plot(C,"c",colorBlack,styleCandle);
Plot(Hema,"hema",colorBlue,styleLine); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот смотри. Вот тут.
Код: |
Verx = Cross(C,Hema);
|
ты смотришь пересечение Close и Hema на минутках и потом переносишь это дело на часы. При этом если внутри часа цена выросле выше Hema и к закрытию опустилась назад, то на часах сигнала не будет совсем т.к. пересечения не было а на минутках при этом пересечение было и оно перенесется на часы... Вот такие дела. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Ничего не понимаю, почему я смотрю пересечение Close и Hema на минутках, разве все эти временные команды не сжимают эту систему в часовой фрейм, результат работы которой можно посмотреть на меньших фреймах. Если нет, то как так сделать, в чем ошибка? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Бррр. Извини. Ща разберусь почему результат разный.... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
DMITRY
Зарегистрирован: 18.09.2009
Сообщения: 179
|
Разница получается из-за различия в количестве сделок при часовом бактесте и 1 минутном (на 1 мин сделок меньше), по непонятной мне причине Hema скачет. Нашел пример ошибки, это минутный график, внизу это картинка кода, вверху отображение стрелок через бактест, снимок с экрана делал через OneNot, также пробовал через Ами, в этом случае Hema сразу перемещается как надо . Мож звучит тупо, но как есть, что происходит чет не понимаю….. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Скорее всего дело вот в чем.
При смене фреймов внутри AFL получается, что данные запаздывают на 1 бар. Дневное закрытие на внутридневном фрейме будет известно только на следующий день. Это сделано чтобы избежать подглядывания в будущее.
См пояснение на картинках.
2 кода
слева
Код: |
SetBarsRequired(sbrAll, sbrAll);
TimeFrameSet(inHourly);
Hema = EMA(C, 70);
Verx = Cross(C, Hema);
Vniz = Cross(Hema, C);
TimeFrameRestore();
Hema = TimeFrameExpand(Hema, inHourly);
Verx = TimeFrameExpand(Verx, inHourly);
Vniz = TimeFrameExpand(Vniz, inHourly);
Plot(C,"c",colorBlack,styleCandle);
Plot(Hema, "hema", colorBlue, styleLine); |
справа
Код: |
SetBarsRequired(sbrAll, sbrAll);
Plot(C,"c",colorBlack,styleCandle);
Plot(EMA(C,70),"hema",colorBlue,styleLine); |
SetBarsRequired для того, чтобы отключить квик АФЛ т.к. ЕMA тогда расчитывается точнее.
На первой картнке сравниваются текущие (последние) значения hema и видно что они не равны, а на следующей картинке показано, что текущее значение hema на 15 мин равно предыдущему на часовках. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|