Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 162

 
ALXIMIKS:

+ где-то читал что полезно открытые тикеты при селекте также проверять по времени закрытия OrderClosetime ( у них он = 0 ).
Это при выборе по тикету. Здесь - выбор по индексу.
 

Здравствуйте!

Как обычно нужна помощь, не могу разобраться как правильно выбирать отложенные ордера по магическому номеру. Можете кто-нибудь скинуть код, чтоб на примере посмотреть как это делается. Заранее спасибо!)

 
zaqwsx123:

Здравствуйте!

Как обычно нужна помощь, не могу разобраться как правильно выбирать отложенные ордера по магическому номеру. Можете кто-нибудь скинуть код, чтоб на примере посмотреть как это делается. Заранее спасибо!)


ALXIMIKS 11.09.2013 21:36 #

void DeletePendingOrders()
{
    int NumberOfTry,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1)
      {
         ticket = OrderTicket();
         NumberOfTry=0;

         while (NumberOfTry < 5)
         {
            while (!IsTradeAllowed()) Sleep(5000);
      
            if (OrderDelete(ticket, Red))
                breake;
            else
                err = GetLastError();
      
            if (err > 0)
            { 
              Print(NumberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000);  NumberOfTry++;
            }
         }
      }
   }
}

кто-то когда-то просил помощь с етим кодом, тут пример удаления всех отложек

не факт что код всегда будет в тестере адекватен, про реал молчу

 
ALXIMIKS:

кто-то когда-то просил помощь с етим кодом, тут пример удаления всех отложек

не факт что код всегда будет в тестере адекватен, про реал молчу

Блин, вот мне непонятно, если вы не уверены в коде, нафига его показываете человеку, задающему вопрос? Отвечать всегда нужно верно, а не "может быть получится - я там ошибок понаделал"...
 
zaqwsx123:

Здравствуйте!

Как обычно нужна помощь, не могу разобраться как правильно выбирать отложенные ордера по магическому номеру. Можете кто-нибудь скинуть код, чтоб на примере посмотреть как это делается. Заранее спасибо!)

Выбирает любой заданный ордер, открытый самым последним и возвращает его тикет. Если такого ордера нет, то возвращает -1 :

//-----------------------------------------------------------------------------+
int GetTicketLastOpenOrder(string sy, int op, int mn) {
   int   i, j=-1, t=0, k=OrdersTotal()-1;
   for (i=k; i>=0; i--) {                       // цикл от конца к началу
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()!=mn)   continue;// если магик не тот - переходим к следующему
         if (OrderSymbol()!=sy)        continue;// если символ не тот - переходим к следующему
         if (OrderType()!=op)          continue;// если тип не тот - переходим к следующему
         if (t<OrderOpenTime()) {   // выбран нужный, ...
            t=OrderOpenTime();      // ... ищем последний ...
            j=i;                    // ... открытый ордер
            }
         }
      else Print("FUNC GetTicketLastOpenOrder() ошибка выбора ордера "+GetLastError());
      }
   if (OrderSelect(j,SELECT_BY_POS)) return(OrderTicket()); // если найден ордер, вернём его тикет
   return(-1);                                              // иначе - возвращаем -1
}
//-----------------------------------------------------------------------------+
 
artmedia70:
Блин, вот мне непонятно, если вы не уверены в коде, нафига его показываете человеку, задающему вопрос? Отвечать всегда нужно верно, а не "может быть получится - я там ошибок понаделал"...

Ну, человек такоим образом самоутверждается.

Он же тут уже демонстрировал свой гонор.

 
PapaYozh:

Ну, человек такоим образом самоутверждается.

Он же тут уже демонстрировал свой гонор.

Ну... кто-то жён своих лупит, кто-то по форумам тявкает, кто-то революции свершает... Люди разные. Каждому - своё.
 
artmedia70:
Ну... кто-то жён своих лупит, кто-то по форумам тявкает, кто-то революции свершает... Люди разные. Каждому - своё.

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

то что ему лучше ждать 8 часов ответ от проффесианалов ?

Или что бы оперативно помогли направить ход мыслей в верное русло ( если человек конечно не безнадежен...).

Мною был выбран второй вариант, и считаю его оправданным, думайте что хотите - будьте счастливы.

 
ALXIMIKS:
artmedia70:
Ну... кто-то жён своих лупит, кто-то по форумам тявкает, кто-то революции свершает... Люди разные. Каждому - своё.

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

то что ему лучше ждать 8 часов ответ от проффесианалов ?

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

Это я к тому, что когда Вы отвечаете новичку, подумайте о том, что, возможно, у него совсем мало опыта.

 

Есть библиотека hoz_LoggingToAnywhere@Library.mq4, которая вызывается из заголовочного файла hoz_Base@Include.mqh

При компиляции библиотеки hoz_LoggingToAnywhere@Library.mq4 в журнале вижу:

'StringConcatenate' - incompatible types        D:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\include\hoz_Base@Include.mqh (75, 12)

Иду туда.. А там вижу:

   //---- Контролируем возможные ошибки
   fPrint (StringConcatenate ("fInitBase() => ", fErrorToString (bi_Err)));

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

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