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



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

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

Привет
Ниже картинка, которую приложил к письму Клайд Лии На ней нарисован график голды с регрессионным каналом и регрессией в виде гистограммы. Я смог воспроизвести это у себя на компе (почти 1к1) Аналогичные графики рисовались и на акциях и на форексных котировках (форексные правда немного хреновее выглядят - что-то подсказывает, что в альпари котировки выгоняет генератор случайных чисел)

Мне кажется, что было бы интересно данный индюк поиметь для Ами (в очередной раз ругаю себя за тупость в программинге)
Если вы согласны - подцеплю код
Посмотреть профиль Отправить личное сообщение
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

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

max писал(а):

Если вы согласны - подцеплю код


Код для TS или для Ами?
Посмотреть профиль Отправить личное сообщение
max



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

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

Rybak писал(а):
max писал(а):

Если вы согласны - подцеплю код


Код для TS или для Ами?

У меня код для TS - родной от Ли
Я конечно не силен в программинге, но думаю переписать его на ами очень просто будет
Посмотреть профиль Отправить личное сообщение
Амиброкеровец



Зарегистрирован: 30.12.2008
Сообщения: 214
Откуда: Воображляндия

СообщениеДобавлено: Вс Фев 08, 2009 8:05 pm Ответить с цитатой Вернуться к началу

Кидай код, попробуем конвертнуть его
Посмотреть профиль Отправить личное сообщение
max



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

СообщениеДобавлено: Вс Фев 08, 2009 8:46 pm Ответить с цитатой Вернуться к началу

reg4all писал(а):
Кидай код, попробуем конвертнуть его


Код:
{*******************************************************************
Indicator:    Lin Regression Hist
Description : This Indicator plots difference in Linear Regression Lines
Provided By : Omega Research,Inc. (c) Copyright 1999
Modified By : Clyde Lee (c) 2007,CREATE A HISTOGRAM DISPLAY.
                     Of the Raff channel lines and the closing price.
********************************************************************}
inputs:
  Length( 34),     {Length for LR calculation of Raff Channels.     }
                         {The difference in the current closing price and  }
                         {the channel lines is computed and plotted.        }
  LongMult(2),    {Multiplier of Length to get long length.             }
  Smooth(3),       {Length for smoothing filter.                             }
  ChanWide(2);   {Multiplier of StdDev(c,Length) to set width.     }
                         {Negative is multiplier (%) of closing price.        }
 

variables:
 UseLength(Iff(Length<9,9,Length)),
 UseLength1(IntPortion(UseLength*LongMult)),
 ChanStdD(0),
 WideChan(Iff(ChanWide<=0,1,ChanWide)),
  LRV1(0), {Current linear regression valueS}
  LRV(0); {Current linear regression valueS}
 
If ChanWide>0 then ChanStdD=StdDev(MedianPrice,UseLength)*WideChan
         else ChanStdD=MedianPrice/100*WideChan;
 
If LongMult>0 then begin
 LRV1   = LinearRegValue(MedianPrice,UseLength1,0) ;
 
 Value10=(c-(LRV1+ChanStdD))-((LRV1-ChanStdD)-c);
 If Smooth>0 then Value11=XAverage(Value10,Smooth)
             else Value11=Value10;
 If Value11>0 then Plot3(Value11,"el1+")
              else Plot4(Value11,"el1-");
End;
 

LRV   =LinearRegValue(MedianPrice,UseLength,0) ;
 
Value0=(c-(LRV+ChanStdD))-((LRV-ChanStdD)-c);
If Smooth>0 then Value1=XAverage(Value0,Smooth)
           else Value1=Value0;
 
If Value1>0 then Plot1(Value1,"el+")
            else Plot2(Value1,"el-");
 
{   
Value21=Value11-Value1;
If Value21>0 then Plot2(Value21,"el+")
             else Plot3(Value21,"el-");
}
Посмотреть профиль Отправить личное сообщение
max



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

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

Тэкс, вижу. что прям все набросились переводить код в AFL Smile
Ну чтож, попробую сам

Код:
// Параметры
Length = Param("Length", 34, 0, 500, 1);
LongMult = Param("LongMult", 2, 0, 10, 0.5);
Smooth = Param("Smooth", 3, 0, 10, 1);
ChanWide = Param("ChanWide", 2, 0, 10, 1);

UseLength = IIf(Length<9,9,Length);
WideChan = IIf(ChanWide<=0,1,ChanWide);
UseLength1 = int(UseLength*LongMult);
MedianPrice = (H+L)/2;

if ( ChanWide > 0 )
ChanStdD = StDev(MedianPrice,UseLength)*WideChan;
else
ChanStdD = MedianPrice/100*WideChan;


if (LongMult > 0)
{
 LRV1   = LinearReg(MedianPrice,UseLength1);
 Value10=(C-(LRV1+ChanStdD))-((LRV1-ChanStdD)-C);
 
if (Smooth>0)
Value11= EMA(Value10,Smooth);
else
Value11=Value10;


for( i = 1; i < BarCount; i++ )
{
 if (Value11[i]>0)
{Plot( Value11,"el1+", colorRed, styleHistogram);}
else
{Plot( Value11,"el1-", colorYellow, styleHistogram); }
}
}


LRV = LinearReg(MedianPrice,UseLength);
Value0=(C-(LRV+ChanStdD))-((LRV-ChanStdD)-C);

if (Smooth>0)
Value1=EMA(Value0,Smooth);
else
Value1=Value0;
 
for( i = 1; i < BarCount; i++ )
{
  if (Value1[i]>0)
    {
     Plot( Value1,"el+", colorBlue, styleHistogram);
   }
   else
   {
      Plot( Value1,"el-", colorLightBlue, styleHistogram);
   }
}



Ну вот собсно что вышло.
Но есть несколько вещей, которые меня смутили:
1.я не помню, что Омега подразумевает под медианной ценой, а посмотреть сейчас не могу - под рукой только Ами
2.Меня очень смущает тот факт, что у Клайда Ли в гистограмме 4 цвета, а у меня только 2. Т.е. последние If не отображаются
Ну и так как это для меня вообще первый код, где я столкнулся с IF для которой нужны квадратные скобки - то меня тут вообще все смущает Smile

Хелп плиз Embarassed
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Я, к сожалению, помочь не могу. Совсем ничего не понимаю в омеговском коде.

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



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

СообщениеДобавлено: Пн Фев 16, 2009 4:00 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Я, к сожалению, помочь не могу. Совсем ничего не понимаю в омеговском коде.

ну там с кодом ами совпало...меня просто смущает тот факт. что в If я не могу подставить переменное значение "в лоб" как в омеге
а нужна конструкция с for

ну если тут никто не смогет - на пауке пошукаю, а потом сюда выложу...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Фев 16, 2009 5:37 pm Ответить с цитатой Вернуться к началу

На сколько я знаю омега в любом случае перебирает бары от начала до конца. Ами так делает только если задать цикл. Возможно, что надо использовать не if, а IIf.. ???

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



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

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

000 писал(а):
На сколько я знаю омега в любом случае перебирает бары от начала до конца. Ами так делает только если задать цикл. Возможно, что надо использовать не if, а IIf.. ???


Я пробовал - Ами меня послал
Посмотреть профиль Отправить личное сообщение
max



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

СообщениеДобавлено: Ср Фев 18, 2009 4:59 pm Ответить с цитатой Вернуться к началу

max писал(а):
000 писал(а):
На сколько я знаю омега в любом случае перебирает бары от начала до конца. Ами так делает только если задать цикл. Возможно, что надо использовать не if, а IIf.. ???


Я пробовал - Ами меня послал


OOO - вы оказались в итоге правы. Нужно было пользовать IIF....только я попользовал его не правильно с начало

Правильный код ниже
Код:

// Параметры
Length = Param("Length", 34, 0, 500, 1);
LongMult = Param("LongMult", 2, 0, 10, 0.5);
Smooth = Param("Smooth", 3, 0, 10, 1);
ChanWide = Param("ChanWide", 2, 0, 10, 1);

UseLength = IIf(Length<9,9,Length);
WideChan = IIf(ChanWide<=0,1,ChanWide);
UseLength1 = int(UseLength*LongMult);
MedianPrice = (H+L)/2;

if ( ChanWide > 0 )
ChanStdD = StDev(MedianPrice,UseLength)*WideChan;
else
ChanStdD = MedianPrice/100*WideChan;


if (LongMult > 0)
{
 LRV1   = LinearReg(MedianPrice,UseLength1);
 Value10=(C-(LRV1+ChanStdD))-((LRV1-ChanStdD)-C);
 }
if (Smooth>0)
Value11= EMA(Value10,Smooth);
else
Value11=Value10;

colors = IIf(Value11 > 0, colorRed, colorYellow);
Plot(Value11, "e11", colors, styleHistogram);

LRV = LinearReg(MedianPrice,UseLength);
Value0=(C-(LRV+ChanStdD))-((LRV-ChanStdD)-C);

if (Smooth>0)
Value1=EMA(Value0,Smooth);
else
Value1=Value0;
 
colors = IIf(Value1 > 0, colorBlue, colorLightBlue);
Plot(Value1, "e1", colors, styleHistogram);
Посмотреть профиль Отправить личное сообщение
pitero



Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург

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

000 писал(а):
Совершенно верно. Этой строкой.
Можно, например, попробовать для изменения "ширины" канала умножить на коэффициент.
Код:

Level = EMA(abs(C-Ref(C, -1)), 100) *
Param("Level koeff", 1, 0.5, 2, 0.1);


А как строится канал? По ценам закрытия? То есть это просто эмуляция наклонной линии тренда по ценам закрытия?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Сб Апр 11, 2009 8:45 pm Ответить с цитатой Вернуться к началу

pitero писал(а):

А как строится канал? По ценам закрытия?

Строится по ценам закрытия.
pitero писал(а):

То есть это просто эмуляция наклонной линии тренда по ценам закрытия?

Можно сказать и так хотя это не совсем верно. Проще всего не теоретически описывать правила построения, а пощупать на практике.
См. рисунок.

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



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

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

max писал(а):

Код:

...поскипано...
Value10=(C-(LRV1+ChanStdD))-((LRV1-ChanStdD)-C);
...поскипано...
Value0=(C-(LRV+ChanStdD))-((LRV-ChanStdD)-C);
...поскипано...

не совсем понял, зачем нужна переменная ChanStdD, если раскрыв скобки мы получим:
Value10 = 2 * (C - LRV1);
Value0 = 2 * (C - LRV);

ЗЫ прошу прощения, если тема устарела, просто глаза резануло...
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Угу. Похоже автор накосячил. Я не смотрел. Один черт в изи ничего не понимаю. Smile

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen