Автор |
Сообщение |
pitero
Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург
|
Хочу сдвинуть стоп в 0 в случае если лоу бара стал выше чем мне нужно.
пытаюсь так
OtstupP=50; // 50п отступа при выставлении заявок
StopLoss = 1000;
// определяем цены последней сделки
LastBuyPrice=IIf(BarsSince(Buy)<BarsSince(Short),ValueWhen(Buy,BuyPrice),0);
// ставим стоп, сначала -1000 пунктов, как только мин цена стала выше
// цены входа - ставим на уровне входа.
stopBprice=IIf(LastBuyPrice<L-OtstupP,
L-OtstupP,
LastBuyPrice-StopLoss-OtstupP
);
Все работает, но на каждом баре цена стопа меняется и дальше, то в большую сторону, то в меньшую, в зависимости от текущего low.
Как "зафиксировать" стоп после того, как он был первый раз изменен (а может и не первый, несколько раз подтягивать его) и больше не менять его ни в большую ни в меньшую стоимость?
Голову сломал. цикл написать не могу |
|
|
Посмотреть профиль Отправить личное сообщение |
|
ID
Советник
Зарегистрирован: 07.01.2008
Сообщения: 370
|
Я с этой проблемой сталкивался. Написал.
Вот код погляди, может поможет |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Romoti
Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург
|
Вот без циклов вариант (для Forex) ,
всю голову сломал, пока не понял одну специфику функции ApplyStop : если сделать уровень стопа равным нулю, т.е. пытаться выйти точно по цене входа, она не меняется, т.е. если первоначально был установлен стоп в 100 п. а потом его менять на 0, то все равно выходит при падении до 100 п. надо чтобы новое значение стопа, передаваемое в ApplyStop было хотя бы 1 п.
Код: |
SetBarsRequired(100000,0); // Устанавливает число предыдущих и будущих баров необходимых для правильного выполнения скрипта/DLL.
SetTradeDelays(1, 0, 0, 0); // Задержка торгов. Если задержка = 0, то сделки лучше совершать по закрытиям, иначе есть риск заглядывания вперед.
SetOption("InitialEquity", 100); // Начальное значение капитала
SetOption("AllowPositionShrinking",0); // Вкл (1) выкл (0)возможность открытия позиции, если денег не хватает
SetOption("AllowSameBarExit", 0); // Вкл (1) выкл (0) возможность выхода на баре входа, Если сделка совершается по закрытиям, то выход на том же баре где был вход надо запретить. Т.к. Мы зашли в рынок в момент окончания бара и никакой другой сделки на нем больше быть не может
SetOption("ActivateStopsImmediately", 0);// Вкл (1) выкл (0) активацию стопа на баре входа.
SetOption("FuturesMode", 1); // Вкл (1) выкл (0) режим "Тестирование фьючерсов. Режим тестирования Forex =1.
SetOption("PriceBoundChecking",0); // Вкл (1) выкл (0) проверку соответствия bp/sp/shp/cp диапазону h-l
RoundLotSize = 1;
MarginDeposit = 1;
PositionSize = 1;
otstup = Param( "Otstyp " , 0.0100, 0.0010, 0.0500, 0.0010 ); //задаем пункты для "Otstyp "
StopLos = Param( "Stop-loss" , 0.0100, 0.0010, 0.0500, 0.0010 ); //задаем пункты для Stop-loss начальный
Buy = Cross ( MACD(), Signal() );
BuyPrice = O + 0.0003;
Sell = Cross (Signal(), MACD() );
SellPrice= Ref(O,1);
//определяем точку входа =========================================================================================================================
FlipBuy = Ref(Flip(Buy, Sell),-1) ; // определяем непрерывный BUY-массив тригером //
SinceBuy = IIf(FlipBuy, BarsSince(Buy) , 0); // определяет сколько баров назад ,был Buy-сигнал
BuyStart = IIf(FlipBuy, ValueWhen(Ref(Buy,-1), BuyPrice) , Null); // присваиваем переменной значение: BuyPrice бара покупки
//пододвигаем стоп-лосс если цена ушла дальше точки входа в сделку================================================================================
BuySdvig = IIf(BuyStart < L-otstup,1 ,0);
BuySdvig = HHV(BuySdvig , SinceBuy);
BuySdvig = IIf(FlipBuy,BuySdvig , Null);
StopLos = IIf(BuySdvig==1, 0.0001 , StopLos);
// //
BuyStopLine = IIf (FlipBuy , IIf(BuySdvig ,BuyStart,BuyStart - StopLos), Null); // определяем уровни для отрисовки линии //
ApplyStop(stopTypeLoss , stopModePoint, StopLos , 1, volatile = True, ReEntryDelay = 0); // стоп в пунктах
Short = Cover = 0 ;
Equity(1); // вычислит и отфильтрует остановки
//титры===========================================================================================================================================
Title = "MACD(на Forex) + стопы в ноль при росте Low цены \n"+ //
Name() + " " + Interval()/60 + " мин. " + Date()+"\n\n"+
"StopLos: "+StopLos+"\n\n"+
// //
"High: "+H+"\n"+ //
"Low: "+L+"\n\n"+ //
"Open: "+O+"\n"+ //
"Close: "+C; //
//===============================================================================================================================================
///////////// Рисуем всякое ///////////////////////////////////
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("cтиль =", defaultval = styleBar, mask = maskPrice ) ); // рисуем прайс
Plot( MACD(), "MACD()", colorRed , styleLeftAxisScale);
Plot( Signal(), "Signal()", colorBlue , styleLeftAxisScale);
Plot( BuyStopLine , "BuyStopLine ", colorGreen,styleDots);
PlotShapes(IIf(Buy,shapeUpArrow,shapeNone),colorGreen,0,L,-12);
PlotShapes(IIf(Sell,shapeDownArrow,shapeNone),colorRed,0,H,-29);
PlotShapes(IIf(Short, shapeHollowDownArrow,shapeNone),colorRed,0,H,-12);
PlotShapes(IIf(Cover,shapeHollowUpArrow,shapeNone),colorGreen,0,L,-29); |
|
_________________ Romoti. |
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|