"Как расписать этот момент?" - там где указан лот 0,01 надо высчитать минимальный имеющийся.
Это я вижу. Если сделать 0.02 то будет выбирать ордера с лотом 0.02. Я и спрашиваю как сделать чтобы смотрел сначала на 0.01, затем на 0.02 и так далее
Sergey Gridnev #: 2 цикла надо: в первом узнаёте минимальный объем, во втором - закрываете. И учтите, что при закрытии ордера смещаются на 1 позицию, поэтому надо делать цикл от максимальной позиции к 0.
Это я вижу. Если сделать 0.02 то будет выбирать ордера с лотом 0.02. Я и спрашиваю как сделать чтобы смотрел сначала на 0.01, затем на 0.02 и так далее
Соберите в двумерный массив, в первом измерении лоты, во втором тикеты. Отсортируйте массив, и закрывайте пока в первом измерении минимальный лот. Или если надо закрыть все, но по мере возрастания лота, закрывайте до конца…
Sergey Gridnev #: 2 цикла надо: в первом узнаёте минимальный объем, во втором - закрываете. И учтите, что при закрытии ордера смещаются на 1 позицию, поэтому надо делать цикл от максимальной позиции к 0.
Помогите разобраться с одним моментом. Пишу начало функции и решил проверить часть её кода скриптом:
//+------------------------------------------------------------------+//| 3.mq5 |//| Copyright 2021, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2021, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
/* Создадим запрос на сервер и получим ответ с результатом */MqlTradeRequest request= {};
MqlTradeResult result= {0};
/* запустим цикл для перебора всех установленных отложенных ордеров */for(int i=OrdersTotal()-1; i>=0; i--)
{
/* определим параметры установленного ордера */string symbol=OrderGetString(ORDER_SYMBOL); // символ ордераint digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // количество знаков после запятойdouble point=SymbolInfoDouble(symbol,SYMBOL_POINT); // значение одного пунктаulong ticket=OrderGetTicket(i); // тикет ордераENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); // тип ордераdouble volume=OrderGetDouble(ORDER_VOLUME_INITIAL); // объём ордераulong magic=OrderGetInteger(ORDER_MAGIC); // MagicNumber ордераdouble price_current=OrderGetDouble(ORDER_PRICE_CURRENT); // текущая цена по символу ордераdouble price_order_open=OrderGetDouble(ORDER_PRICE_OPEN); // цена открытия указанная в ордереdouble sl=OrderGetDouble(ORDER_SL); // стоп лосс ордераdouble tp=OrderGetDouble(ORDER_TP); // тейк профит ордера/* выведем информацию об установленных отложенных ордерах */PrintFormat("#%I64u %s %s %.2f price_current: %.5f price_order_open: %.5f sl: %.5f tp: %.5f magic: %d",
ticket,symbol,EnumToString(type),volume,price_current,price_order_open,sl,tp,magic);
}
}
//+------------------------------------------------------------------+
Но вот результат выведенный на печать во вкладе Эксперты немного озадачил. У отложенного ордера ORDER_TYPE_BUY_STOP символ отражён, а у ордера ORDER_TYPE_SELL_STOP почему-то нет.
С чем это может быть связано? С уважением, Владимир.
Помогите разобраться с одним моментом. Пишу начало функции и решил проверить часть её кода скриптом:
Но вот результат выведенный на печать во вкладе Эксперты немного озадачил. У отложенного ордера ORDER_TYPE_BUY_STOP символ отражён, а у ордера ORDER_TYPE_SELL_STOP почему-то нет.
С чем это может быть связано? С уважением, Владимир.
Это связано с тем, что Вы не выбрали тикет, а пытаетесь получить его характеристики.
Sergey Gridnev #: Это связано с тем, что Вы не выбрали тикет, а пытаетесь получить его характеристики.
Спасибо, Сергей, за отклик! Ваш ответ ещё больше меня озадачил. Как же так? При запуске скрипта происходит опрос всех установленных отложенных ордеров. Из картинки видно, что на графике их два и, при этом, один тикет получился выбранным, а другой нет? Не совсем понятно.
Можете пояснить чуть подробнее?
Задаю вопрос не из праздного любопытства, а в целях продолжения самообучения.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Вы действительно сами этого не видите?
"Как расписать этот момент?" - там где указан лот 0,01 надо высчитать минимальный имеющийся.
Это я вижу. Если сделать 0.02 то будет выбирать ордера с лотом 0.02. Я и спрашиваю как сделать чтобы смотрел сначала на 0.01, затем на 0.02 и так далее
2 цикла надо: в первом узнаёте минимальный объем, во втором - закрываете. И учтите, что при закрытии ордера смещаются на 1 позицию, поэтому надо делать цикл от максимальной позиции к 0.
А как сделать от максимальной к 0 ?
Я и спрашиваю как сделать чтобы смотрел сначала на 0.01, затем на 0.02 и так далее
Вам уже 2 раза ответили как.
Это я вижу. Если сделать 0.02 то будет выбирать ордера с лотом 0.02. Я и спрашиваю как сделать чтобы смотрел сначала на 0.01, затем на 0.02 и так далее
Соберите в двумерный массив, в первом измерении лоты, во втором тикеты. Отсортируйте массив, и закрывайте пока в первом измерении минимальный лот. Или если надо закрыть все, но по мере возрастания лота, закрывайте до конца…
2 цикла надо: в первом узнаёте минимальный объем, во втором - закрываете. И учтите, что при закрытии ордера смещаются на 1 позицию, поэтому надо делать цикл от максимальной позиции к 0.
нет. От самой ранней к самой поздней.
То что сказали я это и сам знал. Ладно, буду методом тыка осваивать как всегда
То что сказали я это и сам знал. Ладно, буду методом тыка осваивать как всегда
Добрый вечер, уважаемые эксперты!
Помогите разобраться с одним моментом. Пишу начало функции и решил проверить часть её кода скриптом:
Но вот результат выведенный на печать во вкладе Эксперты немного озадачил. У отложенного ордера ORDER_TYPE_BUY_STOP символ отражён, а у ордера ORDER_TYPE_SELL_STOP почему-то нет.
С чем это может быть связано? С уважением, Владимир.
Добрый вечер, уважаемые эксперты!
Помогите разобраться с одним моментом. Пишу начало функции и решил проверить часть её кода скриптом:
Но вот результат выведенный на печать во вкладе Эксперты немного озадачил. У отложенного ордера ORDER_TYPE_BUY_STOP символ отражён, а у ордера ORDER_TYPE_SELL_STOP почему-то нет.
С чем это может быть связано? С уважением, Владимир.
Это связано с тем, что Вы не выбрали тикет, а пытаетесь получить его характеристики.
Спасибо, Сергей, за отклик! Ваш ответ ещё больше меня озадачил. Как же так? При запуске скрипта происходит опрос всех установленных отложенных ордеров. Из картинки видно, что на графике их два и, при этом, один тикет получился выбранным, а другой нет? Не совсем понятно.
Можете пояснить чуть подробнее?
Задаю вопрос не из праздного любопытства, а в целях продолжения самообучения.
С уважением, Владимир.