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


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

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

burnus писал(а):
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  );
;


странная запись. Проверять нечего.

Код:
trend= DEMA( C, 200 );

InputLine1=EMA( C, 100 );



Inputline2=ma( C, 70 );

Outline=TEMA( C, 40 );


отрисовка

Код:
Plot(trend, "trend", 6, 1);

Plot(InputLine1, "InputLine1", 7, 1);

Plot(Inputline2, "Inputline2", 8, 1);

Plot(Outline, "Outline", 9, 1);

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


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

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

В общем так. В коде вроде ошибок нет. В прочем, как уже сказано смысла городить огород с циклом тоже нет.
Не понравилось, что применено 2 цикла (это будет тормозить код). В принципе можно и лонг и шорт упаковать в один цикл.

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


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

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

Наврал. Ошибка есть. И очень серьезная. И при лонге и шорте position = 1. Так нельзя. Надо при шорте сделать например -1

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


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

СообщениеДобавлено: Пн Июн 22, 2009 6:01 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;
Short = CondShort;
Cover = 0;
position = 0;

for( i = 1; i < BarCount; i++ )
{
  if(position == 0) {   // если система не в рынке
  Sell[i] = 0;
  Short[i] = 0;
    if(Buy[i]) {
      position = 1; // открыта длинная позиция
    }
    else if(Sell[i]) {
      position = -1; // открыта короткая позиция
    }
  }
  else if(position == 1) {  // система в лонге
    Sell[i] = 0;
    Buy[i] = 0;

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

    if(OutShort[i] == 1) {
      Cover[i] = 1; // выход из длинной
      position = 0; // система не в рынке
    }
  }
}



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


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

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

000 писал(а):
Наврал. Ошибка есть. И очень серьезная. И при лонге и шорте position = 1. Так нельзя. Надо при шорте сделать например -1

С другой стороны там перед вторым циклом идет обнуление position
Получится, что система может быть одновременно и в лонге и в шорте... Sad

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



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

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

000 писал(а):
000 писал(а):
Наврал. Ошибка есть. И очень серьезная. И при лонге и шорте position = 1. Так нельзя. Надо при шорте сделать например -1

С другой стороны там перед вторым циклом идет обнуление position
Получится, что система может быть одновременно и в лонге и в шорте... Sad

Спасибо. Попробую немного по другому.
Посмотреть профиль Отправить личное сообщение AIM Address Yahoo Messenger MSN Messenger
Амиброкеровец



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

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

Ребят подскажите как в цикле выход в конце дня. Где ошибка в коде?

Код:

day_=day();
for(i = 1; i<BarCount-1; i++)
{
....
      if( Day_[i]!=Day_[i+1]) // выход в конце текущего дня
      {
         Sell[i] = 1; // продажа
         position = 0; // система не в рынке
         SellPrice[i] = C[i];
      }

}

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


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

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

Да вроде все правильно....

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



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

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

000 писал(а):
Да вроде все правильно....

Да, действительно все верно!!

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


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

СообщениеДобавлено: Сб Авг 07, 2010 7:42 pm Ответить с цитатой Вернуться к началу

Жжош Exclamation Exclamation Exclamation

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



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

СообщениеДобавлено: Пн Авг 09, 2010 11:08 pm Ответить с цитатой Вернуться к началу

Все привет! Я использую 14 дневный ATR и не знаю как его подружить с циклом. Проблема в том что 14 первых баров ATR = null; а цикл стартует сразу и получаеться фигня. Setbarsreqiured - не помогает. Как моглабы выглядеть проверка типа: Если ATR = null - ждемс, если не null - работаемс.

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


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

СообщениеДобавлено: Пн Авг 09, 2010 11:43 pm Ответить с цитатой Вернуться к началу

А не проще начать цикл с 14 бара ?

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



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

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

Разумеется проще, очень даже логично, но, если я например, смотрю дневной график, и i = Period_ATR, что еще более логично чем просто i = 14, я уже не могу посмотреть часовики, потому что ATR считается все равно за дневные бары (timeframeset) и что бы было правильно нужно делать i = Period_ATR * 24. Об этом я забыл написать в предыдущем сообщении. Как бы вот этот процесс автоматизировать ? что бы не добавлять/удалять все время "*24" и производные (например "*3600")
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Авг 10, 2010 5:23 pm Ответить с цитатой Вернуться к началу

В общем я все равно не понял в чем проблема, ну ладно Smile
А почему бы тогда не использовать функцию IsNull()?
Типа так
atr = IIf(IsNull(ATR(14)), 0, ATR(14));

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



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

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

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen