то советник выдает следующий результат - ++++++++++++++ 2147483647. Причем то же число и на буфер вверх и на буфер вниз. Подскажите, что это за код? И как "достать" из Икастом значение именно при появлении стрелки?
Прошу знающих людей оказать небольшую помощь: подскажите корректный код для создания Советника/Утилиты алгоритм работы которой заключается в следующем:
- открытие двойной сделки В ОДНУ СТОРОНУ (лоты 0.1 и 0.1) производится в момент пересения low (sell)/high (buy) прошлой сформированной свечи на текущем графике/текущем таймфрейме со стопом в районе high/low той самой свечи, при пересечении которой открыли данную сделку и выставлением в этой же точке отложенного ордера двойной сделки в одну сторону с лотами, например 0.2 и 0.1.
то советник выдает следующий результат - ++++++++++++++ 2147483647. Причем то же число и на буфер вверх и на буфер вниз. Подскажите, что это за код? И как "достать" из Икастом значение именно при появлении стрелки?
Попробуйте передавать значения индикатора не через iCustom(), а через переменные глобального уровня терминала. Это те, которые можно посмотреть по F3. Дело в том, что не редки ситуации, когда это единоственно-нормальный путь передачи данных. У меня такие были.
Вполне возможно, что в Вашем индикаторе одни типы стрелок рисуются через индикаторный буффер, а другие создаются как объекты. Это единственная причина, почему в окне данных могут отсутствовать цены установки стрелок - в это окно данные выводятся из индикаторных буфферов.
if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==TimeSeconds(TimeCurrent()))
{+ некоторые условия
Тогда открывается ордер
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP); if (Ticket > 0) Alert ("Открыт ордер Buy ",Ticket);
return;}
Но если в этот момент нету тика он не срабатывает
а если дать ему больше времени на раздумия может открыть несколько ордеров.
Но мне нужен только один и что б не обращал внимания на уже открытые ордера.
Подскажите что сделать
Код советника срабатывает ТОЛЬКО по приходу нового тика. Ордеров открывается больше одного потому, что на следующем тике сигнал установки тоже истинный, а проверки на количество ордеров нет. Нужно пересчитать ордера.
Попробуйте передавать значения индикатора не через iCustom(), а через переменные глобального уровня терминала. Это те, которые можно посмотреть по F3. Дело в том, что не редки ситуации, когда это единоственно-нормальный путь передачи данных. У меня такие были.
Вполне возможно, что в Вашем индикаторе одни типы стрелок рисуются через индикаторный буффер, а другие создаются как объекты. Это единственная причина, почему в окне данных могут отсутствовать цены установки стрелок - в это окно данные выводятся из индикаторных буфферов.
Спасибо большое! Сейчас попробую прописать, как Вы сказали.
Код советника срабатывает ТОЛЬКО по приходу нового тика. Ордеров открывается больше одного потому, что на следующем тике сигнал установки тоже истинный, а проверки на количество ордеров нет. Нужно пересчитать ордера.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Я заметила такой нюанс, когда я прописываю в советнике принт, а именно:
double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);
Print ("+++++++++++++", Up);
то советник выдает следующий результат - ++++++++++++++ 2147483647. Причем то же число и на буфер вверх и на буфер вниз. Подскажите, что это за код? И как "достать" из Икастом значение именно при появлении стрелки?
Прошу знающих людей оказать небольшую помощь: подскажите корректный код для создания Советника/Утилиты алгоритм работы которой заключается в следующем:
- открытие двойной сделки В ОДНУ СТОРОНУ (лоты 0.1 и 0.1) производится в момент пересения low (sell)/high (buy) прошлой сформированной свечи на текущем графике/текущем таймфрейме со стопом в районе high/low той самой свечи, при пересечении которой открыли данную сделку и выставлением в этой же точке отложенного ордера двойной сделки в одну сторону с лотами, например 0.2 и 0.1.
Вопрос:
Есть код
int start()
if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==TimeSeconds(TimeCurrent()))
{+ некоторые условия
Тогда открывается ордер
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Открыт ордер Buy ",Ticket);
return;}
Но если в этот момент нету тика он не срабатывает
а если дать ему больше времени на раздумия может открыть несколько ордеров.
Но мне нужен только один и что б не обращал внимания на уже открытые ордера.
Подскажите что сделать
Я заметила такой нюанс, когда я прописываю в советнике принт, а именно:
double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1);
Print ("+++++++++++++", Up);
то советник выдает следующий результат - ++++++++++++++ 2147483647. Причем то же число и на буфер вверх и на буфер вниз. Подскажите, что это за код? И как "достать" из Икастом значение именно при появлении стрелки?
Попробуйте передавать значения индикатора не через iCustom(), а через переменные глобального уровня терминала. Это те, которые можно посмотреть по F3. Дело в том, что не редки ситуации, когда это единоственно-нормальный путь передачи данных. У меня такие были.
Вполне возможно, что в Вашем индикаторе одни типы стрелок рисуются через индикаторный буффер, а другие создаются как объекты. Это единственная причина, почему в окне данных могут отсутствовать цены установки стрелок - в это окно данные выводятся из индикаторных буфферов.
Вопрос:
Есть код
int start()
if (H==TimeHour(TimeCurrent()) && M==TimeMinute(TimeCurrent()) && S==TimeSeconds(TimeCurrent()))
{+ некоторые условия
Тогда открывается ордер
Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Открыт ордер Buy ",Ticket);
return;}
Но если в этот момент нету тика он не срабатывает
а если дать ему больше времени на раздумия может открыть несколько ордеров.
Но мне нужен только один и что б не обращал внимания на уже открытые ордера.
Подскажите что сделать
Код советника срабатывает ТОЛЬКО по приходу нового тика. Ордеров открывается больше одного потому, что на следующем тике сигнал установки тоже истинный, а проверки на количество ордеров нет. Нужно пересчитать ордера.
Попробуйте передавать значения индикатора не через iCustom(), а через переменные глобального уровня терминала. Это те, которые можно посмотреть по F3. Дело в том, что не редки ситуации, когда это единоственно-нормальный путь передачи данных. У меня такие были.
Вполне возможно, что в Вашем индикаторе одни типы стрелок рисуются через индикаторный буффер, а другие создаются как объекты. Это единственная причина, почему в окне данных могут отсутствовать цены установки стрелок - в это окно данные выводятся из индикаторных буфферов.
Спасибо большое! Сейчас попробую прописать, как Вы сказали.
Но если в этот момент нету тика он не срабатывает
а если дать ему больше времени на раздумия может открыть несколько ордеров.
Но мне нужен только один и что б не обращал внимания на уже открытые ордера.
Подскажите что сделать
1. глобальная datetime last_dt;
2. делайте правильное время
datetime dt=StrToTime(H+":"+M+":"+S);
3.
if (TimeCurrent()>=dt && last_dt<dt) // наступило нужное время и это следующий день
{
// открываем ордер
if (ticket>0) last_dt=TimeCurrent(); // запоминаем время открытия
}
то советник выдает следующий результат - ++++++++++++++ 2147483647. Причем то же число и на буфер вверх и на буфер вниз.
Я это понял.
Мне нужно поконкретнее про пересчет ордеров. Может пример (в форме кода) или ссылку .
Я пробовал так
if (Ticket > 0)
Alert ("Открыт ордер Buy ",Ticket);
sleep (10000)
return;}
почемуто не получилось
Код советника срабатывает ТОЛЬКО по приходу нового тика. Ордеров открывается больше одного потому, что на следующем тике сигнал установки тоже истинный, а проверки на количество ордеров нет. Нужно пересчитать ордера.
Мне нужно что б программа не обращала внимание на дату, важно только время
ваш совет подойдет в таком случае?
1. глобальная datetime last_dt;
2. делайте правильное время
datetime dt=StrToTime(H+":"+M+":"+S);
3.
if (TimeCurrent()>=dt && last_dt<dt) // наступило нужное время и это следующий день
{
// открываем ордер
if (ticket>0) last_dt=TimeCurrent(); // запоминаем время открытия
}