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



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

СообщениеДобавлено: Вс Дек 25, 2011 9:29 am Ответить с цитатой Вернуться к началу

Подскажите. Есть система с закрытием в конце дня. Но если после входа в сделку цена доходит до уровня безубытка, то стоп надо передвинуть на цену входа +- 30. Вроде бы все работает, но выход по безубытку происходит по цене закрытия свечи на которой происходит выход +- 50 пунктов, а мне нужен выход по цене входа в позицию +-30 пунктов......

Подскажите где у меня ошибка?



InDay = TimeNum()>=100500 AND TimeNum()<153500;//время открытия новых позиций
EndDay = TimeNum()==234500;
Kr=......;//коэффициент риска
Kbu=.....;//коэффициент безубытка
Ubu=BuyPrice+Kbu;//уровень безубытка


ApplyStop (stopTypeLoss,stopModePoint,.....,ExitAtStop = 1);//стоп-лосс


Cond1 = .....;// условия покупки
Cond2 = .....;// условия покупки
BuySignal = Cond1 AND Cond2 AND InDay;
BuyPrice = Close+50;
SellSignal = EndDay;
SellPrice = Close-50;

Cond3 = ......;// условия продажи
Cond4 = ......;
ShortSignal = Cond3 AND Cond4 AND InDay;
ShortPrice = Close-50;
CoverSignal = EndDay;
CoverPrice = Close+50;

Buy = BuySignal;
Sell = SellSignal;
Short = ShortSignal;
Cover = CoverSignal;

position = 0;
Stop=Kr*.....;


for(i = 1; i < BarCount; i++)
{
if(position == 0)
{
if(BuySignal[i]) // проверка условия для лонга
{
Buy[i] = 1; // покупка
position = 1; // длинная позиция
PriceBuy = BuyPrice[i]; // цена покупки
PriceStop = PriceBuy - Stop; // первоначальный стоп лонга
}
else if(ShortSignal[i]) // проверка условия для шорта
{
Short[i] = 1; // продажа
position = -1; // короткая позиция
PriceShort = ShortPrice[i]; // цена шорта
PriceStop = PriceShort + Stop; // первоначальный стоп шорта
}

}
else if(position == 1) // в противном случае, если лонг
{
if(SellSignal[i]) // условия закрытия лонга
{
Sell[i] = 1; // закрытие лонга
position = 0; // система не в позиции
}
if(H[i] > PriceBuy + Ubu[i]) // проверка достижения уровня безубытка
{
PriceStop = PriceBuy + 30;// перенос стопа в безубыток
}
if(L[i] < PriceStop[i]) // проверка срабатывания стопа
{
Sell[i] = 1; // закрытие лонга
position = 0;
}
}
else if(position == -1) // в противном случае если шорт
{
if(CoverSignal[i]) // условия закрытия шорта
{
Cover[i] = 1; // закрытие шорта
position = 0; // система не в позиции
}
if(L[i] < PriceShort - Ubu[i]) // проверка достижения уровня безубытка
{
PriceStop = PriceShort - 30;// перенос стопа в безубыток

}
if(H[i] > PriceStop[i]) // срабатывание стопа при шорте
{
Cover[i] =1; //закрытие шорта
position = 0;
}
}
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вс Дек 25, 2011 9:52 am Ответить с цитатой Вернуться к началу

Ну у тебя прописан выход по Sell - SellPrice = Close-50; в любом случае, а тебе надо при выходе по стопу прописать другую цену выхода.

SellPrice[i] = PriceBuy + 30;

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



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

СообщениеДобавлено: Вт Дек 27, 2011 11:56 pm Ответить с цитатой Вернуться к началу

Доброго времени суток,подскажите пожалуйста как реализовать простое условие закрытия позиции с фиксированным размером прибыли\убытка без использования функции ApplyStop.
Не смог найти сразу в АФЛ оператор (а есть такой?) который запоминает значение entry_price.
Пример:
ShortPrice=C;
ShortSignal=Cond1
Short=ShortSignal
Cond2=entry_price+0.002;
Cond3=entry_price-0.0002;
CoverPrice=C;
Cover=Cond3 OR Cond3;

И до кучки еще вопрос, как работает оператор Ref, можно ли условие "в последних 5 барах минимум 3 комбинации баров у которых закрытие текущего бара больше предыдущего" записать так :
SUM(C>Ref(C,-1),5)>=3
Сильно не ругайте, только начал разбираться с платформой Embarassed


Последний раз редактировалось: norvik (Ср Дек 28, 2011 12:09 am), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Дек 28, 2011 12:06 am Ответить с цитатой Вернуться к началу

Нет оператора который запоминает цену входа в позицию.
В принципе можно взять "значение когда" (ValueWhen) был последний сигнал Buy, но не факт, что вход был именно по последнему сигналу.
Поэтому в цикле.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen