Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Как удерживать признак в течение нескольких баров? Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Пт Фев 19, 2010 11:31 pm Ответить с цитатой Вернуться к началу

Уже сломал мозг Sad((

Решил реализовать простейшую систему и банально уткнулся в то, что ну никак не найду необходимых формул для её реализации.

Просто ступор, блин Sad

Таймфрейм 15 минут.
Система даёт 4 сигнала:
Buy на пробитии ценой закрытия MA(Close,87)+13;
Short на пробитии ценой закрытия MA(Close,87)-13;
Sell на пробитии ценой закрытия MA(Close,45) сверху вниз;
Cover на пробитии ценой закрытия MA(Close,45) снизу вверх.

Всё. Довольно просто... как казалось в начале.

Проблема в том, что при пересечении Close 87-ми периодной средней переменной X1 или X2 присваивается 1, но только для данной свечи.

А мне необходимо сохранять признак пересечения ценой средней линии до появления сигнала Short или Buy, и с их появлением обнулять этот признак.

Конструкция :
Код:
BuyMA=MA(C,87)+13;
ShortMA=MA(C,87)-13;
X1=Cross(C,BuyMA);
X2=Cross(ShortMA,C);

XShort=Flip(X2,Short);
XBuy=Flip(X1,Buy);

Buy= Cross(C,BuyMA) AND XBuy;
Short = Cross(ShortMA,C) AND XShort;

не помогает, т.к. не получается обнулять XShort и XBuy, в случае лонга или шорта.
Там постоянно 1.

Как сделать обнуление этих переменных после появления сигнала???
Чтобы не было более 1 сигнала после пересечения средней.

После одного Buy или Short должен быть только один Sell/Short или Cover/Buy соответственно.

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Сб Фев 20, 2010 5:57 am Ответить с цитатой Вернуться к началу

Tim писал(а):
Уже сломал мозг Sad((

Решил реализовать простейшую систему и банально уткнулся в то, что ну никак не найду необходимых формул для её реализации.

Просто ступор, блин Sad

Таймфрейм 15 минут.
Система даёт 4 сигнала:
Buy на пробитии ценой закрытия MA(Close,87)+13;
Short на пробитии ценой закрытия MA(Close,87)-13;
Sell на пробитии ценой закрытия MA(Close,45) сверху вниз;
Cover на пробитии ценой закрытия MA(Close,45) снизу вверх.

Всё. Довольно просто... как казалось в начале.

Проблема в том, что при пересечении Close 87-ми периодной средней переменной X1 или X2 присваивается 1, но только для данной свечи.

А мне необходимо сохранять признак пересечения ценой средней линии до появления сигнала Short или Buy, и с их появлением обнулять этот признак.

Конструкция :
Код:
BuyMA=MA(C,87)+13;
ShortMA=MA(C,87)-13;
X1=Cross(C,BuyMA);
X2=Cross(ShortMA,C);

XShort=Flip(X2,Short);
XBuy=Flip(X1,Buy);

Buy= Cross(C,BuyMA) AND XBuy;
Short = Cross(ShortMA,C) AND XShort;

не помогает, т.к. не получается обнулять XShort и XBuy, в случае лонга или шорта.
Там постоянно 1.

Как сделать обнуление этих переменных после появления сигнала???
Чтобы не было более 1 сигнала после пересечения средней.

После одного Buy или Short должен быть только один Sell/Short или Cover/Buy соответственно.


Используй Barssince(), потом фильтруй exrem(), а потом сравнивай Barssince(условие buy)<Barssince(условие short).

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Фев 21, 2010 9:23 pm Ответить с цитатой Вернуться к началу

В общем не понятно зачем это надо. Но я бы сделал так.
Код:

BuyMA=MA(C,87)+13;
ShortMA=MA(C,87)-13;
X1=Cross(C,BuyMA);
X2=Cross(ShortMA,C);

X1 = ExRem(X1, X2);
X2 = ExRem(X2, X1);

Buy = X1;
Short = X2;


Все. XShort и XBuy не нужны. Лишние сигналы удалены функцией ExRem(). Если XShort и XBuy небходимы потом, то можно их сделать при помощи Flip()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Вс Фев 21, 2010 11:46 pm Ответить с цитатой Вернуться к началу

Я привёл не весь код, поэтому меня неверно поняли.
Извините.
Утром завтра покажу весь код.

Дело в том, что есть 2 сигнала: пересечение со средней, и пересечение Close средней+-13 для выставления ордера.

Первый сигнал простого пересечения появляется только для одной свечи, которая пересекла. На дальнейших свечах команда Cross даёт нули и обнуляет этот признак.

Потом необходимо этот признак пересечения сохранять, до тех пор пока:
- либо тенденция не усилиться и не произойдет ухода Close от средней более, чем на 12 пунктов,
- либо тенденция ослабнет и цена откатится, пересекая среднюю в обратном направлении, что должно обнулить признак предыдущего пересечения и присвоить 1 признаку нового обратного пересечения.

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Фев 22, 2010 1:17 am Ответить с цитатой Вернуться к началу

Если надо зафиксировать некое событие и "удерживать" его в течении некоторого времени, то пользуйся функцией Hold()

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Пт Фев 26, 2010 1:22 pm Ответить с цитатой Вернуться к началу

Всё равно не получается даже Hold не помогает. Пока отложил - вышла другая более первоочередная проблема.

P.S. Вот так уже почти год ни одну систему добить не получается. Всё времся всякая хрень вылезает. Задолбало! Или я идиот, или просто тупой Smile

Обнаружил ещё одну ошибку в системе:

Код:
Capital=100000;
Risk=Optimize("Risk",2.5,1,1,0.5);//планируемый риск
R1=Risk*0.7/100;
R2=Risk*0.3/100;
RR1=R1*Capital;
RR2=R2*Capital;
Filter=1;
AddColumn(Capital,"Capital",1.0);
AddColumn(Risk,"Risk",1.0);
AddColumn(R1,"R1",1.0);
AddColumn(RR1,"RR1",1.0);


В Exploration все значения выводятся стабильно нулевыми, кроме Capital и Risk.
Они всегда 100000 и 3 (видимо округяет).

Почему не происходит расчёта переменных?

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Фев 26, 2010 2:17 pm Ответить с цитатой Вернуться к началу

вот в этой строке
Код:

AddColumn(Capital,"Capital",1.0);

1.0 обозначает выводить 0 десятичных знаков, а там получается значение меньше 0. Напиши там например 1.4
Не только в этой строке. Smile

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Пт Фев 26, 2010 2:27 pm Ответить с цитатой Вернуться к началу

Ага, теперь всё видно, что считает. Smile

Возвращаюсь к проблеме Hold.
Спасибо )

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пт Фев 26, 2010 2:55 pm Ответить с цитатой Вернуться к началу

А с ним то что не так?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Вс Фев 28, 2010 2:49 am Ответить с цитатой Вернуться к началу

Да, просто мучаюсь с вопросом - заранее неизвестно сколько баров надо держать сигнал.
Т.е. надо как-то прописать, чтобы на получении сигнала на Бай/Шорт он прекратил держать сигнал пересечения.
А наперед это невозможно сделать.
Видимо как-то добавлять по 1-це каждый бар что ли... хз.

Есть ещё трабла, с которой борюсь, но про неё позже - спать пойду )

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Фев 28, 2010 12:56 pm Ответить с цитатой Вернуться к началу

Цитата:

Первый сигнал простого пересечения появляется только для одной свечи, которая пересекла. На дальнейших свечах команда Cross даёт нули и обнуляет этот признак.

Потом необходимо этот признак пересечения сохранять, до тех пор пока:
- либо тенденция не усилиться и не произойдет ухода Close от средней более, чем на 12 пунктов,
- либо тенденция ослабнет и цена откатится, пересекая среднюю в обратном направлении, что должно обнулить признак предыдущего пересечения и присвоить 1 признаку нового обратного пересечения.

Код:

BuyMA = Cross(C, MA(C,87));
OffBuyMA = Cross(MA(C,87), C) OR Cross(C, MA(C,87) + 12*TickSize);
Xbuy = Flip(BuyMA, OffBuyMA);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Ср Мар 10, 2010 1:49 pm Ответить с цитатой Вернуться к началу

Спасибо за код.

Возник ещё непонятный момент:

Цитата:

A = условия;
S = условия;

A=Flip(A,S);
S=Flip(S,A);

Buy = A AND ...;
Short = S AND ...;

BuyPrice = Close + Otstup;
Buy = ExRem (A,S);
ShortPrice = Close - Otstup;
Short = ExRem (S,A);

ChasX22 = TimeNum()>=221400 AND TimeNum()<223100>=190500 AND TimeNum()<=191500;

TimeFrameSet(in5Minute);
SellPrice = Close-Otstup;
CoverPrice = Close+Otstup;


Sell = A AND ChasX23 AND Close <Ref> = Ref(Low,-1);
Последняя красная строчка - некорректная. Ниже вставил нормальные.

В этой части кода всё, что касается A, S, Buy и Short исполняется корректно.

Не выполняется Sell и Cover в вечернее время. Хотя при просмотре Quote Editor все условия выполняются.
Почему так может быть?

База 1-минутная. Si клееный с Финама.

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль

Последний раз редактировалось: Tim (Ср Мар 10, 2010 2:14 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Мар 10, 2010 2:11 pm Ответить с цитатой Вернуться к началу

Cover в коде нету....

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Ср Мар 10, 2010 2:12 pm Ответить с цитатой Вернуться к началу

Что-то код не вставляется корректно.

Вот концовка правильная:

Код:
TimeFrameSet(in5Minute);
SellPrice = Close-Otstup;
CoverPrice = Close+Otstup;
Sell = A AND ChasX22 AND Low < Ref(High,-1);



_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль

Последний раз редактировалось: Tim (Ср Мар 10, 2010 2:15 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Ср Мар 10, 2010 2:12 pm Ответить с цитатой Вернуться к началу

Олег, блин, приходится по строчке вставлять.. что за фигня? Smile)


Код:

Cover = S AND ChasX22 AND High > Ref(Low,-1);


Всё у меня есть, просто сюда коряво вставляется почему-то.

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen