[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 260

 
ikatsko:А в приведенном куске программы я не понял следующего: iTime даст значение времени открытия бара, смещенного относительно текущего на количество_баров_для_ пропуска. Это означает, что полученное таким образом время всегда будет меньше текущего. С каждым новым баром оно также будет сдвигаться в большую сторону. И всё это привязано к ??? Ну и что? Как будет это работать на пропуск бара?

Замените OrderOpenTime на время подачи вашей команды

f(iTime(Symbol(),период_бара,количество_баров_для_ пропуска)<время_вашей_команды) return

 
paukas:

Замените OrderOpenTime на время подачи вашей команды

f(iTime(Symbol(),период_бара,количество_баров_для_ пропуска)<время_вашей_команды) return

Кажется понял. время_вашей_команды ставлю начало следующего бара и через количество_баров_для_ пропуска return прекратится! Изящно. Спасибо !
 
Bicus:

А что здесь может быть сложного?

0-й элемент массива будет иметь значение цены последнего тика, 1-й элемент значение цены 1 тик назад, 2-й элемент значение цены 2 тика назад и т. д.

Или я что-то не так понял и имелось в виду совсем другое?

я новичек в этом деле, учусь по учебнику самостоятельно - разжуйте по слогам плз.
#property copyright "Bicus"
#property link      "Bicus"


double aPrices [5]; //мы объявили массив с пятью значениями внутри

void PutStack (double p_Price) //вот мне не понятно. Эта функция выступает как шаблон? Она показывает программе, как работать? Объясните что это плз.
{
  int nCounter; //создали переменную целого числа
  
  for (nCounter = 4; nCounter > 0; nCounter--) //это цикл, который начинается с 4х и идет к нулю (я так понял - он будет сохранять 4 тика)
    aPrices [nCounter] = aPrices [nCounter - 1]; //присваиваем массиву (например) с номером 3 значиние массива с номером  2 (а разве надо не наоборот?). 
    
  aPrices [0] = p_Price; //если p_Price - это тик, то в этой строчке мне все понятно - мы присваиваем первому значению массива настоящий тик.
}

int start()
{
  int nCounter; //опять создали переменную целого числа
  
  PutStack (Bid); //тут не понятно... Putstack=Bid?
  
  for (nCounter = 0; nCounter < 5; nCounter++) //тут создаем цикл, который идет от нуля, чтоб заполнять массив, но почему внутри его нет массива? он не нужен?
    Print (nCounter, "-й тик: ", DoubleToStr (aPrices [nCounter], Digits)); //тут выводим значение
}
 

Добрый день, уважаемые эксперты.

Перерыл всю справку и на форумах ответа пока тоже не нашел. А вопрос простой - есть ли простой функционал в MQL4 сообщить время сработки отложенного ордера или нет?

Судя по имеющейся информации, такого функционала нет. Функция OrderOpenTime() выдает время постановки отложенника на исполнение, а вот время, когда он стал рыночным ордером, сдается мне, без использования эксперта, отслеживающего состояние ордеров на счете, узнать не получится.

Подскажите, пожалуйста, может кто-то знает простое решение. Сложное в виде эксперта делать непродуктивно, смысл гонять постоянно эксперта, если его услуги нужны раз-два в сутки. Нужно что-то более простое, вот была бы встроенная функция, кот. для отложенника сообщала время его сработки... Нужно это для правильного учета ордеров по времени открытия, чтобы, например, всегда можно было сказать, какой ордер из текущих открытых или уже закрытых имеет самое свежее время открытия. В случае с отложенником, этого сделать не получается. Отложенник мог быть выставлен 2 часа назад, сработать час назад, в этом часовом промежутке могли открываться-закрываться другие ордера, а в терминале у ставшего рыночным отложенника время открытия стоит двухчасовой давности, а нужно узнать именно фактическое время его сработки.

Буду рад вашим комментариям.

 
Starting:

Добрый день, уважаемые эксперты.

Перерыл всю справку и на форумах ответа пока тоже не нашел. А вопрос простой - есть ли простой функционал в MQL4 сообщить время сработки отложенного ордера или нет?

Судя по имеющейся информации, такого функционала нет. Функция OrderOpenTime() выдает время постановки отложенника на исполнение, а вот время, когда он стал рыночным ордером, сдается мне, без использования эксперта, отслеживающего состояние ордеров на счете, узнать не получится.

Подскажите, пожалуйста, может кто-то знает простое решение. Сложное в виде эксперта делать непродуктивно, смысл гонять постоянно эксперта, если его услуги нужны раз-два в сутки. Нужно что-то более простое, вот была бы встроенная функция, кот. для отложенника сообщала время его сработки... Нужно это для правильного учета ордеров по времени открытия, чтобы, например, всегда можно было сказать, какой ордер из текущих открытых или уже закрытых имеет самое свежее время открытия. В случае с отложенником, этого сделать не получается. Отложенник мог быть выставлен 2 часа назад, сработать час назад, в этом часовом промежутке могли открываться-закрываться другие ордера, а в терминале у ставшего рыночным отложенника время открытия стоит двухчасовой давности, а нужно узнать именно фактическое время его сработки.

Буду рад вашим комментариям.

я немного не пойму почему вас не устраивает советник, ведь вы походу не собираетесь делать сложную торговую систему на нейронных сетях с самооптимизацией, вам просто нужно каждый тик проверять наличие отложенника и когда он сработает вы бы получили текстовое сообщение на экран или звуковое или и то и другое, с этой задачей и калькудятор справится, нечего беспокойиться за компьютер или у вас проблемы именно с написанием?
 
CLAIN:
я новичек в этом деле, учусь по учебнику самостоятельно - разжуйте по слогам плз.

А в учебнике нет ответов на Ваши вопросы?
 

Перенесено:

Pyxlik2009 14.10.2011 03:52

Ребят подскажите что означает ошибка (invalid integer number as parameter 10 for OrderSend function) и как ее исправить ?

 

Доброго времени суток всем,специалистам программного кода!

Не могли бы вы мне разъяснить вот такую ситуацию,в моём советник весь смысл выставления ордера заключается в определённое время и один ордер в сутк,для чего я применил вот такой код:

int H=Hour(),
    M=Minute();
if(H>=21 && M>=40)
{
   {
    Alert("Ордер открыт-",Ticket);
    return(0);
    }
   else 
   {
   Alert("Ошибка№=",GetLastError());
   return(0);
   }
}

но заметил,что if(H>=09 && M>=40) и if(H>=21 && M>=40) одинаковые условия и получается,что ордер будет выставляться как минимум два раза в сутки.

Что здесь стоило мне ещё применить,чтобы обойти эту проблему?

За ранее всем откликнувшимся благодарен за поддержку!!!

 

Starting:

....Сложное в виде эксперта делать непродуктивно, смысл гонять постоянно эксперта, если его услуги нужны раз-два в сутки.


Есть такая штука - скрипт. Когда нужно, тогда и запускаете.
 
Valdemar:

...заметил,что if(H>=09 && M>=40) и if(H>=21 && M>=40) одинаковые условия и получается,что ордер будет выставляться как минимум два раза в сутки.
Что здесь стоило мне ещё применить,чтобы обойти эту проблему?

Почаще заглядывайте в FAQ, там огромное количество примеров, которые могут быть полезными. А на их основе можно строить свои функции.
isTradeTimeString - Возвращает флаг разрешения торговли по времени.
isTradeTimeInt - Возвращает флаг разрешения торговли по времени.
Причина обращения: