GetLotLastClosePos() - страница 2

 
liana:

С этим нормально.
См. пост выше - я внес в него правки...
 

Там возможно, что не было отложенного стопового ордера бай - как Вы указываете в вызове этой ф-ии.

Попробуйте ее вызвать с параметрами по умолчанию и посмотрите на результат, типа

double lotPending;
lotPending = GetLotLastOrder (NULL, -1, -1);
Print("lotPending == ",  lotPending);
 
liana:

Есть ли функция получения размера лота последней закрытой позиции?

Я же вам давал файл, который содержит перечень всех ссылок на все функции KimIV. Там найти любую функцию легко.
 
liana:

Спасибо! :)) Я вчера целый день в горах провела - так что я отдыхаю.

P.S. Я предпочитаю Campari + Orange.

Правильно ли указать размер лота вот так? (но почему-то не работает)

А что у вас не работает? Какие признаки, какие сообщения в логах? Может и лот не причём, может что-то другое.
 

посмотрел на функцию Кима, все ок кроме нескольких моментов, поправил часть кода:

  //for (i=0; i<k; i++) {
  for (i=k-1; i>=0; i--) {  // перебор с конца
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        //if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
        if (OrderType()<2) { // 2 проверки зачем если достаточно одной?
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              l=OrderLots();
              break; // зачем дальше перебирать если мы нашли последний ордер который соответствует нашим параметрам?
              //if (o<OrderCloseTime()) {
              //  o=OrderCloseTime();
              //  l=OrderLots();
              //  }
              }
            }
          }
        }
      }
    }
Ордера в истории расположены не в хаотичном порядке а по мере их записи туда, соответственно последний ордер - с самым большим временем закрытия. С учетом весьма медленной работы тестера, такие вещи критичны для тестов.























	          
 
keep87:

посмотрел на функцию Кима, все ок кроме нескольких моментов, поправил часть кода:

Ордера в истории расположены не в хаотичном порядке а по мере их записи туда, соответственно последний ордер - с самым большим временем закрытия. С учетом весьма медленной работы тестера, такие вещи критичны для тестов.


Вы в этом уверены?

На сколько процентов ?

 
FAQ:


Вы в этом уверены?

На сколько процентов ?

с учетом того что такой подход всегда на 100% работал во всех советниках написаных мной, то на 150% )

for(i=OrdersHistoryTotal()-1;i>=0;i--) {
   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
      // последний закрытый ордер
      break;
      }
   }
 
keep87:
с учетом того что такой подход всегда на 100% работал во всех советниках написаных мной, то на 150% )


До первой сортировки списка пользователем.

ЗЫ. Продолжайте писать игрушки для тестера...

 
FAQ:


До первой сортировки списка пользователем.

ЗЫ. Продолжайте писать игрушки для тестера...

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

P.S. комментарии явно намекающие на некомпетентность собеседника (по вашему мнению) оставьте при себе.

Файлы:
gettlast.mq4  1 kb
 

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

Или вы думаете, что все остальные настолько глупы, что ищут последний ордер по времени открытия\закрытия ?

Мало того, да же этого недостаточно, ибо не всегда вашему "последнему" ордеру присвоят наибольший тикет...

Просто надо немного думать, прежде чем давать советы.

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