Вопрос по функции OrderSelect - страница 2

 
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
for(int i=0;i<OrdersTotal();i++)
 

Новый вид искусства.

Торговая сатира.

Мне это нравится.

 
boopa26:

1. не требуется знание языка Си. mql4 - это различные функции

boopa26 не тратит время людей

  1. Вы думаете, что можете писать код, не зная, как писать код. Функции не имеют никакого значения.
    boopa26 : хочет написать функцию выбора ордеров для закрытия ордеров без циклов for или while.
    Тогда почему вы просто разместили код, который использует циклы? Вы тратите наше время.
  2. При наличии нескольких ордеров (один советник на нескольких графиках, несколько советников, ручная торговля)
 
for(last_index_inside_trade_pool=OrdersTotal()-1;last_index_inside_trade_pool>=0;last_index_inside_trade_pool--)

   {if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==1&&
       OrderMagicNumber()==magic_number&&
       OrderType()==OP_SELL)

       OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);


    if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==0)

       Print("OrderSelectError: ",GetLastError());}

трачу время, да? выглядит ли приведенный выше код так, как будто я трачу ваше время? эээ... наверное, нет WHRoeder

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

что думает boopa26

static int last_index_inside_trade_pool = OrdersTotal()-1

while last_index_inside_trade_pool >=0 do code below. do last_index_inside_trade_pool--.

код ниже находит заказ. проверяет заказ. закрывает заказ. делает GetLastError()

не понимает, хотя

if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==1&&
 
boopa26: Тратите время, да? Выглядит ли приведенный выше код так, как будто я трачу ваше время?
Да. Я задал два вопроса, а вы их полностью проигнорировали.
 

Тогда почему вы просто разместили код, который использует циклы?

Код с циклами может быть написан по-другому, чтобы сделать то же самое без циклов. пример

static int last_index_inside_trade_pool;
//below start()
last_index_inside_trade_pool=OrdersTotal()-1;

  if(OrdersTotal()>0&&
     iMA(NULL,0,1,0,MODE_SMMA,PRICE_CLOSE,1)>iMA(NULL,0,10,0,MODE_SMMA,PRICE_CLOSE,1)&&
     OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES)==1&&
     OrderMagicNumber()==99999&&
     OrderType()==OP_SELL)

    {last_index_inside_trade_pool--;
     OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);}

без циклов, но с тем же результатом. boopa26 предпочитает условия if циклам for, while циклам while.

Вы думаете, что можете писать код, не зная, как писать код. Функции не имеют значения.

Я знаю, как делать if условия while циклы for циклы basic математика. это хорошее начало WHRoeder. c программирование это c программирование. mql4 это mql4. ПОЧЕМУ? из-за ФУНКЦИЙ. mql4 делает пример программирования на c * () == и т.д., но не то же самое из-за функций.

 

какие переключатели заказывают выбор функции от 0 до 1?

if(OrderSelect(last_index_inside_trade_pool,SELECT_BY_POS,MODE_TRADES))==1

переключается ли функция order select с 0 на 1 после того, как сумма заказов становится больше нуля?


документация

"Возвращаемое значение

Возвращает true, если функция успешна, иначе - false. Чтобы получить информацию об ошибке, нужно вызвать функцию GetLastError()."

возвращает 1, если функция успешна?

 

Я люблю этого парня :-)

Вы пишете только на этом форуме или у вас есть другие ссылки?

Если вы выступаете на сцене, где можно купить билеты?

 

только этот форум

Эдди, вы знаете что-нибудь о функции выбора заказа?

 
boopa26:

Тогда почему вы просто разместили код, который использует циклы?

Код циклов может быть написан по-другому, чтобы выполнять те же функции без циклов. пример

без циклов, но с тем же результатом. boopa26 предпочитает условия if циклам for, while циклам while.

Вы думаете, что можете писать код, не зная, как писать код. Функции не имеют значения.

Я знаю, как делать if условия while циклы for циклы basic математика. это хорошее начало WHRoeder. c программирование это c программирование. mql4 это mql4. Почему? Из-за ФУНКЦИЙ.

И вы удивляетесь, почему ваш код до сих пор не работает? Потому что вы все еще не знаете "основ", которые, если бы вы следовали "шагу 1" и научились правильно кодировать на "C", вы были бы гораздо более искусны в кодировании на MQL (потому что он похож на C и C++)!

Вы даже не смогли понять "функции" (шаг 3)! С каких это пор"OrderSelect()" возвращает целое число, когда в документации ясно сказано, что она возвращает булево число? Вы даже не проверяете результат "OrderClose()" и не проверяете, не произошла ли ошибка во время выполнения в какой-либо части вашего кода!

Ваш результат: В итоге вы получили "сгоревший уголь", а поскольку вы отказываетесь следовать нашим советам, вы также тратите наше время!

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