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



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

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

Сигнал на покупку имеет такой вид: A > B > C, где А, В и С - функции.
Как сделать так, чтобы после взятия тейк-профита не открывалась позиция в ту же сторону до определенного момента (например до падения цены на ХХ пунктов)?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

В двух словах так.
Сначала описываем систему в общем.
Код:
Buy = A > B > C;

Потом задаем тейк
Код:
AplyStop();

Потом фильтруем сигналы и заставляем сработать стопы
Код:
Equity(1);

Далее фильтруем сигналы после взятия тейка
Код:
qqq = WalueWhen(Sell == 3, ....); // см коменты к функции Equity

Потом переписываем правила покупки с учетом фильтра
Код:
Buy = Buy AND qqq....;

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



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

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

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



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

СообщениеДобавлено: Пт Ноя 15, 2013 4:45 pm Ответить с цитатой Вернуться к началу

А каким образом можно реализовать следующее условие? После тейк профита, система не производит сделок в течении 10 баров
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Просто такого не сделать. Если надо сложно то напиши.

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



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

СообщениеДобавлено: Пн Ноя 18, 2013 11:07 am Ответить с цитатой Вернуться к началу

000 писал(а):
Просто такого не сделать. Если надо сложно то напиши.

Да, хотелось бы решить данную задачу.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Это можно двума способами.
1. Написать цикл в котором считать стоп не при помощи функции ApplyStop() чтобы точно знать момент его срабатывания и затем, после срабатывания стопа считать бары и блокировать сигналы на вход.
2. Использовать адвансед бактестер интерфейс. Я в нем не очень силен поэтому я бы стал делать первым способом.
Дай реальную задачу (только не очень сложную). Напишу пример кода.

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



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

СообщениеДобавлено: Вт Ноя 19, 2013 3:34 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Это можно двума способами.
1. Написать цикл в котором считать стоп не при помощи функции ApplyStop() чтобы точно знать момент его срабатывания и затем, после срабатывания стопа считать бары и блокировать сигналы на вход.
2. Использовать адвансед бактестер интерфейс. Я в нем не очень силен поэтому я бы стал делать первым способом.
Дай реальную задачу (только не очень сложную). Напишу пример кода.

Пробитие двух часововго хая - покупка, затем тейк профит на 0.5% или выход по двух часовому лоу. Если сработал тейк профит, сделок не должно быть в течении 5 баров.
Если не сложно Олег, напишите. Буду признателен.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Типа так
Код:

SetTradeDelays(0, 0, 0, 0);

BuyLevel = Ref(HHV(H, 8), -1); // HHV(H, 8) это 2 часовой хай на 15 минутках.
ExitLevel = Ref(LLV(L, 8), -1); // LLV(L, 8) это 2 часовой лой на 15 минутках

ProfitLevel = 0.5;


Buy = Sell = Short = Cover = 0;
pos = 0;
Count = 5; // в начале счетчик 5. Первый вход ничего не ждем
for(i = 0; i < BarCount; i++)
{
  if(pos == 0)
  {
    Count++; // счетчик баров если система не в позиции.
    if(H[i] >= BuyLevel[i] AND Count > 5)
    {
      Buy[i] = 1;
      pos = 1;
      BuyPrice[i] = BuyLevel[i]; // вход по уровню
      EntryPrice = BuyLevel[i];
    }
  }
  else
  {
    Count++;
    if(L[i] <= ExitLevel[i]) // выход
    {
      Sell[i] = 1;
      SellPrice[i] = ExitLevel[i]; // выход по уровню
      pos = 0;
    }
    else if(H[i] >= EntryPrice*(100+ProfitLevel))
    {
      Sell[i] = 1;
      SellPrice[i] = EntryPrice*(100+ProfitLevel); // выход по уровню профита
      pos = 0;
      Count = 0; // обнуляем счетчик баров
    }
  }
}

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



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

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

000 писал(а):
Типа так
Код:

SetTradeDelays(0, 0, 0, 0);

BuyLevel = Ref(HHV(H, 8), -1); // HHV(H, 8) это 2 часовой хай на 15 минутках.
ExitLevel = Ref(LLV(L, 8), -1); // LLV(L, 8) это 2 часовой лой на 15 минутках

ProfitLevel = 0.5;


Buy = Sell = Short = Cover = 0;
pos = 0;
Count = 5; // в начале счетчик 5. Первый вход ничего не ждем
for(i = 0; i < BarCount; i++)
{
  if(pos == 0)
  {
    Count++; // счетчик баров если система не в позиции.
    if(H[i] >= BuyLevel[i] AND Count > 5)
    {
      Buy[i] = 1;
      pos = 1;
      BuyPrice[i] = BuyLevel[i]; // вход по уровню
      EntryPrice = BuyLevel[i];
    }
  }
  else
  {
    Count++;
    if(L[i] <= ExitLevel[i]) // выход
    {
      Sell[i] = 1;
      SellPrice[i] = ExitLevel[i]; // выход по уровню
      pos = 0;
    }
    else if(H[i] >= EntryPrice*(100+ProfitLevel))
    {
      Sell[i] = 1;
      SellPrice[i] = EntryPrice*(100+ProfitLevel); // выход по уровню профита
      pos = 0;
      Count = 0; // обнуляем счетчик баров
    }
  }
}

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen