Скажите пожалуста, я использую одну функцию внутри другой. В наружной обьявил переменну. Во внутренней ее использую. Вот примерно
string PositionSymboll = "";
if (PositionSymboll=PositionGetSymbol(i)){//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с нейif (PositionGetInteger(POSITION_MAGIC)== MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
{ BU_();}}
Dimka-novitsek: Ох, ты! И даже обьявив ее внутри функции void OnTick(), компилятор так же ругается, уже на первую функцию! Я пас, прямо выпал..
voidOnStart()
{
int i=0; long MAGIC=1234;
string PositionSymboll="";
if(PositionSymboll=PositionGetSymbol(i))
{//Возвращает символ соответствующей открытой позиции и автоматически выбирает позицию для дальнейшей работы с нейif(PositionGetInteger(POSITION_MAGIC)==MAGIC)//Функция возвращает запрошенное свойство открытой позиции, предварительно выбранной
{ BU_();}
}
}
void BU_(){}
компилируется нормально, а вот конструкция
string PositionSymboll="";
if(PositionSymboll)
вызывает сомнение, вы проверяете на true/false стринг переменную ????????? я озадачен
Подскажите пожалуйста, есть функция которая должна возвращать true если есть отложенный ордер по передаваемой в функцию цене. Но она у меня возаращает лысую бабушку (попеременно true/false). Подскажите, где я недопонимаю логику работы с ордерами в mql5 ? (только учусь).
bool OrderExist(double price) // функция возвращает наличие ордера на передаваемой цене
{
uint total=OrdersTotal();
ulong ticket;
for(uint i=0;i<total;i++)
{
if((ticket=OrderGetTicket(i))>0)
{
if(NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN),4)== price)
{
return(true);
}
}
}
return(false);
}
Подскажите пожалуйста, есть функция которая должна возвращать true если есть отложенный ордер по передаваемой в функцию цене. Но она у меня возаращает лысую бабушку (попеременно true/false). Подскажите, где я недопонимаю логику работы с ордерами в mql5 ? (только учусь).
А вот не факт что ордер открылся по заданной цене, могло быль проскальзывание, по тому и получается: открылся во время то true, не успел (цена сместилась) - false.
fyords: А вот не факт что ордер открылся по заданной цене, могло быль проскальзывание, по тому и получается: открылся во время то true, не успел (цена сместилась) - false.
Да он висит в терминале по этой цене. Если он есть в operations, это ведь значит, что он выставлен успешно?
DMXX: Да он висит в терминале по этой цене. Если он есть в operations, это ведь значит, что он выставлен успешно?
Выставлен то да, а вот когда он сработает...
Или такой пример: есть отложенный ордер, цена его на 1 пункт отличается от текущей, при следующем тике цена прыгает не на 1 пункт, а, допустим, на 3-5, итог - открытие не на нужной цене. Явный пример - гэп.
И т.п. Ругается так. 'PositionSymboll' - undeclared identifier Переделать.mq5 2472 5
Я, честно говоря, не ожидал тут никакого подвоха. Если я ее обьвлю внутри используемой функции BU_(), пирименная "обнулится". Как поступить лучше?
Мне очень хорошо было бы обьявлять ее внутри первой функции, внутри цикла if.
Ох, ты! И даже обьявив ее внутри функции void OnTick(), компилятор так же ругается, уже на первую функцию! Я пас, прямо выпал..
компилируется нормально, а вот конструкция
вызывает сомнение, вы проверяете на true/false стринг переменную ????????? я озадачен
вопрос риторический.
Спасибо!! Я еще только учусь, это мой первый советник на MQL5. А что значит риторический?
Это значит не требующий ответа.
Просто переменная типа стринг переданная как выражение в оператор if, выдаст false лишь в одном случае, если переменная не была инициализирована.
Во всех остальных вариантах содержимого переменной будет выдан true.
Подскажите пожалуйста, есть функция которая должна возвращать true если есть отложенный ордер по передаваемой в функцию цене. Но она у меня возаращает лысую бабушку (попеременно true/false). Подскажите, где я недопонимаю логику работы с ордерами в mql5 ? (только учусь).
Подскажите пожалуйста, есть функция которая должна возвращать true если есть отложенный ордер по передаваемой в функцию цене. Но она у меня возаращает лысую бабушку (попеременно true/false). Подскажите, где я недопонимаю логику работы с ордерами в mql5 ? (только учусь).
А вот не факт что ордер открылся по заданной цене, могло быль проскальзывание, по тому и получается: открылся во время то true, не успел (цена сместилась) - false.
А вот не факт что ордер открылся по заданной цене, могло быль проскальзывание, по тому и получается: открылся во время то true, не успел (цена сместилась) - false.
Да он висит в терминале по этой цене. Если он есть в operations, это ведь значит, что он выставлен успешно?
Выставлен то да, а вот когда он сработает...
Или такой пример: есть отложенный ордер, цена его на 1 пункт отличается от текущей, при следующем тике цена прыгает не на 1 пункт, а, допустим, на 3-5, итог - открытие не на нужной цене. Явный пример - гэп.
А может я не понял вопроса и туплю.