[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 53
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я заметила такой нюанс, когда я прописываю в советнике принт, а именно:
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(); // запоминаем время открытия
}