Автор |
Сообщение |
Renown
Зарегистрирован: 14.10.2009
Сообщения: 38
|
Сигнал на покупку имеет такой вид: A > B > C, где А, В и С - функции.
Как сделать так, чтобы после взятия тейк-профита не открывалась позиция в ту же сторону до определенного момента (например до падения цены на ХХ пунктов)? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В двух словах так.
Сначала описываем систему в общем.
Потом задаем тейк
Потом фильтруем сигналы и заставляем сработать стопы
Далее фильтруем сигналы после взятия тейка
Код: |
qqq = WalueWhen(Sell == 3, ....); // см коменты к функции Equity |
Потом переписываем правила покупки с учетом фильтра
Код: |
Buy = Buy AND qqq....; |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Renown
Зарегистрирован: 14.10.2009
Сообщения: 38
|
Спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
RFK
Зарегистрирован: 07.03.2012
Сообщения: 25
|
А каким образом можно реализовать следующее условие? После тейк профита, система не производит сделок в течении 10 баров |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Просто такого не сделать. Если надо сложно то напиши. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
RFK
Зарегистрирован: 07.03.2012
Сообщения: 25
|
000 писал(а): |
Просто такого не сделать. Если надо сложно то напиши. |
Да, хотелось бы решить данную задачу. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это можно двума способами.
1. Написать цикл в котором считать стоп не при помощи функции ApplyStop() чтобы точно знать момент его срабатывания и затем, после срабатывания стопа считать бары и блокировать сигналы на вход.
2. Использовать адвансед бактестер интерфейс. Я в нем не очень силен поэтому я бы стал делать первым способом.
Дай реальную задачу (только не очень сложную). Напишу пример кода. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
RFK
Зарегистрирован: 07.03.2012
Сообщения: 25
|
000 писал(а): |
Это можно двума способами.
1. Написать цикл в котором считать стоп не при помощи функции ApplyStop() чтобы точно знать момент его срабатывания и затем, после срабатывания стопа считать бары и блокировать сигналы на вход.
2. Использовать адвансед бактестер интерфейс. Я в нем не очень силен поэтому я бы стал делать первым способом.
Дай реальную задачу (только не очень сложную). Напишу пример кода. |
Пробитие двух часововго хая - покупка, затем тейк профит на 0.5% или выход по двух часовому лоу. Если сработал тейк профит, сделок не должно быть в течении 5 баров.
Если не сложно Олег, напишите. Буду признателен. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Типа так
Код: |
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
|
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; // обнуляем счетчик баров
}
}
}
|
|
Спасибо Вам. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|