Здравствуйте. Только начал делать роботов на mql5, перешел с TsLab'a. Видел на сайтах подобный вопрос, но всё равно туплю в этом. Можете пожалуйста в несколько строчек написать простой перенос стопа.
Вот, как у меня получилось, но неправильно.
Глубоко не анализировал, т. к. в глаза бросились вот эти строки:
и
Результат для символов типа EURUSD, GBPUSD и т. д. будет либо отрицательный, либо за пределами цен где-то вверху. К примеру, цена EURUSD сейчас 1.06213. Отнимая 5, получим -3,93787. Чтобы такого не cлучалось, нужно приводить пункты к ценовой категории, т. е.:
Глубоко не анализировал, т. к. в глаза бросились вот эти строки:
и
Результат для символов типа EURUSD, GBPUSD и т. д. будет либо отрицательный, либо за пределами цен где-то вверху. К примеру, цена EURUSD сейчас 1.06213. Отнимая 5, получим -3,93787. Чтобы такого не cлучалось, нужно приводить пункты к ценовой категории, т. е.:
Я вас понял, нужно умножать на шаг цены. Спасибо. А как именно изменить позицию? Например у меня открыта позиция на BUY. У позиции есть SL. Kaк его можно изменить на новом тике? В интернете слишком много текста по этому поводу и мало понятно.
Проще всего через СБ.
CTrade trade;
//trade.PositionModify(const string symbol,const double sl,const double tp); // подставить нужное
// или через тикет trade.PositionModify(const ulong ticket,const double sl,const double tp);
**
Проще всего через СБ.
CTrade trade;
//trade.PositionModify(const string symbol,const double sl,const double tp); // подставить нужное
// или через тикет trade.PositionModify(const ulong ticket,const double sl,const double tp);
**
Спасибо, я пробовал через данную функцию, но если мне не нужно выставлять tp, я просто пишу заместо него 0?
Если выставляете в первый раз уровень Take Profit (например открываете позицию) - то можно записать вместо tp^
- "0.0" - то есть Take Proft'a нет
- свой уровень - то есть Take Profit будет задан
Если Вы модифицируете позиции и у позиции УЖЕ ЕСТЬ Take Profit, то чтобы сохранить этот уровень, Вы должны его явно прописать заново.
Если выставляете в первый раз уровень Take Profit (например открываете позицию) - то можно записать вместо tp^
- "0.0" - то есть Take Proft'a нет
- свой уровень - то есть Take Profit будет задан
Если Вы модифицируете позиции и у позиции УЖЕ ЕСТЬ Take Profit, то чтобы сохранить этот уровень, Вы должны его явно прописать заново.
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Только начал делать роботов на mql5, перешел с TsLab'a. Видел на сайтах подобный вопрос, но всё равно туплю в этом. Можете пожалуйста в несколько строчек написать простой перенос стопа.
Вот, как у меня получилось, но неправильно.
{
if(mrate[0].close > mrate[0].open)
{
sl = PositionGetDouble(POSITION_SL) + 15;
mrequest.sl=sl;
OrderSend(mrequest,mresult);
if(mresult.retcode==10009 || mresult.retcode==10008) // запрос выполнен или ордер успешно помещен
{
Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
else
{
sl = PositionGetDouble(POSITION_SL) - 5;
mrequest.sl=sl;
OrderSend(mrequest,mresult);
if(mresult.retcode==10009 || mresult.retcode==10008) // запрос выполнен или ордер успешно помещен
{
Alert("Ордер Sell успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
return;
}
}
}