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



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

СообщениеДобавлено: Пт Дек 25, 2009 11:25 am Ответить с цитатой Вернуться к началу

Необходимо сделать канал. Есть обычная MA (период не важен). От неё нужно сделать верхнюю и нижнюю границы с постоянным октлонением +8% и -8% соответственно. Должен получится канал типа Боллинджера, но с неизменной шириной. Как за писать в коде, что то не соображу. Помогите пожалуйста.


Последний раз редактировалось: Денискг (Пт Дек 25, 2009 1:50 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Дек 25, 2009 12:41 pm Ответить с цитатой Вернуться к началу

Код:
Top = MA(C, 20)*1.08;
Bot =  MA(C, 20)*0.92;

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



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

СообщениеДобавлено: Сб Дек 26, 2009 9:33 pm Ответить с цитатой Вернуться к началу

За ответ спасибо. То что нужно.
Есть у меня системя, которая генерирует сигналы после выполнения двух условий, покупка только после того как сработает сигнал пересечения с нижней границей канала и RSI,30.:
Код:

UP = (MA(C, 20)*(1.005));
DOWN =  (MA(C, 20)*(0.995));
Buy1=Cross(C,DOWN);
Buy2 = Cross(r,30);
Buy=Buy1 AND Buy2;
Sell1=Cross(UP,C);
Sell2=Cross(70,r);
Sell=Sell1 AND Sell2;
Short = Sell;//0;
Cover = Buy;//0;

Недостаток в том , что покупка происходит после появления сигналов на одном баре. Если RSI пересек 30 раньше, чем был пересечен канал снизу вверх, покупки не будет. Как сделать так что бы система учитывала сигналы по отдельности. Например RSI,30 был на 10-м баре, а канал пересечен на 12-м (к примеру):система получила два сигнала и купила бы.
Посмотреть профиль Отправить личное сообщение
fewry



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

СообщениеДобавлено: Сб Дек 26, 2009 9:51 pm Ответить с цитатой Вернуться к началу

мне в голову пришел только такой вариант. на работоспособность не проверял
Код:

UP = (MA(C, 20)*(1.005));
DOWN =  (MA(C, 20)*(0.995));
Buy1=Cross(C,DOWN);
Buy11=Cross(C,Ref(DOWN,-1));
Buy111=Cross(C,Ref(DOWN,-2));
Buy2 = Cross(r,30);
Buy=(Buy1 AND Buy2) OR (Buy11 AND Buy2) OR (Buy111 AND Buy2);
Sell1=Cross(UP,C);
Sell11=Cross(Ref(UP,-1),C);
Sell11=Cross(Ref(UP,-2),C);
Sell2=Cross(70,r);
Sell=(Sell1 AND Sell2) OR (Sell11 AND Sell2) OR (Sell111 AND Sell2);
Short = Sell;//0;
Cover = Buy;//0;
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Дек 27, 2009 1:45 pm Ответить с цитатой Вернуться к началу

Вопрос поставлен не совсем верно.
Допустим Cross(r,30); был пол года назад а теперь наконец и Cross(C,DOWN); случился. И какая связ?. Т.е. надо ограничить время расхождения этих сигналов. Для "удержания" сигнала очень удобна функция Hold(). Делаем типа так.
Код:

UP = (MA(C, 20)*(1.005));
DOWN =  (MA(C, 20)*(0.995));
Buy1=Cross(C,DOWN);
Buy2 = Hold(Cross(r,30), 5);
Buy=Buy1 AND Buy2;
Sell1=Cross(UP,C);
Sell2=Hold(Cross(70,r), 5);
Sell=Sell1 AND Sell2;
Short = Sell;//0;
Cover = Buy;//0;

После срабатывания условия с RSI ждем 5 баров и если в это время сработал сигнал с Машками открываем позу.

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



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

СообщениеДобавлено: Сб Янв 02, 2010 5:32 pm Ответить с цитатой Вернуться к началу

А вот так правильно?


вхоядщий ТФ часовики

TimeFrameSet(inDaily);
LineD=МA(0,y);
EMALineD=EMA(O,y1);

Buy1=Hold(Cross(LineD,EMALineD),1); удерживем сигнал в течение этого бара
Sell1=Hold(Cross(EMALineD,LineD),1);

TimeFrameRestore();


Line=МA(0,y);
EMALine=EMA(O,y1);

Buy2=Cross(Line,EMALine);
Sell2=Cross(EMALine,Line);


Buy=Buy1 AND Buy2;
Sell=Sell1 AND Sell2;

Short=0;
Cover=0;

то есть по дневкам появился сигнал, запомнили и удерживаем его, потом ждем сигнала по базовому ТФ(часоик) и покупка когда есть оба сигнала[/code]
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Янв 02, 2010 6:50 pm Ответить с цитатой Вернуться к началу

Совсем не правильно.
В данном случае Hold не нужен. После разжатия сигналы Buy1 и Sell1 и так будут действовать в течении дня.
Код:

TimeFrameSet(inDaily);
LineD = MA(O, y);
EMALineD = EMA(O, y1);

Buy1 = Cross(LineD, EMALineD);
Sell1 = Cross(EMALineD, LineD);

TimeFrameRestore();

Buy1 = TimeFrameExpand(Buy1, inDaily);
Sell1 = TimeFrameExpand(Sell1, inDaily);

Line = MA(O, y);
EMALine = EMA(O, y1);

Buy2 = Cross(Line, EMALine);
Sell2 = Cross(EMALine, Line);

Buy = Buy1 AND Buy2;
Sell = Sell1 AND Sell2;

Short = 0;
Cover = 0;

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



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

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

000 писал(а):
Совсем не правильно.
В данном случае Hold не нужен. После разжатия сигналы Buy1 и Sell1 и так будут действовать в течении дня.
Код:

TimeFrameSet(inDaily);
LineD = MA(O, y);
EMALineD = EMA(O, y1);

Buy1 = Cross(LineD, EMALineD);
Sell1 = Cross(EMALineD, LineD);

TimeFrameRestore();

Buy1 = TimeFrameExpand(Buy1, inDaily);
Sell1 = TimeFrameExpand(Sell1, inDaily);

Line = MA(O, y);
EMALine = EMA(O, y1);

Buy2 = Cross(Line, EMALine);
Sell2 = Cross(EMALine, Line);

Buy = Buy1 AND Buy2;
Sell = Sell1 AND Sell2;

Short = 0;
Cover = 0;


Спасибо, так стало получше. Но не понимаю почему сигналы не совпадают с сигналами на чисто дневном
ТО есть на дневке сделка была 28.05 а на часовом и плюс подтверждение дневкой сделка 20.05
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Янв 03, 2010 12:18 am Ответить с цитатой Вернуться к началу

Могу посоветовать только одно. Вывести линии на график и сравнить.
Таким образом разобраться в чем дело.

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



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

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

как в AFL заставить срабатывать сигнал на продажу только если покупка состоялась?

Код:


Buyed= MyBuy = Cross(RSI(Periods), Lowline);
MySell = (Cross(Highline, RSI(Periods)) AND Buyed==True) OR (Cross(Lowline, RSI(Periods)) AND Buyed==False);


так же некорректно?

edit: нашёл ф-цию flip.

Код:


MyBuy = Cross(RSI(Periods), Lowline);
Buyed = Flip(MyBuy, MySell);

MySell = (Cross(Highline, RSI(Periods))  OR Cross(Lowline, RSI(Periods))) AND Buyed==True);


так ведь корректно?

edit2:
Код:


MyBuy = Cross(RSI(Periods), Lowline);
MySell = (Cross(Highline, RSI(Periods))  OR Cross(Lowline, RSI(Periods))) AND Flip(MyBuy, MySell);


вот он, венец творения) правда до этого все переименные нужно инициализировать.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Нет. Так не корректно.
Получается, что сигнал на продажу зависит сам от себя.
Код:

MySell = (Cross(Highline, RSI(Periods))  OR Cross(Lowline, RSI(Periods))) AND Flip(MyBuy, MySell);

Т.е. В формуле MySell используется сам MySell.

Обычно это делается не так. Сначала получаем "черновые" сигналы.
Код:

MyBuy = Cross(RSI(Periods), Lowline);
MySell = (Cross(Highline, RSI(Periods))  OR Cross(Lowline, RSI(Periods)));

А потом убираем лишние, те, которые не идут после противоположного.
Код:

MyBuy = ExRem( MyBuy, MySell );
MySell = ExRem( MySell, MyBuy );

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen