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


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

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

не могу понять почему плавает GLL:


Код:
b = 0.2;
 

filt = ((H-L)+abs(C-O)) ;
s = b*filt;
 u = b*filt;

gh = EMA(EMA(H,3),2);
gl = EMA(EMA(L,3),2);

for(i =5; i < BarCount; i ++)
{
   if(i == 5)
      ghh = gh[i];
      gll = gl[i];

 if( ghh[ i-1]-s[ i-1 ] > gh[ i ] )
 
      { ghh[ i ] = ghh[ i-1 ]-s[ i-1 ];}
else
{
 if( ghh[ i- 1]+s[ i-1 ] < gh[ i ] )
 
       {ghh[ i ] = ghh[ i-1 ]+s[ i-1 ]; }
    else ghh[i] = gh[i];}


if( gll[ i-1]+s[ i-1 ] < gl[ i ] )
 
       {gll[ i ] = gll[ i-1 ]+s[ i-1 ]; }
else
{
 if( gll[ i- 1]+s[ i-1 ] > gl[ i ] )
 
       {gll[ i ] = gll[ i-1 ]-s[ i-1 ];}
  else gll[i] = gl[i];}}
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

Plot(ghh, "ghh", 1, styleStaircase);
Plot(gll, "gll", 4, styleStaircase);

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


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

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

commenced писал(а):

не могу понять почему плавает GLL:

В смысле? У меня вроде не плавает. Sad Подробно код не смотрел. Чета тормозит он безбожно...

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


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

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

Красная линия это GLL, она не далжна быть прямой. а при прокрутке ей присваивается значение последнего бара и всей отрисуемой линии. а должно быть как у GHH.

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


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

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

Проблему снял, разбив на 2 цикла. один расчитывает GHH другой GLL.

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



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

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

а куда в цикле ставится Buy и Sell?
и можно ли flip с ними использовать в цикле?
и Ref?
и функции типа LLV?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Novi4ok писал(а):
а куда в цикле ставится Buy и Sell?

Это обычные массивы которые в момент совершения соответствующей сделки должны принимать значение больше 0. Ставить можно в любое место чтобы правильно расчитались.
Novi4ok писал(а):

и можно ли flip с ними использовать в цикле?
и Ref?
и функции типа LLV?

Эти функции в цикле использовать нельзя. (на самом деле можно, но в очень специфических случаях)

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



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

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

так мне нужно в Buy писать Buy[i] или нет???

если flip нельзя использовать...мммм плохо Sad
тогда придется в переменной запоминать в позе ли система.

и почему нельзя LLV, вроде ошибку не выдал...?

насколько корректна такая строчка в цикле:
PrevMin =LLV(Low[i-1], 19);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Novi4ok писал(а):
так мне нужно в Buy писать Buy[i] или нет???

Скорее всего да
Novi4ok писал(а):

если flip нельзя использовать...мммм плохо Sad
тогда придется в переменной запоминать в позе ли система.

В принципе можно использовать flip после цикла, а если тестировать систему, то Ами сам лтшние сигналы удалит.
Novi4ok писал(а):

и почему нельзя LLV, вроде ошибку не выдал...?

насколько корректна такая строчка в цикле:
PrevMin =LLV(Low[i-1], 19);

Запись LLV(Low[i-1], 19)
аналогична записи LLV(5, 19)
Это не ошибка, но смысла такая запись не имеет (цифра 5 взята просто так и ничего не обозначает).

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



Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток

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

Спецы, гляньте пожалуйста одним глазком.
Правильно ли с точки зрения программирования в Ами?
Навеяно из начала этой ветки. Вроде работает, но подводных камней не знаю.
А нельзя ли как-то два цикла объединить в один, или будет только хуже?
Заранее спасибо.

Код:
CondLong=C>trend AND C>InputLine1 AND Hour() >= 5 & Hour() <= 14; //условие в длинную
OutBuy = C<OutLine AND Hour() >= 5 & Hour() <= 20;//условия выхода из длинной
CondShort=C<trend AND C<InputLine2 AND Hour() >= 5 & Hour() <= 14;//условие в короткую
OutShort = C>OutLine AND Hour() >= 5 & Hour() <= 20;// условие на выход из короткой
//Далее цикл для длинной
Buy=CondLong;
Sell=0;
position = 0;
for( i = 1; i < BarCount; i++ )

   {
      if(! position) // если система не в рынке
      {
          if(Buy[i])
         {
               position = 1; // открыта позиция
           }
         }
      else // если система в рынке
        {
           Sell[i] =0;
          }
          if(OutBuy[i])
           {
            Sell[i] = 1; // выход из длинной
              position = 0; // система не в рынке
            }
    }

// цикл для короткой
Short=CondShort;
Cover=0;
position = 0;
for( i = 1; i < BarCount; i++ )
   {
      if(! position) // если система не в рынке
         {
            if(Short[i])
               {
                  position = 1; // открыта позиция
               }
         }
      else // если система в рынке
         {
            Short[i] =0;
         }
            if(OutShort[i])
               {
                  Cover[i] = 1; // выход из короткой
                  position = 0; // система не в рынке
               }
   }
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
commenced
Советник


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

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

burnus писал(а):
Спецы, гляньте пожалуйста одним глазком.
Правильно ли с точки зрения программирования в Ами?
Навеяно из начала этой ветки. Вроде работает, но подводных камней не знаю.
А нельзя ли как-то два цикла объединить в один, или будет только хуже?
Заранее спасибо.

Код:
CondLong=C>trend AND C>InputLine1 AND Hour() >= 5 & Hour() <= 14; //условие в длинную
OutBuy = C<OutLine AND Hour() >= 5 & Hour() <= 20;//условия выхода из длинной
CondShort=C<trend AND C<InputLine2 AND Hour() >= 5 & Hour() <= 14;//условие в короткую
OutShort = C>OutLine AND Hour() >= 5 & Hour() <= 20;// условие на выход из короткой
//Далее цикл для длинной
Buy=CondLong;
Sell=0;
position = 0;
for( i = 1; i < BarCount; i++ )

   {
      if(! position) // если система не в рынке
      {
          if(Buy[i])
         {
               position = 1; // открыта позиция
           }
         }
      else // если система в рынке
        {
           Sell[i] =0;
          }
          if(OutBuy[i])
           {
            Sell[i] = 1; // выход из длинной
              position = 0; // система не в рынке
            }
    }

// цикл для короткой
Short=CondShort;
Cover=0;
position = 0;
for( i = 1; i < BarCount; i++ )
   {
      if(! position) // если система не в рынке
         {
            if(Short[i])
               {
                  position = 1; // открыта позиция
               }
         }
      else // если система в рынке
         {
            Short[i] =0;
         }
            if(OutShort[i])
               {
                  Cover[i] = 1; // выход из короткой
                  position = 0; // система не в рынке
               }
   }


Может я конечно невнимателен. но для чего нужен цикл?

Начала кода у вас нет.


buy=C>trend AND C>InputLine1 AND Hour() >= 5 & Hour() <= 14; //условие в длинную
sell = C<OutLine AND Hour() >= 5 & Hour() <= 20;//условия выхода из длинной
Short=C<trend AND C<InputLine2 AND Hour() >= 5 & Hour() <= 14;//условие в короткую
cover = C>OutLine AND Hour() >= 5 & Hour() <= 20;// условие на выход из короткой

Equity(1);

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



Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток

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

Начало кода осталось за кадром.
По вопросу оно не имеет значения.
Ну, в принципе там 4 линии
трендовая, две на входы в длинную/короткую и сигнальная.
Я же спросил,- правильно ли с точки зрения программирования?
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
commenced
Советник


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

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

burnus писал(а):
Начало кода осталось за кадром.
По вопросу оно не имеет значения.
Ну, в принципе там 4 линии
трендовая, две на входы в длинную/короткую и сигнальная.
Я же спросил,- правильно ли с точки зрения программирования?


С точки зрения програмирования вы усложнили код циклом, что не является в данном случае необходимистью. А если вы хотели просто посмотреть работу цикла, то как мне кажется именно вам работу цикла проверить легче всего, сравнив сигналы выдаваемые системой с циклом и без.

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



Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток

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

commenced писал(а):

С точки зрения програмирования вы усложнили код циклом, что не является в данном случае необходимистью. А если вы хотели просто посмотреть работу цикла, то как мне кажется именно вам работу цикла проверить легче всего, сравнив сигналы выдаваемые системой с циклом и без.

Понятненько.
однако как организовать проверку, к примеру, на тренд?
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
commenced
Советник


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

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

burnus писал(а):
commenced писал(а):

С точки зрения програмирования вы усложнили код циклом, что не является в данном случае необходимистью. А если вы хотели просто посмотреть работу цикла, то как мне кажется именно вам работу цикла проверить легче всего, сравнив сигналы выдаваемые системой с циклом и без.

Понятненько.
однако как организовать проверку, к примеру, на тренд?


А я откуда знаю, код ты не давал вроде Smile

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



Зарегистрирован: 29.03.2009
Сообщения: 5
Откуда: владивосток

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

commenced писал(а):


А я откуда знаю, код ты не давал вроде Smile


Да тама 4 линии

Ну возьмём любые наугад и обзовём их как у меня:
Код:
 trend=Plot( DEMA( C, 200 ), "" ,colorRed, styleLine );

InputLine1=Plot( EMA( C, 100 ), "", colorBlue, styleLine  );



Inputline2=Plot( MA( C, 70 ), "", colorBlack, styleLine  );

Outline=Plot( TEMA( C, 40 ), "", colorGreen, styleLine  );
;
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen