Переключитесь с биржевого сервера на Форекс сервер.
А смена сервера какое отношение имеет к описанному багу? И зачем Вы советуете менять сервер? Если терминал подключен к биржевому серверу, то у человека там счёт.
Sergey Gridnev #: А смена сервера какое отношение имеет к описанному багу? И зачем Вы советуете менять сервер? Если терминал подключен к биржевому серверу, то у человека там счёт.
На форексе нет цены Last. Это такой треш наверно ))
А решение такое. Настроить все свойства отображения графика так как душе угодно, и сохранить его в шаблон как default.tpl
В некоторых случаях (так и не выявил закономерности) при компиляции кода с неиспользуемой объявленной переменнойMetaEditor5 не предупреждает о неиспользовании.
Сегодня столкнулся ещё с двумя непонятными для меня моментами, но уже в коде взятом целиком и полностью из справочника MQL5. В этот раз сам ничего не писал, а только взял готовый пример.
Открываю Справочник MQL5 / Константы, перечисления и структуры / Структуры данных / Структура торгового запроса. Там нахожу:
Структура торгового запроса
Modify Pending Order
Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:
action
order
price
sl
tp
type_time
expiration
Пример торговой операции TRADE_ACTION_MODIFY для модификации уровней цен отложенного ордера:
Это понятно. И далее идёт пример с таким вот кодом:
#define EXPERT_MAGIC 123456// MagicNumber эксперта//+------------------------------------------------------------------+//| Модификация отложенных ордеров |//+------------------------------------------------------------------+voidOnStart()
{
//-- объявление и инициализация запроса и результатаMqlTradeRequest request={};
MqlTradeResult result={};
int total=OrdersTotal(); // количество установленных отложенных ордеров//--- перебор всех установленных отложенных ордеровfor(int i=0; i<total; i++)
{
//--- параметры ордераulong order_ticket=OrderGetTicket(i); // тикет ордераstring order_symbol=Symbol(); // символint digits=(int)SymbolInfoInteger(order_symbol,SYMBOL_DIGITS); // количество знаков после запятойulong magic=OrderGetInteger(ORDER_MAGIC); // MagicNumber ордераdouble volume=OrderGetDouble(ORDER_VOLUME_CURRENT); // текущий объем ордераdouble sl=OrderGetDouble(ORDER_SL); // текущий Stop Loss ордераdouble tp=OrderGetDouble(ORDER_TP); // текущий Take Profit ордераENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); // тип ордераint offset = 50; // отступ от текущей цены для установки ордера, в пунктахdouble price; // цена срабатывания ордераdouble point=SymbolInfoDouble(order_symbol,SYMBOL_POINT); // размер пункта//--- вывод информации об ордереPrintFormat("#%I64u %s %s %.2f %s sl: %s tp: %s [%I64d]",
order_ticket,
order_symbol,
EnumToString(type),
volume,
DoubleToString(PositionGetDouble(POSITION_PRICE_OPEN),digits),DoubleToString(sl,digits),
DoubleToString(tp,digits),
magic);
//--- если MagicNumber совпадает, Stop Loss и Take Profit не заданыif(magic==EXPERT_MAGIC && sl==0 && tp==0)
{
request.action=TRADE_ACTION_MODIFY; // тип торговой операции
request.order = OrderGetTicket(i); // тикет ордера
request.symbol =Symbol(); // символ
request.deviation=5; // допустимое отклонение от цены//--- установка уровня цены, тейк-профит и стоп-лосс ордера в зависимости от его типаif(type==ORDER_TYPE_BUY_LIMIT)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;
request.tp = NormalizeDouble(price+offset*point,digits);
request.sl = NormalizeDouble(price-offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_SELL_LIMIT)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_BID)+offset*point;
request.tp = NormalizeDouble(price-offset*point,digits);
request.sl = NormalizeDouble(price+offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_BUY_STOP)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point;
request.tp = NormalizeDouble(price+offset*point,digits);
request.sl = NormalizeDouble(price-offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_SELL_STOP)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_BID)-offset*point;
request.tp = NormalizeDouble(price-offset*point,digits);
request.sl = NormalizeDouble(price+offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
//--- отправка запросаif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки//--- информация об операции PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
//--- обнуление значений запроса и результатаZeroMemory(request);
ZeroMemory(result);
}
}
}
//+------------------------------------------------------------------+
Пытаюсь понять строчку, которая выделена желтым цветом. Сразу возник вопрос - причём здесьPositionGetDouble(POSITION_PRICE_OPEN), если пример связан с отложенными ордерами? Может здесь должна быть вот такая строчка:
Это первый момент. Второй момент появился, когда попытался запустить этот скрипт на графике с установленным мною отложенным ордером BUY_STOP (хотя всё тоже самое происходит и с другими типами отложенных ордеров). И что же происходит? А ничего не происходит! Никакой модификации отложенного ордера не наблюдаю. Может чего-то не понимаю?
Переключитесь с биржевого сервера на Форекс сервер.
А смена сервера какое отношение имеет к описанному багу? И зачем Вы советуете менять сервер? Если терминал подключен к биржевому серверу, то у человека там счёт.
На форексе нет цены Last.
А решение такое.Это такой треш наверно ))
Настроить все свойства отображения графика так как душе угодно, и сохранить его в шаблон как default.tpl
Добрый день
Подскажите пожалуйста как сделать чтобы за один раз добавлялась только одна еденица, а не десятки
CMax1 и CMin1, это что за переменные? Какой у них тип?
На форексе нет цены Last.
А решение такое.Это такой треш наверно ))
Настроить все свойства отображения графика так как душе угодно, и сохранить его в шаблон как default.tpl
это как сделать?
Вообще не понимаю зачем эта линия последней цены была добавлена, в практическом смысле толка нет.
это как сделать?
ПКМ на графике -> Шаблоны -> Сохранить шаблон
Имя файла: default.tpl
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
MrBrooklin, 2022.02.25 07:15
Доброе утро, уважаемые эксперты!
Сегодня столкнулся ещё с двумя непонятными для меня моментами, но уже в коде взятом целиком и полностью из справочника MQL5. В этот раз сам ничего не писал, а только взял готовый пример.
Открываю Справочник MQL5 / Константы, перечисления и структуры / Структуры данных / Структура торгового запроса. Там нахожу:
Структура торгового запросаЭто понятно. И далее идёт пример с таким вот кодом:
Пытаюсь понять строчку, которая выделена желтым цветом. Сразу возник вопрос - причём здесь PositionGetDouble(POSITION_PRICE_OPEN), если пример связан с отложенными ордерами? Может здесь должна быть вот такая строчка:
Во вкладке эксперты нахожу только вот это: Уважаемые эксперты помогите разобраться с данным примером, почему он находится в справочнике, но при этом его код не работает?
С уважением, Владимир.
Добрый день. Подскажите как вывести депозит на карту?
Это сайт разработчика торговой платформы. Это не брокер, не ДЦ, нет реальных торговых счетов.
Внизу страницы об этом явно написано:
Задавайте, пожалуйста, такие вопросы у Вашего брокера - кому Вы деньги перечисляли на свой торговый счёт.
Добрый день. Подскажите как вывести депозит на карту?