Pergunta sobre a função OrderSelect

 

boopa26 pode escrever código de envio de ordens, mas não pode escrever ordem selecionar função para fechar ordens. quer escrever ordem selecionar função para fechar ordens sem para ciclos ou enquanto ciclos. boopa26 quer escrever ordem selecionar função para fechar ordens com condições mas boopa26 não entende para montar ordem selecionar função para fechar ordens


exemplo de envio de pedido de compra

if(OrderTotal()==0)OrderSend(Symbol(),OP_BUY,.1,Ask,3,0,0,NULL,9,0,clrNONE);


exemplo de ordem selecionar. boopa26 não entende

OrderSelect(índice int, int select, int pool)


o que é índice int?

o que é int select?

o que é int pool?

como o int select faz?

 

Você leu a documentação?

Parameters

bilhete

[em] Índice de pedidos ou bilhete de pedido, dependendo do segundo parâmetro.

selecione

[em] Seleção de bandeiras. Pode ser qualquer um dos seguintes valores:

SELECT_BY_POS - índice no pool de ordens,
SELECT_BY_TICKET - índice é bilhete de pedido.

pool=MODE_TRADES

[em] Índice de ordem opcional. Utilizado quando o parâmetro selecionado é SELECT_BY_POS. Pode ser qualquer um dos seguintes valores:

MODE_TRADES (default)- ordem selecionada do pool de negociação (ordens abertas e pendentes),
MODE_HISTÓRIA - ordem selecionada do pool histórico (ordem fechada e cancelada).


 
lendo a documentação agora https://docs.mql4.com/trading/orderselect
 
gumrai poderia ter incluído link de documentação. apenas brincadeira. obrigado gumrai
 
bool  OrderSelect(
   int     index,            // index or order ticket
   int     select,           // flag
   int     pool=MODE_TRADES  // mode
   );

boopa26 quer fechar ordens abertas, então boopa escolhe MODE_TRADES como terceiro parâmetro


boopa26 do SELECT_BY_POS ou SELECT_BY_TICKET ? boopa26 não sabe

SELECT_BY_POS //index inside order pool,
SELECT_BY_TICKET //index is order ticket.
 

boopa26 escolhe MODE_TRADES como terceiro parâmetro

boopa26 escolhe SELECT_BY_POSITION como segundo parâmetro

boopa26 escolhe o índice de pedidos como primeiro parâmetro


exemplo

static int order_index;

if(OrderSelect(order_index,SELECT_BY_POSITION,MODE_TRADES)==1
 

https://docs.mql4.com/trading/orderclose

como o boopa26 funciona sem ciclos ou enquanto ciclos, mas com condições de fechar pedidos abertos com função de seleção de pedidos?

o fechamento do pedido de documentação requer que o ticket de pedido seja encontrado, mas boopa26 seleciona para encontrar a posição de pedido e não o ticket

bool  OrderClose(
   int        ticket,      // ticket
   double     lots,        // volume
   double     price,       // close price
   int        slippage,    // slippage
   color      arrow_color  // color
   );

1. selecione a ordem

2. Ordem de fechamento

não sabe como

 
//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Average sample expert advisor"

#define  MAGICMA  20131111
//--- Inputs
input double Lots          =0.1;
input double MaximumRisk   =0.02;
input double DecreaseFactor=3;
input int    MovingPeriod  =12;
input int    MovingShift   =6;
//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//--- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//--- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//--- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
            continue;
         //---
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//--- return lot size
   if(lot<0.1) lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//--- 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);
//--- sell conditions
   if(Open[1]>ma && Close[1]<ma)
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
//--- buy conditions
   if(Open[1]<ma && Close[1]>ma)
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| 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;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
//---
  }
//+------------------------------------------------------------------+
o conselheiro especialista emmédia móvel usa para o ciclo para fechar pedidos abertos
 

Eu acho que "boopa26" precisa fazer o seguinte:

  1. Primeiro, o "boopa26" precisa primeiro aprender o básico da codificação (como em C).
  2. Depois o "boopa26" precisa ler e seguir o Livro/Tutorial (mesmo que seja antigo e desatualizado).
  3. Ao mesmo tempo, "boopa26" precisa ler toda a documentação com atenção especial para as atualizações MQL4 que não são mencionadas no Livro/Tutorial.
  4. Então o "boopa26" precisa estudar vários exemplos de código para Indicadores, Expert Advisors (EAs) e Scripts na Base de Código do usuário.
  5. Então o "boopa26" pode começar a fazer seus próprios Indicadores, mas muito simples, e construir lentamente sobre eles até ser capaz de entender e fazer Indicadores mais complexos.
  6. Então "boopa26" pode começar a fazer seus próprios, mas muito simples EAs e lentamente construir sobre eles até que seja totalmente capaz de entender e fazer EAs mais complexos.

O "boopa26" também deve aprender uma lição muito importante, que o "boopa26" não deve pular todos os passos necessários, pois caso contrário o "boopa26" estará apenas desperdiçando o tempo de todos, e ao invés de um "belo bolo", tudo o que o "boopa26" terá será "carvão queimado".

 
FMIC:

Eu acho que "boopa26" precisa fazer o seguinte:

  1. Primeiro, o "boopa26" precisa primeiro aprender o básico da codificação (como em C).
  2. Depois o "boopa26" precisa ler e seguir o Livro/Tutorial (mesmo que seja antigo e desatualizado).
  3. Ao mesmo tempo, "boopa26" precisa ler toda a documentação com atenção especial para as atualizações MQL4 que não são mencionadas no Livro/Tutorial.
  4. Então o "boopa26" precisa estudar vários exemplos de código para Indicadores, Expert Advisors (EAs) e Scripts na Base de Código do usuário.
  5. Então o "boopa26" pode começar a fazer seus próprios Indicadores, mas muito simples, e construir lentamente sobre eles até ser capaz de entender e fazer Indicadores mais complexos.
  6. Então "boopa26" pode começar a fazer seus próprios, mas muito simples EAs e lentamente construir sobre eles até que seja totalmente capaz de entender e fazer EAs mais complexos.

"boopa26" também deve aprender uma lição muito importante, que "boopa26" não deve pular todos os passos necessários, pois caso contrário "boopa26" estará apenas perdendo o tempo de todos, e ao invés de um "belo bolo", tudo o que ele terá será "carvão queimado".

1. não precisa de conhecimento c. mql4 é função diferente

2. Já li o livro

3. Já leia a documentação

4. Código escrito já

5. ?

6. ?

boopa26 não faz as pessoas perderem tempo

Professor de FMIC que ensina boopa26 a fazer bolos de carvão vegetal

FMIC classe bolo de carvão vegetal