Ответить
24.03.2010, 18:54
Аватар для Peter_F
Peter_F Peter_F вне форума Активный участник
Регистрация: 13.04.2009 / Адрес: Санкт-Петербург / Сообщений: 87
Поблагодарили 3 раз(а) / Репутация: 3

По умолчанию Трейлинг позиции

В советник встроена функция, которая изменяет ордер на сервере брокера.
Но иногда значение stop level превышает величину самого трейлинг стопа.

Для этого нужно добавить функцию отслеживание стоп-лосса самим экспертнымм советником.

Вот функция трейлинг стопа:
Цитата:
void CheckForExit()
{
double StopLoss;
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES) ;
if (OrderType() == OP_BUY)
{
StopLoss = Bid - Point * TrailingStop;
if (OrderStopLoss() < StopLoss &&
OrderOpenPrice() < Bid + TrailingStop * Point)
ModifySL(StopLoss, OrderTicket()); //другая функция
}
else // OP_SELL
{
StopLoss = Ask + Point * TrailingStop;
if (OrderStopLoss() > StopLoss &&
OrderOpenPrice() > Ask - TrailingStop * Point)
ModifySL(StopLoss, OrderTicket());
}
}
}
Если внутренний трейлинг позиции производить следующим кодом:
Цитата:
double LongStop=0.0;
double ShortStop=0.0;

void CheckForExit()
{
double StopLoss;
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS,MODE_TRADES) ;

if (OrderType() == OP_BUY)
{
if (Bid<=Long_stop)

bool Order_close=OrderClose(OrderTicket(),OrderLots(),B id,1000,CLR_NONE);
else

{
StopLoss=Bid-Point*TrailingStop;
if (OrderStopLoss()<StopLoss &&
OrderOpenPrice()<Bid+TrailingStop*Point)
LongStop=StopLoss;
}

else //OP_SELL
{
if (ShortStop>0 &&
Ask>=ShortStop)
Order_close =OrderClose(OrderTicket(),OrderLots(),Ask,1000,CLR _NONE);
else
{
StopLoss= Ask + Point * TrailingStop;
if (OrderStopLoss() > StopLoss &&
OrderOpenPrice() > Ask - TrailingStop * Point)
ShortStop=StopLoss;
}
}
}
// Обнуление внутренних стопов при открытии нового ордера
if (условие)
ShortStop=0.0;
OrderSend(OP_SELL ...

if (условие)
LongStop=0.0;
OrderSend(OP_BUY...
то результаты на тестере стратегий различаются. При этом в обоих случаях:
TrailingStop=70;
STOP_LEVEL=50
Spread=20;

Подскажите, пожалуйста, как переписать первую функцию для использования внутреннего трейлинг-стопа (трейлинга самим экспертом)?

Заранее огромное спасибо!
25.03.2010, 04:58
Аватар для supervisor
supervisor supervisor вне форума Супер-модератор
Регистрация: 07.08.2008 / Сообщений: 903
Поблагодарили 192 раз(а) / Репутация: 318
я трейлинг делал по следующему алгоритму:

ищу необходимый ордер для трелинга по его номеру
беру его цену стоплосса
далее условие - если цена стоплосс + количество пипс >= текущая цена - то модифицируем у ордера цену стоплосса


вот так примерно, но надо корректировать алгоритм в зависимости от того что нужно
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Трейлинг стоп Димa Торговые терминалы 7 09.10.2012 10:12


Текущее время: 14:40. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO