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



Зарегистрирован: 09.06.2008
Сообщения: 65
Откуда: Екатеринбург

СообщениеДобавлено: Пт Июл 04, 2008 12:04 pm Ответить с цитатой Вернуться к началу

Хочу сдвинуть стоп в 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.
Как "зафиксировать" стоп после того, как он был первый раз изменен (а может и не первый, несколько раз подтягивать его) и больше не менять его ни в большую ни в меньшую стоимость?
Голову сломал. цикл написать не могу Sad
Посмотреть профиль Отправить личное сообщение
ID
Советник


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

СообщениеДобавлено: Пн Июл 07, 2008 5:56 pm Ответить с цитатой Вернуться к началу

Я с этой проблемой сталкивался. Написал.
Вот код погляди, может поможет
Посмотреть профиль Отправить личное сообщение
Romoti



Зарегистрирован: 07.06.2008
Сообщения: 17
Откуда: Екатеринбург

СообщениеДобавлено: Пт Июл 11, 2008 10:02 pm Ответить с цитатой Вернуться к началу

Вот без циклов вариант (для 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.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen