Как правильно написать код безубытка

Автор: 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) чему равен?
Используйте отладку и вывод в лог. И не тратьте время больше на задавание вопросов smile. Все за 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

ага. вроде того smile.
Только все равно неправильно. вы ставите стоп тогда цена ушла а когда вернулась ваш стоп снимется. надо додумать smile
Автор: Fresto

Re: Как правильно написать код безубытка - Tue Oct 11 2016 12:14 AM

Когда вошел в позицию Лонг, выставил простой стоп и цену прохода 150 пунктов в нашу сторону.
Code:
var stopL = LongPos.EntryPrice - 150;
var incomeLong = LongPos.EntryPrice +150;

Если мы в позиции, то выходим по обычному стопу
Code:
LongPos.CloseAtStop(i+1,stopL, Slippage, "BBU");

Но, если цена изменился на 150 пунктов в нашу сторону, то изменяем стоп.
Code:
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");
}