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



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

СообщениеДобавлено: Пн Апр 02, 2012 3:58 pm Ответить с цитатой Вернуться к началу

Прошу прощения, если тема поднималась...

История такая. В исследовательских целях решил поиграться с пересечением скользящих средних. Ами недолго сомневался и выдал на оптимизации в качестве лучшего результата системку, где медленная скользящая средняя быстрее быстрой - а я всегда подозревал, что открывать позиции нужно в противоположную сигналам сторону! Smile Соответственно вопрос: как это исправить?

Варианты типа
Код:
period2 = period1*2
и
Код:
period1 = Optimize("FastMA period", 1, 1, 50, 1);
period2 = Optimize("SlowMA period", 50, 50, 200, 1);
прошу не предлагать.
Чисто интуитивно напрашивается история с циклом на сравнение if (x>y), но тяму ее соорудить не хватает. Опять же, я сомневаюсь, что Optimize можно в цикл запихать. Может быть есть более простые варианты? Никто этим вопросом не занимался?

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Апр 02, 2012 4:51 pm Ответить с цитатой Вернуться к началу

Например так

Код:
Buy = Cross(...) AND period1 > period2;
...

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


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

СообщениеДобавлено: Пн Апр 02, 2012 4:54 pm Ответить с цитатой Вернуться к началу

Или так
Код:
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
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Tsch



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

СообщениеДобавлено: Пн Апр 02, 2012 5:01 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Например так

Код:
Buy = Cross(...) AND period1 > period2;
...
Спасибо, Олег! Вот я догадывался, что все просто, но мозг на правильный путь выйти отказался Sad

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Апр 02, 2012 5:40 pm Ответить с цитатой Вернуться к началу

Smile
Только если period1 это быстрая, то надо period1 < period2

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



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

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

Здравствуйте ! Вот два кода , пересечение средних . Первый код 12 и 26
периодный , второй код 20 и 34 периодный . Покупаю , когда строго зелёные стрелки совпадают , остальные стрелки не нужны . Как от остальных избавиться ?
Посмотреть профиль Отправить личное сообщение
Aleksandr



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

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

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) );
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Первую shape обзови shape1,
вторую shape2
И не выводи их. В конце напиши
shape = shape1 AND shape2;

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



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

СообщениеДобавлено: Пт Мар 24, 2023 10:51 am Ответить с цитатой Вернуться к началу

000 писал(а):
Первую shape обзови shape1,
вторую shape2
И не выводи их. В конце напиши
shape = shape1 AND shape2;

Да .получилось ! Спасибо
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen