Автор |
Сообщение |
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Прошу прощения, если тема поднималась...
История такая. В исследовательских целях решил поиграться с пересечением скользящих средних. Ами недолго сомневался и выдал на оптимизации в качестве лучшего результата системку, где медленная скользящая средняя быстрее быстрой - а я всегда подозревал, что открывать позиции нужно в противоположную сигналам сторону! Соответственно вопрос: как это исправить?
Варианты типа и
Код: |
period1 = Optimize("FastMA period", 1, 1, 50, 1);
period2 = Optimize("SlowMA period", 50, 50, 200, 1); |
прошу не предлагать.
Чисто интуитивно напрашивается история с циклом на сравнение if (x>y), но тяму ее соорудить не хватает. Опять же, я сомневаюсь, что Optimize можно в цикл запихать. Может быть есть более простые варианты? Никто этим вопросом не занимался? |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Например так
Код: |
Buy = Cross(...) AND period1 > period2;
... |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Или так
Код: |
period1 = Optimize("FastMA period", 1, 1, 50, 1);
period2 = Optimize("Delta period", 1, 1, 50, 1);
Buy = Cross(MA(C, period1), MA(C, period1 + period2)); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
000 писал(а): |
Например так
Код: |
Buy = Cross(...) AND period1 > period2;
... |
|
Спасибо, Олег! Вот я догадывался, что все просто, но мозг на правильный путь выйти отказался ![Sad](images/smiles/icon_sad.gif) |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только если period1 это быстрая, то надо period1 < period2 |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
Здравствуйте ! Вот два кода , пересечение средних . Первый код 12 и 26
периодный , второй код 20 и 34 периодный . Покупаю , когда строго зелёные стрелки совпадают , остальные стрелки не нужны . Как от остальных избавиться ? |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
Aleksandr писал(а): |
Здравствуйте ! Вот два кода , пересечение средних . Первый код 12 и 26
периодный , второй код 20 и 34 периодный . Покупаю , когда строго зелёные стрелки совпадают , остальные стрелки не нужны . Как от остальных избавиться ? |
Код: |
per = 12; // Период
p1 = (Per+1)/2;
for( i = 1; i < BarCount; i++ )
{
if(i == 1)
MAE[i] = C[i];
else
{
MAE[i] = MAE[i-1]*(1 - 1/p1) + C[i]*(1/p1);
}
}
Plot(MAE, "", colorRed);
per = 26; // Период
p2 = (Per+1)/2;
for( i = 1; i < BarCount; i++ )
{
if(i == 1)
MAE2[i] = C[i];
else
{
MAE2[i] = MAE2[i-1]*(1 - 1/p2) + C[i]*(1/p2);
}
}
Plot(MAE2, "", colorBlack);
Buy=Cross( MAE ,MAE2 );
shape = Buy * shapeUpArrow;
PlotShapes( shape, IIf( Buy, colorGreen, colorGreen), 0, IIf( Buy, MAE,MAE) );
per = 20; // Период
p1 = (Per+1)/2;
for( i = 1; i < BarCount; i++ )
{
if(i == 1)
MAE[i] = C[i];
else
{
MAE[i] = MAE[i-1]*(1 - 1/p1) + C[i]*(1/p1);
}
}
Plot(MAE, "", colorRed);
per = 34; // Период
p2 = (Per+1)/2;
for( i = 1; i < BarCount; i++ )
{
if(i == 1)
MAE2[i] = C[i];
else
{
MAE2[i] = MAE2[i-1]*(1 - 1/p2) + C[i]*(1/p2);
}
}
Plot(MAE2, "", colorBlack);
Buy=Cross( MAE ,MAE2 );
shape = Buy * shapeUpArrow;
PlotShapes( shape, IIf( Buy, colorGreen, colorGreen), 0, IIf( Buy, MAE,MAE) ); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
000
Site Admin
![](images/avatars/183029264847fb5337d4ea4.gif)
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Первую shape обзови shape1,
вторую shape2
И не выводи их. В конце напиши
shape = shape1 AND shape2; |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
![](images/spacer.gif) |
Aleksandr
Зарегистрирован: 13.11.2011
Сообщения: 99
|
000 писал(а): |
Первую shape обзови shape1,
вторую shape2
И не выводи их. В конце напиши
shape = shape1 AND shape2; |
Да .получилось ! Спасибо |
|
|
Посмотреть профиль Отправить личное сообщение |
![](images/spacer.gif) |
|