Ну, ссылку вставил правильно. Теперь саму функцию покажи.
//+------------------------------------------------------------------+
//| ТРЕЙЛИНГ СТАНДАРТНЫЙ-СТУПЕНЧАСТЫЙ |
//| Функции передаётся тикет позиции, расстояние от курса открытия, |
//| на котором трейлинг запускается (пунктов) и "шаг", с которым он |
//| переносится (пунктов) |
//| Пример: при +30 стоп на +10, при +40 - стоп на +20 и т.д. |
//+------------------------------------------------------------------+
void TrailingStairs(int ticket,int trldistance,int trlstep)
{
double nextstair; // ближайшее значение курса, при котором будем менять стоплосс
// проверяем переданные значения
if ((trldistance<MarketInfo(Symbol(),MODE_STOPLEVEL)) || (trlstep<1) || (trldistance<trlstep) || (ticket==0) || (!OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)))
{
Print("Трейлинг функцией TrailingStairs() невозможен из-за некорректности значений переданных ей аргументов.");
return(0);
}
// если длинная позиция (OP_BUY)
if (OrderType()==OP_BUY)
{
// расчитываем, при каком значении курса следует скорректировать стоплосс
// если стоплосс ниже открытия или равен 0 (не выставлен), то ближайший уровень = курс открытия + trldistance + спрэд
if ((OrderStopLoss()==0) || (OrderStopLoss()<OrderOpenPrice()))
nextstair = OrderOpenPrice() + trldistance*Point;
// иначе ближайший уровень = текущий стоплосс + trldistance + trlstep + спрэд
else
nextstair = OrderStopLoss() + trldistance*Point;
// если текущий курс (Bid) >= nextstair и новый стоплосс точно лучше текущего, корректируем последний
if (Bid>=nextstair)
{
if ((OrderStopLoss()==0) || (OrderStopLoss()<OrderOpenPrice()) && (OrderOpenPrice() + trlstep*Point<Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
{
if (!OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice() + trlstep*Point,OrderTakeProfit(),OrderExpiration()))
Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
}
}
else
{
if (!OrderModify(ticket,OrderOpenPrice(),OrderStopLoss() + trlstep*Point,OrderTakeProfit(),OrderExpiration()))
Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
}
}
// если короткая позиция (OP_SELL)
if (OrderType()==OP_SELL)
{
// расчитываем, при каком значении курса следует скорректировать стоплосс
// если стоплосс ниже открытия или равен 0 (не выставлен), то ближайший уровень = курс открытия + trldistance + спрэд
if ((OrderStopLoss()==0) || (OrderStopLoss()>OrderOpenPrice()))
nextstair = OrderOpenPrice() - (trldistance + MarketInfo(Symbol(),MODE_SPREAD))*Point;
// иначе ближайший уровень = текущий стоплосс + trldistance + trlstep + спрэд
else
nextstair = OrderStopLoss() - (trldistance + MarketInfo(Symbol(),MODE_SPREAD))*Point;
// если текущий курс (Аск) >= nextstair и новый стоплосс точно лучше текущего, корректируем последний
if (Ask<=nextstair)
{
if ((OrderStopLoss()==0) || (OrderStopLoss()>OrderOpenPrice()) && (OrderOpenPrice() - (trlstep + MarketInfo(Symbol(),MODE_SPREAD))*Point>Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point))
{
if (!OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice() - (trlstep + MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
}
}
else
{
if (!OrderModify(ticket,OrderOpenPrice(),OrderStopLoss()- (trlstep + MarketInfo(Symbol(),MODE_SPREAD))*Point,OrderTakeProfit(),OrderExpiration()))
Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
}
}
}
Откуда ты знаешь, что тикет у ордера 123?
я почему то думал что тикет это маджик??? не так??
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ЛЮДИ ПОМОГИТЕ С ТРЕЙЛИНГОМ КАК ЕГО ФУНКЦИЮ В СТАРТ ПРАВИЛНО ВСТАВИТЬ ??
int start()
{
LotsSize();
if(OrdersTotal()<1&&isTradeTimeString("00:00","00:00"))
{
sliotk();
OrderSend(Symbol(),OP_SELLSTOP,Lots,OTKS,20,SLS+100*Point,OTKS-2*TPS,NULL,123,0,Red);
OrderSend(Symbol(),OP_BUYSTOP,Lots,OTKB,20,SLB-100*Point,OTKB+2*TPB,NULL,123,0,Green);
}
TrailingStairs(123,30,30);
if(OrdersTotal()==1)
{
TradeCloseAll();
}
if(isTradeTimeString("22:00","22:30"))
{
TradeCloseAll();
}
return(0);
}
ПЫТАЮСЬ КАК ТО ТАК НО НЕЧЕГО НЕ ВЫХОДИТ НЕ ТРЕЙЛИТ(