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



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

СообщениеДобавлено: Пт Июл 26, 2019 11:24 pm Ответить с цитатой Вернуться к началу

Всем привет. В альфе есть индикатор BBline.
Ищу возможность перенести его в ами. А Может он уже есть , просто по другому называется?

Вот его код для альфы:

Код:

function Initialize()
{
IndicatorName = "BBLine";
AddInput("Input", Inputs.Price);   
PriceStudy = true;
AddSeries("BBLine", DrawAs.Line, Color.Magenta);   
AddParameter("Period", 30, 2);
AddParameter("D", 3.0);
AddGlobalVariable("Direction", Types.Double, 0.0);
}

function Evaluate()
{
// Alfadirect. OX. 2015
// BBLine - определяет направление по пробою границ Полос Болинджера
// Для шорта - ищем пробой ценой минимального значения BB
// Для лонга - ищем пробой ценой максимального значения BB

if ( CurrentIndex < Period )
{
  BBLine = Input[0];
  Direction = 1.0;
}
else
{
double sigma = D*LIB.STD(Input, Period)[0];
 double Upper = Input[0] + sigma;
 double Lower = Input[0] - sigma;

 if(Direction > 0)
 {
if (Lower > BBLine[-1] )   
BBLine = Lower;
    else
BBLine = BBLine[-1] ;

    if( Input[0] < BBLine[0] )
    {
    Direction = -1;
BBLine = Upper;
    }
 }
 else
 {
if (Upper < BBLine[-1] )   
BBLine = Upper;
else
BBLine = BBLine[-1] ;
 
if( Input[0] > BBLine[0] )
{
    Direction = 1;
  BBLine = Lower;
      }
  }
 }
}


и ссылка где есть немного про него с картинками
https://alfadirect4.ru/viewtopic.php?f=4&p=4665#p4665

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


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

СообщениеДобавлено: Сб Июл 27, 2019 1:24 pm Ответить с цитатой Вернуться к началу

Код:

SetBarsRequired(sbrAll, sbrAll);
Plot(C, "", colorBlack, styleCandle);
Period = Param("Period", 30, 2, 30, 1);

Upper = C + StDev(C, Period);
Lower = C - StDev(C, Period);
dir = 1;
bbline = 0;
for(i = Period+1; i<BarCount-1; i++)
{
   if(dir>0.5)
   {
      if(bbline[i-1]<Lower[i])
         bbline[i]=Lower[i];
      else
         bbline[i]=bbline[i-1];
      
      if(C[i] < bbline[i])
      {
         dir = 0;
         bbline[i] = Upper[i];
      }
   }
   else
   {
      if(bbline[i-1]>Upper[i])
         bbline[i]=Upper[i];
      else
         bbline[i]=bbline[i-1];
      if(C[i] > bbline[i])
      {
         dir = 1;
         bbline[i] = Lower[i];
      }
   }
}

Plot(Upper, "Upper", colorGreen);
Plot(Lower, "Lower", colorRed);
Plot(BBline, "BBline", colorBlue);

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



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

СообщениеДобавлено: Пн Июл 29, 2019 9:40 am Ответить с цитатой Вернуться к началу

Олег, вот что получилось)

И еще в оригинале есть параметр D.
Я так понял тут он используется для расчета stdev?

тогда вроде надо типа такого (верхушка кода):

Код:

SetBarsRequired(sbrAll, sbrAll);
Plot(C, "", colorBlack, styleCandle);
Period = Param("Period", 30, 2, 30, 1);
PerStDev = Param("Period", 3, 2, 5, 1);

Upper = C + StDev(C, PerStDev);
Lower = C - StDev(C, PerStDev);
dir = 1;
bbline = 0;
for(i = Period+1; i<BarCount-1; i++)


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


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

СообщениеДобавлено: Пн Июл 29, 2019 11:22 am Ответить с цитатой Вернуться к началу

Ничего не понял...
Про D
Её надо вставить сюда
Код:
Upper = C + StDev(C, Period);
Lower = C - StDev(C, Period);


Код:
Upper = C + D*StDev(C, Period);
Lower = C - D*StDev(C, Period);

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



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

СообщениеДобавлено: Пн Июл 29, 2019 11:39 am Ответить с цитатой Вернуться к началу

Вот поправил, получаем:
Код:
SetBarsRequired(sbrAll, sbrAll);
Plot(C, "", colorBlack, styleCandle);
Period = Param("Period", 30, 2, 30, 1);
d = Param("d", 3, 1, 5, 1);

Upper = C + d*StDev(C, Period);
Lower = C - d*StDev(C, Period);
dir = 1;
bbline = 0;
for(i = Period+1; i<BarCount-1; i++)
{
   if(dir>0.5)
   {
      if(bbline[i-1]<Lower[i])
         bbline[i]=Lower[i];
      else
         bbline[i]=bbline[i-1];
       
      if(C[i] < bbline[i])
      {
         dir = 0;
         bbline[i] = Upper[i];
      }
   }
   else
   {
      if(bbline[i-1]>Upper[i])
         bbline[i]=Upper[i];
      else
         bbline[i]=bbline[i-1];
      if(C[i] > bbline[i])
      {
         dir = 1;
         bbline[i] = Lower[i];
      }
   }
}

//Plot(Upper, "Upper", colorGreen);
//Plot(Lower, "Lower", colorRed);
Plot(BBline, "BBline", colorBlue);


На последнем баре bbline равна 0 и из-за этого выглядит вот так:
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Июл 29, 2019 11:55 am Ответить с цитатой Вернуться к началу

А сам поправить? Не?
Код:
for(i = Period+1; i<=BarCount-1; i++)

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



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

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

000 писал(а):
А сам поправить? Не?
Код:
for(i = Period+1; i<=BarCount-1; i++)


Да что-то подтупил)

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen