Автор: vyudin77
Как правильно написать код безубытка - Sun Oct 09 2016 09:17 AM
Подскажите пожалуйста в чем ошибка?
Наверно неправильно написанно в чем ошибка не пойму
для шорта срабатывает на открытии следующего бара, для лонга вообще не срабатывает
//Безубыток шорт
var incomeShort = shortPos.EntryPrice * 0.985;
var buShort = shortPos.OpenProfit(i) > incomeShort ? shortPos.EntryPrice * 0.9995 : 0;
shortPos.CloseAtStop(i + 1, buShort, Slippage, "SBU");
//Безубыток лонг
var incomeLong = longPos.EntryPrice * 1.0015;
var buLong = longPos.OpenProfit(i) > incomeLong ? longPos.EntryPrice * 1.0005 : 0;
longPos.CloseAtStop(i + 1, buLong, Slippage, "BBU");
Автор: ra81
Re: Как правильно написать код безубытка - Mon Oct 10 2016 09:43 AM
выводите ваши incomeLong и шорт в окно лога и смотрите что вы насчитали.
Автор: vyudin77
Re: Как правильно написать код безубытка - Mon Oct 10 2016 02:03 PM
Для РТС получается примерно 150 пунктов
//Безубыток лонг
var incomeLong = longPos.EntryPrice + 150;
var buLong = longPos.OpenProfit(i) > incomeLong ? longPos.EntryPrice + 50 : 0;
longPos.CloseAtStop(i + 1, buLong, Slippage, "BBU");
Даже если так написать все равно не работает
Автор: ra81
Re: Как правильно написать код безубытка - Mon Oct 10 2016 04:05 PM
вы все еще не сделали вывод в лог.
longPos.OpenProfit(i) чему равен?
Используйте отладку и вывод в лог. И не тратьте время больше на задавание вопросов
. Все за 5 минут будете решать.
Автор: vyudin77
Re: Как правильно написать код безубытка - Mon Oct 10 2016 06:14 PM
Да, Вы как всегда правы, так проще и понятнее (с выводом в лог)
Так работает!!!
//Безубыток лонг
var incomeLong = longPos.EntryPrice + 150;
if(high[i] > incomeLong)
longPos.CloseAtStop(i + 1, longPos.EntryPrice + 50, Slippage, "BBU");
Спасибо!
Автор: ra81
Re: Как правильно написать код безубытка - Mon Oct 10 2016 11:11 PM
ага. вроде того
.
Только все равно неправильно. вы ставите стоп тогда цена ушла а когда вернулась ваш стоп снимется. надо додумать
Автор: Fresto
Re: Как правильно написать код безубытка - Tue Oct 11 2016 12:14 AM
Когда вошел в позицию Лонг, выставил простой стоп и цену прохода 150 пунктов в нашу сторону.
var stopL = LongPos.EntryPrice - 150;
var incomeLong = LongPos.EntryPrice +150;
Если мы в позиции, то выходим по обычному стопу
LongPos.CloseAtStop(i+1,stopL, Slippage, "BBU");
Но, если цена изменился на 150 пунктов в нашу сторону, то изменяем стоп.
if(high[i] > incomeLone)
stopL = LongPos.EntryPrice + 50;
Автор: vyudin77
Re: Как правильно написать код безубытка - Wed Oct 12 2016 08:17 AM
Так тоже не всегда срабатывает.
Работает вот так
// расчитаем уровень, пересечение которого ценой трактуется как сигнал на смещение стопа в безубыток var stopMovePrice = longPos.EntryPrice + Income;
// если мы ушли выше уровня, или в прошлом пересекали уровень, тогда ставим безубыток.
if (high[i] > stopMovePrice || stopMoveFlagL)
{
stopMoveFlagL = true; // не забываем активировать флаг передвижки стопа!
var stop = longPos.EntryPrice + BU;
longPos.CloseAtStop(i + 1, stop, Slippage, "BS");
}
// иначе ставим простой стоп лосс
else
{
var stop = longPos.EntryPrice - StopSL;
longPos.CloseAtStop(i + 1, stop, Slippage, "BS");
}