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



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

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

как узнать напрвление средней ?

у нее может быть 3 положения :идет вниз, горизонтально , вверх

меня именно не пересечение интересуею , а НАПРАЛЕНИЕ .

пример : продать если средняя идет вниз , вне зависимости находится цена под нею или над
Посмотреть профиль Отправить личное сообщение
kostimus



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

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

Суть в том , что средняя должна показывать напрвление тренда .. на глаз это легко определить , а вот объяснить тестеру ... Smile
Посмотреть профиль Отправить личное сообщение
tlt-vlad



Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва

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

Ну например так,
Код:


Var_MA = EMA(C,14);
Condition_Buy = Var_MA > ref(Var_MA,-1);// заначение переменной на текущем баре больше чем на предыдущем

/* или через цикл */

Condition_Buy[i] = Var_MA[i] > Var_MA[i-1];


Посмотреть профиль Отправить личное сообщение
MrDrJOKER



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

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

kostimus писал(а):
Суть в том , что средняя должна показывать напрвление тренда .. на глаз это легко определить , а вот объяснить тестеру ... Smile


сравни показания средней c предыдущими, если разрыв больше определённого тобой значения, то тренд присутствует.

edit: tlt-vlad уже и код наваял)
Посмотреть профиль Отправить личное сообщение
kostimus



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

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

но так ведь сравниваются только 2 значения : текущее и текущее-1 . а как сравнить , например , 10 ?
Посмотреть профиль Отправить личное сообщение
tlt-vlad



Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва

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

Ну можно так:
Код:


Var_MA = EMA(C,14);
Condition_Buy = Var_MA > ref(Var_MA,-10);// значение переменной на текущем баре больше чем на десять периодов назад

// если надо сравнивать все десять баров, то пишем так


Condition_Buy = Var_MA > ref(Var_MA,-1) and ref(Var_MA,-1) > ref(Var_MA,-2) and ref(Var_MA,-2) > ref(Var_MA,-3)...and ref(Var_MA,-9) > ref(Var_MA,-10)


По моему верно...
Посмотреть профиль Отправить личное сообщение
Sergiovy



Зарегистрирован: 03.03.2008
Сообщения: 180
Откуда: Мурманск

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

kostimus писал(а):
но так ведь сравниваются только 2 значения : текущее и текущее-1 . а как сравнить , например , 10 ?

Из опыта - почти безразлично как находить разность или на одном значении или на 10, ну если только стратегии годовые, и средние за 300...
Гораздо важнее устранить "дребезг" в момент перехода через 0,
Делаю это используя зазор в разности для лонга и шорта, а между ними Flip:
//Тренд для Лонга
PerEMAL=Param("EMAL", 3,1,25,1);
//PerEMAL = Optimize("EMAL", 3,3,5,1);
//PerEMAL=3;
DiffEMAL=Param("DiffEMAL", 33,1,100,1);
//DiffEMAL=Optimize("DiffEMAL", 33,28,38,1);
//DiffEMAL=33;
DiffL=k*DiffEMAL;
DellL=MA(BaseL,PerEMAL)-Ref(MA(BaseL,PerEMAL),-1);
//DellL=O-Ref(MA(BaseL,PerEMAL),-1);
//DellL=Ref(MA(BaseL,PerEMAL),-1)-Ref(MA(BaseL,PerEMAL),-2);

TrUp=IIf(DellL>DiffL,1,0) AND H>Ref(H,-1);

//Тренд для Шорта
PerEMAS=Param("EMAS", 3,1,25,1);
//PerEMAS = Optimize("EMAS", 3,3,10,1);
//PerEMAS =3;
DiffEMAS=Param("DiffEMAS", 40,1,100,1);
//DiffEMAS=Optimize("DiffEMAS", 35,30,40,1);
//DiffEMAS=35;
DiffS=k*DiffEMAS;
DellS=Ref(MA(BaseS,PerEMAS),-1)-MA(BaseS,PerEMAS);
//DellS=Ref(MA(BaseS,PerEMAS),-1)-O;
//DellS=Ref(MA(BaseS,PerEMAS),-2)-Ref(MA(BaseS,PerEMAS),-1);
TrDn=IIf(DellS>DiffS,1,0) AND L<Ref(L,-1);

Tr=Flip(TrUp,TrDn);
Plot(Tr,"Tr",colorBlack,styleOwnScale);

/// там кое что лишнее - выбросьте, вместо base - подставьте например С,
я это прописывал в параметрах, и меняя параметры или даже основу - вино, как все меняется сразу на картинке.

_________________
"Единственная pабота, достойная нас, — pабота над собой". Шон де Уоppен
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

По русски. Изменение мувинга
Код:
DellL=MA(BaseL,PerEMAL)-Ref(MA(BaseL,PerEMAL),-1);

должно быть больше некоторого порога
Код:
TrUp=IIf(DellL>DiffL,1,0);


:::::::::::::::::::::::::::::::::::::::::::::::::

Кстати. Необязательно писать так
Код:
IIf(DellL>DiffL,1,0)

можно просто
Код:
TrUp=DellL>DiffL AND H>Ref(H,-1);

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



Зарегистрирован: 03.03.2008
Сообщения: 180
Откуда: Мурманск

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

[quote="000"]По русски. Изменение мувинга
Кстати. Необязательно писать так...
можно просто...

Ну да... страдаем косноязычием Sad
Для меня это все черновики. когда чего то заработает - специально чищу код на предмет минимума и удобства+ комменты...
Спасибо за критикуSmile

_________________
"Единственная pабота, достойная нас, — pабота над собой". Шон де Уоppен
Посмотреть профиль Отправить личное сообщение
настырный



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

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

А можно с помощью функции ROC.
Конечно, не так изящно... но...

Код:

//поиск нетрендовых участков. Они показываются белым
//на север - синим.
//на юг - красным.
per_Mov = Param("Period Mov", 10, 3, 65, 1);
per_ROC = Param("Period ROC", 3, 3, 32, 1);
Change = Param("Change", 0.7, 0.01, 0.5, 0.01);

//средняя
Mov = MA(C,per_Mov);
//ROC - Range of Change
rov = ROC(Mov, per_ROC);
//Задание цвета линии.
C19 = IIf(abs(rov)<Change, colorWhite, IIf(Mov<Ref(Mov,-1), colorRed, colorBlue));
Plot(Mov, "Mov", C19, styleThick);
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen