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



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

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

Здравствуйте!

Не могу разобраться с простой ситуацией.

При:

Buy = Cross(C, 1000);
Sell = Cross(C, 1200);

все работает и Buy и Sell. Но множество ненужных сигналов.

При:

Buy = Cross(C, 1000);
Sell = Cross(C, 1200);

Buy = ExRem(Buy , Sell );
Sell = ExRem(Sell , Buy );

во время тестирования появляется только один Sell и последующий Buy , но первый Buy не появляется. В чем может быть причина?

Может быть какие то параметры тестера покрутить?


СИНТАКСИС exrem( ARRAY1, ARRAY2 )
ВОЗВРАЩАЕТ МАССИВ
ФУНКЦИЯ удаляет лишние сигналы:
возвращает 1 когда в первый раз появляется сигнал в массиве Array1, затем все время 0 до тех пор пока не появится сигнал в массиве Array2 даже если в массиве Array1 появляются еще сигналы.


ПРичем если на графике пишем код:

SetPositionSize(1, spsShares );

Buy = Cross(C, 1000);
Sell = Cross(C, 1200);

Buy = ExRem( Buy , Sell );
Sell = ExRem( Sell , Buy );

Plot (Buy ,"Eq",colorBlue, styleOwnScale);

Plot (Sell ,"Eq1",colorBlue, styleOwnScale);

то Buy и Sell отображаются, а в тестере первого Buy нет.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Значит тестер по какой то причине проигнорировал этот сигнал. Например не хватило объема ( http://www.amisite.ru/begin/bk_set6.php ) или сигнал находится за границей области тестирования.

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



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

СообщениеДобавлено: Чт Июл 30, 2015 2:53 pm Ответить с цитатой Вернуться к началу

Спасибо за ответ.

Маленький вопрос, чтобы не создавать новую тему.

Есть код:

Код:


Short7 = Cross( indic , 100.01 );
Cover7 = Cross( 99.99 , indic );

Short = 0;
Cover = 0;

pos = 0;

   for(i = 0; i < BarCount; i++)
   {

        if(pos == 0)
        {
             if(Short7 [i])
             {
                Short[i] = 1;
                pos = 1;
             }
        }
        else if(pos == 1)                             
        {
             if(Cover7 [i])
             {
                Cover[i] = 1;
                pos = 0;
             }
        }
 
 
   }



В тестере все работает замечательно, если тестер прогоняем за весь период графика.

Но если в тестере устанавливаем From-To dates меньше периода графика, то иногда на начало меньшего периода pos = 1, т.е. есть незакрытые сделки. И в начале меньшего периода появляется Cover, т.е предыдущая сделка закрывается и затем идут текущие сделки. Как убрать незакрытые сделки на начало меньшего периода?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Добавить в код фильтр по дате. Если дата меньше чем... то сигнала нет.

Buy = ... AND DateNum() > ....;

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



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

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

Спасибо
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 207
Откуда: Новосибирск

СообщениеДобавлено: Вт Мар 28, 2017 7:36 pm Ответить с цитатой Вернуться к началу

Задам свой вопрос тут, дабы не плодить тем.

В настоящий момент в роботе стоит примерно такая конструкция по оформлению сигналов:

Код:

//Сигналы 
Buy1 = bc3 AND bc2 AND Imp1 AND trend; 
Sell1 = sc3 AND sc2; 
Short1 = sc3 AND sc2 AND Imp1 AND trend; 
Cover1 = bc3 AND bc2; 
 
Buy2 = bc8 AND !trend;
Sell2 = sc8 AND !trend;
Short2 = sc8 AND !trend;
Cover2 = bc8 AND !trend;
 
 
BuySig = (Buy1 OR Buy2) AND TM2 AND TM3; 
SellSig = (Sell1 AND trend) OR Sell2 OR TM OR (OutB AND trend); 
ShortSig = (Short1 OR Short2) AND TM2 AND TM3; 
CoverSig = (Cover1 AND trend) OR Cover2 OR TM OR (OutS AND trend);

Buy = Ref(BuySig,-1);
Sell = Ref(SellSig,-1);
Short = Ref(ShortSig,-1);
Cover = Ref(CoverSig,-1);

BuyPrice = ShortPrice = CoverPrice = SellPrice = Open;


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

Вопрос - как мне убрать лишние сигналы в данной конструкции?

Просто поставить после BuyPrice... строки:

Код:
Buy = ExRem(Buy , Sell );
Sell = ExRem(Sell , Buy );


А Шорт и Ковер надо прописать также? Если да, то как?

Или же просто поставить Equity (1,0); ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

1. Строку
BuyPrice = ShortPrice = CoverPrice = SellPrice = Open;
убрать совсем. Она в роботе не нужна.
2. Добавить
Код:
Buy = ExRem(Buy , Sell );
Sell = ExRem(Sell , Buy );
Short = ExRem(Short , Cover );
Cover = ExRem(Cover , Short );

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



Зарегистрирован: 03.05.2011
Сообщения: 207
Откуда: Новосибирск

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

000 писал(а):
1. Строку
BuyPrice = ShortPrice = CoverPrice = SellPrice = Open;
убрать совсем. Она в роботе не нужна.
2. Добавить


Благодарю.

Строку эту боюсь убирать. У разработчика она была.
Посмотреть профиль Отправить личное сообщение
Nayati



Зарегистрирован: 27.05.2016
Сообщения: 17
Откуда: Ростов-на-Дону

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

Как сделать так чтоб все сделки на усреднение при пробое канала учитывались в тесте. У меня по тесту получается будто функция ExRem включена по умолчанию, с ней или без все сделки при уже открытой позиции игнорируются тестером.Не пойму почему позиция не усредняется?
Код:

Buy=L<Ref(LLV(L,10),-1);
Short=H>Ref(HHV(H,10),-1);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Июн 07, 2018 5:20 am Ответить с цитатой Вернуться к началу

Это нормальная работа тестера. Он сам по себе усреднять не будет. Для добавления\сокращения позиций ему нужны сигналы sigscalein\sigscaleout.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen