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



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

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

Система. Смотрим, тестируем.
99% кода с этого сайта.
делал для фьючерса газпрома. 1 час.
Выкладываю как есть.
автор индикаторов commenced.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Vladimir



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

СообщениеДобавлено: Сб Ноя 07, 2009 2:04 pm Ответить с цитатой Вернуться к началу

На мой взгляд, она заглядывает в будущее.
Посмотреть профиль Отправить личное сообщение
Teema



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

СообщениеДобавлено: Сб Ноя 07, 2009 3:58 pm Ответить с цитатой Вернуться к началу

Да, похоже так. Как нашел? По bar replay или по коду?
Тогда так. Но похоже, надо еще над системкой работать. Wink
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Vladimir



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

СообщениеДобавлено: Сб Ноя 07, 2009 6:24 pm Ответить с цитатой Вернуться к началу

Все коды с аномально большой прибылью я проверяю вручную:

Код:
sdvig = Param("sdvig", 0, 0, 700, 1);
O = Ref(O, -sdvig);
H = Ref(H, -sdvig);
L = Ref(L, -sdvig);
C = Ref(C, -sdvig);
sdvigH = Param("sdvigH", 0, -50, 50, 1);
H = IIf(BarIndex() >= LastValue(Cum(1))-1,H-sdvigH,H);
sdvigO = Param("sdvigO", 0, -50, 50, 1);
O = IIf(BarIndex() >= LastValue(Cum(1))-1,O-sdvigO,O);
sdvigC = Param("sdvigC", 0, -100, 100, 1);
C = IIf(BarIndex() >= LastValue(Cum(1))-1,C-sdvigC,C);
sdvigL = Param("sdvigL", 0, -100, 100, 1);
L = IIf(BarIndex() >= LastValue(Cum(1))-1,L-sdvigL,L);
Посмотреть профиль Отправить личное сообщение
Teema



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

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

Ё!
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
altaru



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

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

Vladimir писал(а):
Все коды с аномально большой прибылью я проверяю вручную:

Код:
sdvig = Param("sdvig", 0, 0, 700, 1);
O = Ref(O, -sdvig);
H = Ref(H, -sdvig);
L = Ref(L, -sdvig);
C = Ref(C, -sdvig);
sdvigH = Param("sdvigH", 0, -50, 50, 1);
H = IIf(BarIndex() >= LastValue(Cum(1))-1,H-sdvigH,H);
sdvigO = Param("sdvigO", 0, -50, 50, 1);
O = IIf(BarIndex() >= LastValue(Cum(1))-1,O-sdvigO,O);
sdvigC = Param("sdvigC", 0, -100, 100, 1);
C = IIf(BarIndex() >= LastValue(Cum(1))-1,C-sdvigC,C);
sdvigL = Param("sdvigL", 0, -100, 100, 1);
L = IIf(BarIndex() >= LastValue(Cum(1))-1,L-sdvigL,L);


и для чего отрывок этого кода?
Посмотреть профиль Отправить личное сообщение
Teema



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

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

Берем этот код, вставляем в свой и при работе barreplay:
прошла сделка- двигаем param OHLC смотрим как наш код реагирует на это, не пропадают ли сигналы и т.п.
Я так это дело понял.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
fewry



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

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

выглядит неплохо Smile . надо протестить еще. только у меня был один глюк - в самой левой части графика красная лииня индикатора улетает вниз до 0, и получается что сам график цены находится наверху в узком масштабе. или так и должно быть?
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

MAAAN779 писал(а):
выглядит неплохо Smile . надо протестить еще. только у меня был один глюк - в самой левой части графика красная лииня индикатора улетает вниз до 0, и получается что сам график цены находится наверху в узком масштабе. или так и должно быть?


Нет.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Vladimir писал(а):
На мой взгляд, она заглядывает в будущее.


Код не заглядывает в будующее, он меняет свое прошлое. Smile Возьмите заг заг Олега со стабильными значениями и с помощью его определяйте пики, вариантов их определения множество.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Vladimir



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

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

А какой именно, их ведь несколько, а циклах я не разберусь Question
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

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

Vladimir писал(а):
А какой именно, их ведь несколько, а циклах я не разберусь Question


Вроде этот код.

Код:
SetBarsRequired(100000,0);

revers = 1.5/100;

Trend = 1;                   
Rev[0] = C[0] - C[0]*Revers;         
UPpik = 0;
Dwpik = 0;
k = 1;
SwingLine = Null;
SwingLine[0] = C[0];

function ZigLine(k, i, trend)
{
   d = i - k;
   if(trend)
   {
      Amp = H[i] - L[k];
      SwingLine[k] = L[k];
   }
   else
   {
      Amp = L[i] - H[k];
      SwingLine[k] = H[k];
   }
   Step = Amp/d;
   for(j = k+1; j <= i; j++)
   {
      SwingLine[j] = SwingLine[j-1]+ Step;
   }
   return SwingLine;
}

for(i = 1; i < BarCount; i++)
{
   if(Trend)                        //Up Trend
   {
      if(H[i] > UPpik)                     
      {
         rev[i] = H[i] - H[i]*revers;
         CE = i;
         ZigLine(k, i, trend);
         Uppik = H[i];
      }
      else
      {
         if(L[i] < Rev[i-1])         
         {
            Trend = 0;
            Dwpik = L[i];
            k = CE;
            CE = i;
            ZigLine(k, i, trend);
            Rev[i] = L[i] + L[i]*revers;

         }
         else                                     
         {
            Rev[i] = Uppik - uppik*revers;
         }
      }
   }
//======================================
   else                                             //Down Trend
   {
      if(L[i] < DWpik)                     
      {
         Rev[i] = L[i] + L[i]*Revers;
         DWpik = L[i];
         CE = i;
         ZigLine(k, i, trend);
      }
      else
      {
         if(H[i] > Rev[i-1])             
         {
            Trend = 1;
            Uppik = H[i];
            k = CE;
            CE = i;
            ZigLine(k, i, trend);
            Rev[i] = H[i] - H[i]*Revers;
         }
         else                                       
         {
            Rev[i] = DWpik + DWpik*Revers;
         }
      }
   }
}

Plot(Rev, "revers", ParamColor("Color", colorBlue ), ParamStyle("Style Revers", styleDashed) );
Plot(SwingLine, "ZigZag", IIf(SwingLine > Ref(SwingLine, -1), 27, 4), ParamStyle("Style Swing", styleThick) );

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вт Ноя 24, 2009 6:21 pm Ответить с цитатой Вернуться к началу

Примерно так.

Код:
_SECTION_BEGIN("тренд");
SetBarsRequired(100000,0);
D=Optimize("%",0.4,0,10,0.2);
revers = d/100;

Trend = 1;                   
Rev[0] = C[0] - C[0]*Revers;         
UPpik = 0;
Dwpik = 0;
k = 1;
SwingLine = Null;
SwingLine[0] = C[0];

function ZigLine(k, i, trend)
{
   d = i - k;
   if(trend)
   {
      Amp = H[i] - L[k];
      SwingLine[k] = L[k];
   }
   else
   {
      Amp = L[i] - H[k];
      SwingLine[k] = H[k];
   }
   Step = Amp/d;
   for(j = k+1; j <= i; j++)
   {
      SwingLine[j] = SwingLine[j-1]+ Step;
   }
   return SwingLine;
}

for(i = 1; i < BarCount; i++)
{
   if(Trend)                        //Up Trend
   {
      if(H[i] > UPpik)                     
      {
         rev[i] = H[i] - H[i]*revers;
         CE = i;
         ZigLine(k, i, trend);
         Uppik = H[i];
      }
      else
      {
         if(L[i] < Rev[i-1])         
         {
            Trend = 0;
            Dwpik = L[i];
            k = CE;
            CE = i;
            ZigLine(k, i, trend);
            Rev[i] = L[i] + L[i]*revers;

         }
         else                                     
         {
            Rev[i] = Uppik - uppik*revers;
         }
      }
   }
//======================================
   else                                             //Down Trend
   {
      if(L[i] < DWpik)                     
      {
         Rev[i] = L[i] + L[i]*Revers;
         DWpik = L[i];
         CE = i;
         ZigLine(k, i, trend);
      }
      else
      {
         if(H[i] > Rev[i-1])             
         {
            Trend = 1;
            Uppik = H[i];
            k = CE;
            CE = i;
            ZigLine(k, i, trend);
            Rev[i] = H[i] - H[i]*Revers;
         }
         else                                       
         {
            Rev[i] = DWpik + DWpik*Revers;
         }
      }
   }
}

Plot(Rev, "revers", ParamColor("Color", colorBlue ), ParamStyle("Style Revers", styleDashed) );
Plot(SwingLine, "ZigZag", IIf(SwingLine > Ref(SwingLine, -1), 27, 4), ParamStyle("Style Swing", styleThick) );


Cond1 = Ref(Ref(SwingLine, -1)<Ref(SwingLine,-2) AND SwingLine > Ref(SwingLine, -1),1);
Cond2 = Ref(Ref(SwingLine, -1)> Ref(SwingLine,-2) AND SwingLine < Ref(SwingLine, -1),1);

Cond3 = Ref(Cross(C,Ref(rev,-1)),-1);
Cond4 = Ref(Cross(Ref(rev,-1),C),-1);

C1 = BarsSince(Cond1);
C2 = BarsSince(Cond2);

f = Ref(L,-C1);
ff = Ref(H,-C2);

SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() ); 

L1= ValueWhen(Cond3, f, 1); 
H1= ValueWhen(Cond4, ff, 1);
L2= ValueWhen(Cond3, f, 2);
H2= ValueWhen(Cond4, ff, 2);

DF=Optimize("% от предыдущего экстремума",0,0,100,10);

LD=DF*IIf(L1 < L2, L2-L1, 0)/100;
HD=DF*IIf(H1 > H2, H1-H2, 0)/100;

Lg=L1-HD;
HN=H1+LD;


LE=Cross(H,Ref(HN,-1));
LX=Cross(Ref(Lg,-1),L);
k = BarsSince(LE);
n = BarsSince(LX);

CH=IIf(k>=n,HN,Lg);
Plot( CH, "function example", 6 );

Buy = Le;
Short = Lx;
Sell = Short;
Cover = Buy;
Equity(1); 
BuyPrice = CoverPrice = Max(O,Ref(HN,-1));
ShortPrice = SellPrice = Min(O,Ref(Lg,-1));


_SECTION_END();

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Vladimir



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

СообщениеДобавлено: Чт Ноя 26, 2009 7:56 am Ответить с цитатой Вернуться к началу

Иэтот код не меняет прошлое и не заглядывает в будущее? Razz
Эта ветка на мой взгляд является продолжением http://amisite.ru/phpBB2/viewtopic.php?t=453
Посмотреть профиль Отправить личное сообщение
Teema



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

СообщениеДобавлено: Чт Ноя 26, 2009 8:37 am Ответить с цитатой Вернуться к началу

Прихожу к выводу, что все коды где покупки и продажи основаны только на High & Low меняют или могут менять сигналы. Обязательно случится ценовая ситуация, когда сначала H>ref(h,-1), а потом L<ref(L,-1) и так семь раз.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen