Автор |
Сообщение |
kostimus
Зарегистрирован: 23.05.2008
Сообщения: 41
|
как узнать напрвление средней ?
у нее может быть 3 положения :идет вниз, горизонтально , вверх
меня именно не пересечение интересуею , а НАПРАЛЕНИЕ .
пример : продать если средняя идет вниз , вне зависимости находится цена под нею или над |
|
|
Посмотреть профиль Отправить личное сообщение |
|
kostimus
Зарегистрирован: 23.05.2008
Сообщения: 41
|
Суть в том , что средняя должна показывать напрвление тренда .. на глаз это легко определить , а вот объяснить тестеру ... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
tlt-vlad
Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва
|
Ну например так,
Код: |
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
|
kostimus писал(а): |
Суть в том , что средняя должна показывать напрвление тренда .. на глаз это легко определить , а вот объяснить тестеру ... |
сравни показания средней c предыдущими, если разрыв больше определённого тобой значения, то тренд присутствует.
edit: tlt-vlad уже и код наваял) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
kostimus
Зарегистрирован: 23.05.2008
Сообщения: 41
|
но так ведь сравниваются только 2 значения : текущее и текущее-1 . а как сравнить , например , 10 ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
tlt-vlad
Зарегистрирован: 19.01.2008
Сообщения: 162
Откуда: ... теперь Москва
|
Ну можно так:
Код: |
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
Откуда: Мурманск
|
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
|
По русски. Изменение мувинга
Код: |
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
Откуда: Мурманск
|
[quote="000"]По русски. Изменение мувинга
Кстати. Необязательно писать так...
можно просто...
Ну да... страдаем косноязычием
Для меня это все черновики. когда чего то заработает - специально чищу код на предмет минимума и удобства+ комменты...
Спасибо за критику |
_________________ "Единственная pабота, достойная нас, — pабота над собой". Шон де Уоppен |
|
Посмотреть профиль Отправить личное сообщение |
|
настырный
Зарегистрирован: 15.06.2008
Сообщения: 67
|
А можно с помощью функции 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);
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|