Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 591

 
barudkinarseniy:
Да нет вроде проблем нет, просто эксперт работает таки образом что посе прибыльной или убыточной сделки после закрытия вообщем сразу открывает ордера, и номер тикета в принте в итоге очень большой, ну я и подумал что бы в ручную не перезагружать его может можно автомотически. А за функцию спасибо тоже пригодится))
1000 ордеров за год -это ни о чем, посмотрите на тикеты на реальных счетах. У меня, например последний 10179697. Вообще тикеты имеют тип int, следовательно максимальное значение будет 2 147 483 647. 
 
Alexey Volchanskiy:
1000 ордеров за год -это ни о чем, посмотрите на тикеты на реальных счетах. У меня, например последний 10179697. Вообще тикеты имеют тип int, следовательно максимальное значение будет 2 147 483 647. 
А что будет если достигнет максимального значения?
 
в MQL5 тикет имеет тип ulong, запыхаетесь превышать
 
barudkinarseniy:
А что будет если достигнет максимального значения?
Номера ордерам и сделкам присваиваются брокером, а не вашим советником, а он уж проследит, чтобы они не превышали максимального значения. ) Это не ваша головная боль.
 
Спасибо за полезную информацию)) А есть идеи как проверить с помощью AccountFreeMarginCheck лимитные ордера? 
 

взял стандартный советник по демарку из библиотеки , вроде работает. Начал дорабатывать. там есть строчки 

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

 

Я в этот индикатор еще добавил расчеты и дополнительные выходные данные, у меня получилось вот так

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

double LUN = iCustom(NULL, 0, "itdlines", Level, 2, 0);

double LDN = iCustom(NULL, 0, "itdlines", Level, 3, 0);

double KUN = iCustom(NULL, 0, "itdlines", Level, 4, 0);

double KDN = iCustom(NULL, 0, "itdlines", Level, 5, 0); 

и советник начал тормозить, выводить ошибки неправильных данных.

Вопрос такой, я так подозреваю я создаю 8 раз один и тот же индикатор и получаю оттуда нужный массив. Или я не прав индикатор создается 1 раз?
А если я прав, то как можно создать его 1 раз и оттуда вынуть нужные данные?

 

Здравствуйте уважаемые коллеги!

Подскажите пожалуйста структуру торгового запроса на закрытие позиции в МТ5 с хэджем.

Спасибо. 

 
Nikita Solodko:

Здравствуйте уважаемые коллеги!

Подскажите пожалуйста структуру торгового запроса на закрытие позиции в МТ5 с хэджем.

Спасибо. 

Можно использовать метод
bool  PositionClose( 
   const ulong   ticket,                  // тикет позиции 
   ulong         deviation=ULONG_MAX      // отклонение 
   )
 из стандартной библиотеки класса CTrade
 
Sergey Gritsay:
Можно использовать метод  из стандартной библиотеки класса CTrade
Спасибо конечно, но я не использую торговые классы, мне удобней пользоваться функцией OrderSend(). И до появления возможности хэджа все было хорошо, а теперь в структуре торгового запроса появился элемент "position", как сказано в справке, для указания конкретной позиции при ее модификации и закрытии, только не сказано как эту позицию закрывать (тип операции или пр.). 
 
Milleras1981:

взял стандартный советник по демарку из библиотеки , вроде работает. Начал дорабатывать. там есть строчки 

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

 

Я в этот индикатор еще добавил расчеты и дополнительные выходные данные, у меня получилось вот так

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

double LUN = iCustom(NULL, 0, "itdlines", Level, 2, 0);

double LDN = iCustom(NULL, 0, "itdlines", Level, 3, 0);

double KUN = iCustom(NULL, 0, "itdlines", Level, 4, 0);

double KDN = iCustom(NULL, 0, "itdlines", Level, 5, 0); 

и советник начал тормозить, выводить ошибки неправильных данных.

Вопрос такой, я так подозреваю я создаю 8 раз один и тот же индикатор и получаю оттуда нужный массив. Или я не прав индикатор создается 1 раз?
А если я прав, то как можно создать его 1 раз и оттуда вынуть нужные данные?

Советник до Ваших доработок получал 4 значения: с нулевого индикаторного буфера за последний и предпоследний бар, и с первого индикаторного буфера так же, Вы же пытаетесь получить информацию с 6 индикаторных буферов... Вы уверены, что они есть в индикаторе? Чего Вы хотите добиться?
Причина обращения: