Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 514

 

Здравствуйте, столкнулся с такой проблемой: не могу сделать так, чтобы советник торговал только в два временных периода. Как это сделать? Подскажите, пожалуйста. Код выглядит вот так, но он воспринимает только 1 период, второй игнорирует

extern string с = "Блок № 3";
extern int    Start_H1 = 0;
extern int    Start_M1 = 30;
extern int    End_H1   = 7;
extern int    End_M1   = 59;
extern int    Start_H2 = 12;
extern int    Start_M2 = 30;
extern int    End_H2   = 20;
extern int    End_M2   = 10;



if (((Hour()>=Start_H1 && Minute()>Start_M1) && (Hour()<=End_H1 && Minute()<=End_M1 )) ||
    ((Hour()>=Start_H2 && Minute()>Start_M2) && (Hour()<=End_H2 && Minute()<=End_M2))) 
        {
         открытие ордеров
        }
 
Nikita Chernyshov:

Здравствуйте, столкнулся с такой проблемой: не могу сделать так, чтобы советник торговал только в два временных периода. Как это сделать? Подскажите, пожалуйста. Код выглядит вот так, но он воспринимает только 1 период, второй игнорирует

Лучше перевести часы и минуты в полноценное вреся и сравнивать с текущим

   string startTime_1, startTime_2, endTime_1, endTime_2;
   StringConcatenate(startTime_1, Start_H1, ":", Start_M1);
   StringConcatenate(endTime_1, End_H1, ":", End_M1);
   StringConcatenate(startTime_2, Start_H2, ":", Start_M2);
   StringConcatenate(endTime_2, End_H2, ":", End_M2);
   datetime startHM_1, startHM_2, endHM_1, endHM_2;
   startHM_1 = StringToTime(startTime_1);
   endHM_1 = StringToTime(endTime_1);
   startHM_2 = StringToTime(startTime_2);
   endHM_2 = StringToTime(endTime_2);
   if((TimeCurrent() >= startHM_1 && TimeCurrent() <= endHM_1) || (TimeCurrent() >= startHM_2 && TimeCurrent() <= endHM_2))
 
Здравствуйте. Есть объекты - треугольники с именами: 321fa34, 321fa53, 321fa41. Как узнать минимальную цену самого свежего треугольника? Ту цену, которая в свойствах посередке.
 
YanSay:

Добрый день!

Прошу помочь со следующей проблемой:

1) После выполнения некоторых условий, открывается отложенный ордер:

Подскажите пожалуйста, что нужно дописать и куда, чтобы неоткрывшийся отложенный ордер был удален в том случае, если цена уже прошла стоп лосс(этого неоткрывшегося оредра).

Извините за глупый вопрос, заблудился в форумах пока искал ответ.

Заранее благодарю!

Идентификатор

Описание

ORDER_TIME_GTC

Ордер будет находится в очереди до тех пор, пока не будет снят

ORDER_TIME_DAY

Ордер будет действовать только в течение текущего торгового дня

ORDER_TIME_SPECIFIED

Ордер будет действовать до даты истечения

ORDER_TIME_SPECIFIED_DAY

Ордер будет действовать до 23:59:59 указанного дня. Если это время не попадает на торговую сессию, истечение наступит в ближайшее торговое время.


Вот только эти параметры снятия отложенного ордера !

Чтобы удалить ордер тебе нужно контролировать цену и при достижении ею цены стопа удалять ордер - все это отдельным кодом нужно писать !

 

Уважаемые господа,

помогите найти ошибку:

(Ошибки)

')' - unexpected end of program

" - comma expected

" -semicolon expected

'Trade_BY' - function not defined

'Trade_SELL' - function not defined

Файлы:
 

Уважаемые подскажите пожалуйста !

Каким образом я могу с помощью скрипта поменять настройки(конкретную переменную) индикатора на графике !?

Если сие возможно кусочек кода бы желательно !!!

 
PolarSeaman:
Здравствуйте. Есть объекты - треугольники с именами: 321fa34, 321fa53, 321fa41. Как узнать минимальную цену самого свежего треугольника? Ту цену, которая в свойствах посередке.

1.

OBJPROP_CREATETIME

Время создания объекта

datetime    r/o

2.

OBJPROP_PRICE

Координата цены

double    модификатор=номер точки привязки

 
Nikita Chernyshov:

Здравствуйте, столкнулся с такой проблемой: не могу сделать так, чтобы советник торговал только в два временных периода. Как это сделать? Подскажите, пожалуйста. Код выглядит вот так, но он воспринимает только 1 период, второй игнорирует

С таким подходом будут оба интервала игнорироваться. К примеру, текущее время 01:15. Выполнится ли условие?

(Hour()>=Start_H1 && Minute()>Start_M1) && (Hour()<=End_H1 && Minute()<=End_M1 )

Нет, не выполнится. Ведь текущие минуты - 15, что меньше стартовых 30. Аналогично со вторым интервалом. Лучше всего перевести время в минуты от начала дня:

int nCurDayMinutes = Hour() * 60 + Minute();
int nStart1DayMinutes = Start_H1 * 60 + Start_M1;
int nEnd1DayMinutes = End_H1 * 60 + End_M1;
if (nCurDayMinutes >= nStart1DayMinutes && nCurDayMinutes < nEnd1DayMinutes)
{
   // внутри интервала
}
 
YanSay:

Добрый день!

Прошу помочь со следующей проблемой:

1) После выполнения некоторых условий, открывается отложенный ордер:

Подскажите пожалуйста, что нужно дописать и куда, чтобы неоткрывшийся отложенный ордер был удален в том случае, если цена уже прошла стоп лосс(этого неоткрывшегося оредра).

Извините за глупый вопрос, заблудился в форумах пока искал ответ.

Заранее благодарю!

Начнем с того, что неизвестно, открылся ли у ордер - проверок на этот счет ведь нет никаких. Поэтому проверять достижение Stop Loss или Take Profit ордера, факт открытия которого не установлен, бессмысленно.

 
Игорь:

Уважаемые подскажите пожалуйста !

Каким образом я могу с помощью скрипта поменять настройки(конкретную переменную) индикатора на графике !?

Если сие возможно кусочек кода бы желательно !!!

Очень странный вопрос. Это то же самое, что спросить: "Как включить табуретку при помощи напильника?".

Причина обращения: