Вопрос к знатокам MQL4 !!! - страница 2

 
if (isCloseLastPosByTake()) {mmmm=true;}else{mmm=false;}

очень рекомендую писать внятные имена переменных, чтобы потом не запутаться, а то потом заглядываеш в свой код и ничего не понимаеш, тем более что можно им присваивать имена в кириллице

if (isCloseLastPosByTake()) {ЗакрытПоТейку=true;}else{ЗакрытПоТейку=false;}
рекомендую заглянуть еще Сюда, ну и вообще неплохо было бы Вам как бы почитать учебник по мкл, ну и хелп перелопатить, но если что то обращайтесь
 

Спасибочки. Всё ясно пока. За исключением OrderComment()

string OrderComment( )
Возвращает комментарий для выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Чуть позже сформулирую вопрос.

 
Вот. Если я задаю в своей функции комментарий My order
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,My order ,MAGIC,0,Green);

то по вашему мнению (цитирую) "Конкретно в OrderComment() не содержатся."

Разве я не могу потом выбирать нужные мне ордера опциями

if (OrderComment()==" My order "
if (OrderComment()=="My order[tp]"
if (OrderComment()=="My order[sl]"

точно так же, как я делаю это, например фунуцией if ( OrderMagicNumber()....

Если - не могу, - то зачем тогда существует вообще эта функция?

Ведь чтобы отображать комментарий в терминале вовсе не обязательно вводить функцию. Это можно жестко замонтировать в мт4. Но функция существует. Значает это кому-то нужно.

 
Ну в комент Вы можете писать све что угодно, но стоит учесть что ДЦ тоже имеет право дописать в коммент, что они успешно делают. Так что идентифицировать ордера все такм лучше по магику.
 
xrust:

Если вас интересует какое то кол - во закрытых ордеров, начиная от самых свежих, то вам надо построить цикл перебора с фильтрацией по времени закрытия, а потом уже из них выбрать ордера закрытые по ТП

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

Я даже и выговорить такое сходу не смогу. А уж построить тем более! Здесь -

                
     for (int i=0; i<=OrdersHistoryTotal(); i++) {//смотрим историю счёта
мы смотрим всю историю от первого до последнего ордера. Но я нашла кусочек кода, который перебирает с последнего ордера -
for ( int i = OrdersHistoryTotal() - 1; i>= 0; i-- )

Теперь видимо надо так ввести сюда заданное количество последних ордеров N чтобы перебор ограничился этим количеством. Т.е. где то значение i надо сравнить с N

Можно так сделать? и как?

 
Rita:
xrust:

Если вас интересует какое то кол - во закрытых ордеров, начиная от самых свежих, то вам надо построить цикл перебора с фильтрацией по времени закрытия, а потом уже из них выбрать ордера закрытые по ТП

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

Я даже и выговорить такое сходу не смогу. А уж построить тем более! Здесь -

                
     for (int i=0; i<=OrdersHistoryTotal(); i++) {//смотрим историю счёта
мы смотрим всю историю от первого до последнего ордера. Но я нашла кусочек кода, который перебирает с последнего ордера -
for ( int i = OrdersHistoryTotal() - 1; i>= 0; i-- )

Теперь видимо надо так ввести сюда заданное количество последних ордеров N чтобы перебор ограничился этим количеством. Т.е. где то значение i надо сравнить с N

Можно так сделать? и как?

Учитывайте, что при открытии терминала ордера в истории отсортированы по времени открытия, а в процессе работы добавляются в истории по мере их закрытия, то есть отсортированы по времени закрытия.

 
Rita:
xrust:

Если вас интересует какое то кол - во закрытых ордеров, начиная от самых свежих, то вам надо построить цикл перебора с фильтрацией по времени закрытия, а потом уже из них выбрать ордера закрытые по ТП

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

Я даже и выговорить такое сходу не смогу. А уж построить тем более! Здесь -

                
     for (int i=0; i<=OrdersHistoryTotal(); i++) {//смотрим историю счёта
мы смотрим всю историю от первого до последнего ордера. Но я нашла кусочек кода, который перебирает с последнего ордера -
for ( int i = OrdersHistoryTotal() - 1; i>= 0; i-- )

Теперь видимо надо так ввести сюда заданное количество последних ордеров N чтобы перебор ограничился этим количеством. Т.е. где то значение i надо сравнить с N

Можно так сделать? и как?

получить РЕАЛЬНО последний закрытый ордер можно по времени OrderCloseTime()

могу предположить что конструкция

for ( int i = OrdersHistoryTotal() - 1; i>= 0; i-- )

тоже начнет отрабатывать именно от последнего закрытого ордера! ( я понимаю что работает она от последнего закрытого ордера )


но учтите что в ИСТОРИИ может встретиться например СНЯТИЕ или ПОПОЛНЕНИЕ счета

потому лучше дополнить это аналитикой типа операции OrdersType() OP_SELL OP_BUY

при пополнении и снятии они отличаются от OP_SELL OP_BUY

 
RIDECRUFTER:

Вот код, попробуйте может это хотели.....



Да, хотел именно это... .

Спасибо.

 

Скажите ещё. При компиллировании в моем эксперте бывают ошибки. Чтобы найти строку в самом коде я раньше щёлкала по "ошибке" и красный кружочек указывал мне строку в коде. Но вот уже не первый раз замечаю - что при работе с моим теперешним экспертом после щелчка красный кружок встает вовсе не в той строке где есть ошибка. А в лучшем случае где нибудь рядом. А строк то в эксперте - около тысячи. Не сразу и найдёшь.

Что случилось? Почему так?

 
Rita:

Скажите ещё. При компиллировании в моем эксперте бывают ошибки. Чтобы найти строку в самом коде я раньше щёлкала по "ошибке" и красный кружочек указывал мне строку в коде. Но вот уже не первый раз замечаю - что при работе с моим теперешним экспертом после щелчка красный кружок встает вовсе не в той строке где есть ошибка. А в лучшем случае где нибудь рядом. А строк то в эксперте - около тысячи. Не сразу и найдёшь.

Что случилось? Почему так?

Ошибка ошибке рознь, компилятору например не дано понять в каком месте Вы хотели, но забыли поставить фигурную скобку...

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