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



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

СообщениеДобавлено: Чт Мар 28, 2013 1:40 am Ответить с цитатой Вернуться к началу

Подскажите пожалуйста,очень нужно!!!Никак не могу организовать алгоритм.Из посторонней программы приходят сигналы в виде цифр 2-покупать, 0.2 -продавать.Торговля ведется по цене закрытия бара!!!Организовал как торговля по другому инструменту,с этим всё нормально.Но хочу чтобы включался фильтр плечей, т.е. при условии что мы торгуем по цене закрытия ниже 100 барного максимума-торговля ведется на свои(1-е плечо),а как только пробиваем 100 барный максимум плечо переключаем на 5-е.Тут что то типа пирамидинга,но чего то у меня не получается редко программирую и не могу сообразить.Тут возможны три варианта:
1) Пришел сигнал на покупку ,смотрим цена С ниже 100 барного максимума,значит входим с 1-м плечом,далее в какой то момент цена пробивает максимум и на закрытии бара мы должны добавиться до 5-го плеча,далее по сигналу на выход всё закрываем.
2)Пришел сигнал на покупку,смотрим цена С выше 100 барного максимума,значит входим с 5-м плечом и ждем сигнал на выход.
3)Пришел сигнал на покупку,смотрим цена С ниже 100 барного максимума,входим с 1-м плечом,далее цена не доходит до максимума и как обычно закрываемся по сигналу на выход.
Не пойму как тут с циклами или без них можно обойтись,во вложении приложил файл.

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


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

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

Лучше всего циклом. Вечером напишу.

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



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

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

Очень жду!!!Спасибо!

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


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

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

Вот код
Код:

SetBacktestMode( backtestRegularRawMulti );
SetOption( "CommissionMode", 3);
SetOption( "CommissionAmount", 8);

a = 100;//пробой максимума,за столько то баров
HH = Ref(HHV(C, a), -1);
CondBuy1 = Foreign( "NerosetL", "Close") >= 2 AND C < HH AND Hour()>11;//Торговля по сигалам другого инструмента+условия входа для Случая № 1
CondBuy2 = Foreign( "NerosetL", "Close") >= 2 AND C > HH AND Hour()>11;//Торговля по сигалам другого инструмента+условия входа для Случая № 2
Sell = Foreign( "NerosetL", "Close")<=0.2 ;//Закрытие всех позиций

pos = 0; // 0 - вне рынка, 1 - в рынке сайзом 1, 2 - в рынке сайзом 2
ps = 0; // размер лота

for( i = a; i < BarCount; i++ )
{
  if(pos == 0)
  {
    Sell[i] = 0;
    if(CondBuy1[i])
    {
      Buy[i] = 1;
      pos = 1;
      ps[i] = 1;
    }
    else if(CondBuy2[i])
    {
      Buy[i] = 1;
      pos = 2;
      ps[i] = 5;
    }
  }
  else if(pos == 1)
  {
    if(Sell[i])
      pos = 0;
    else if(C[i] > HH[i])
    {
      Buy[i] = 1;
      pos = 2;
      ps[i] = 4;
    }
  }
  else if(pos == 2)
  {
    if(Sell[i])
      pos = 0;
  }
}

Тут применен режим тестера backtestRegularRawMulti.
В таком режиме тестер может открывать несколько позиций по одной бумаге. Сигнал Sell закроет сразу все позиции.
Там формируется масив ps. Это типа размер позиции. Если сигнал CondBuy1, то ps == 1, если сигнал CondBuy2, то ps == 5, если сигнал добавления при пробое HHV(C, a) и уже открытой позиции, то ps == 4
Из ps сам построишь SetPositionSize();
Больше ничего делать тут не надо....

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



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

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

Олег,спасибо огромное!Буду разбираться!

_________________
Всем удачи!
Посмотреть профиль Отправить личное сообщение
bonzamen



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

СообщениеДобавлено: Сб Апр 06, 2013 4:51 pm Ответить с цитатой Вернуться к началу

Вынес себе весь мозг ,но никак не получается наладить стопы.Прикручивая штатные средства ApplyStop(для тейка и стоп-лосса) получается так что при срабатывании тейк-профита следующая сделка открывается на следующем баре(хотя сигнал приходит на текущем баре) или не открывается вовсе пока по Foreign( "NerosetL", "Close") не придет сигнал Sell ,и только на новом Buy идет открытие позиции.Пытаюсь в ручную написать в цикле тейк-профит и стоп -лосс,но чего то все очень каряво выходит,то лишние сделки всплывают,то еще не понятно что.Программист из меня никакой.Тут вот какая тонкость если сработал тейк-профит или стоп-лосс на текущем баре,а сигнал Foreign( "NerosetL", "Close") приходит на открытие позиции,то значит надо на закрытии этого бара заново входить.Олег, если не сложно гляньте плиз на досуге,что я тут наковырял.Спасибо!

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


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

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

Хм. Вроде все нормально.
А конкретно что не так работает?

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



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

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

Тут лучше глянуть на данных какие сделки проходят и как исполняются.Если не сложно конечно.При работе через Foreign( "NerosetL", "Close") 2-вход,0.2- выход и 1- ожидание.

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


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

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

Ну уж нет. Не хочу я разбираться с таблицей в которой 14000 строк.
Даже импортнув в Ами.
Давай словами. Опиши конкретный пример. Когда и что не так....

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



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

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

Это просто рабочие файлы,а так достаточно первых 10 ти сделок.Получается некоторые сделки открываются и тут же закрываются на одном баре.

_________________
Всем удачи!
Посмотреть профиль Отправить личное сообщение
bonzamen



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

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

02.03.09 в 20.00 должна быть сделка,а ее нет почему то.

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


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

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

bonzamen писал(а):
02.03.09 в 20.00 должна быть сделка,а ее нет почему то.

В настройках тестера на закладке Report переключи Result list на Detailed log и посмотри, был ли в тестере сигнал в это время.

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


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

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

bonzamen писал(а):
Это просто рабочие файлы,а так достаточно первых 10 ти сделок.Получается некоторые сделки открываются и тут же закрываются на одном баре.

Так может там реально срабатывает стоп? По правилам не должен т.к. вход на закрытии. Выключи опцию Allow same bar exit (single bar trade) в настройках.

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



Зарегистрирован: 17.08.2010
Сообщения: 50
Откуда: Созвездие Альдебаран

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

Если отключить тогда первая же сделка 18.02.2009 15:00:00-
16:00:00 закрывается по тейку,и на этом всё,а должна снова входить на закрытии 16:00:00 и до 18.02.2009 23:00:00.

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


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

СообщениеДобавлено: Вс Апр 07, 2013 12:25 am Ответить с цитатой Вернуться к началу

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

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen