Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1281

 
Vladimir Karputov:

Exemplo de contagem de quatro tipos de ordens pendentes em código Min Max para N Barras Martingal

Vladimir Karputov:

Exemplo de contagem de quatro tipos de ordens pendentes em código Min Max para N Barras Martingale 2

Vladimir Karputov:

Um exemplo de contagem de quatro tipos de ordens pendentes no código Min Max para N Barras Martingale 2




Vladimir, por alguma razão não conta as encomendas bylimit????

int count_buy_limits = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
{
count_buy_limits+++;
}
}

 
Fergert Фергерт:


Vladimir, por alguma razão não conta as encomendas bylimit????

int count_buy_limits = 0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
{
count_buy_limits+++;
}
}

1. Insira o código correctamente
2. Mostrar todo o código.
4. Imagem da janela com posições e ordens pendentes
 
Vladimir Karputov:
1. Inserir correctamente o código
2. Mostrar todo o código
4. Imagem da janela com posições e ordens pendentes

Não há erros de compilação.

AQUI ESTÁ O CÓDIGO:

#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>
#include <Trade\SymbolInfo.mqh>

CTrade      o_trade;
COrderInfo  o_orderInfo;
CSymbolInfo o_symbolInfo;

MqlTradeRequest   order_req={0}, buylimit_req1={0}, buylimit_req2={0}, sellstop_req3={0};
MqlTradeResult    order_res={0}, buylimit_res1={0}, buylimit_res2={0}, sellstop_res3={0};

//double   lot_r    = GlobalVariableGet("glot"); // Глобальная переменная
//double   lot_r    = 0.33;
double   lot_r    = NormalizeDouble(AccountInfoDouble(ACCOUNT_BALANCE)/15000,2);

int      tp_r     = 125;

double   lot_bl1  = 2.5;
double   lot_bl2  = 3;

double   lot_v    = NormalizeDouble(lot_r + (lot_r * lot_bl1) + (lot_r * lot_bl2), 2);

int      set_bl1  = 500;   
int      set_bl2  = 1000;
int      set_v    = 1100;

int      tp_bl1   = 70;
int      tp_bl2   = 480;

int OnInit()
  {
      order_req.action           = TRADE_ACTION_DEAL;
      order_req.symbol           = _Symbol;
      order_req.price            = SymbolInfoDouble(order_req.symbol, SYMBOL_ASK);
      order_req.volume           = lot_r;
      order_req.tp               = order_req.price+tp_r*_Point;
      order_req.type             = ORDER_TYPE_BUY;
      order_req.type_filling     = ORDER_FILLING_FOK;
      
      buylimit_req1.action       = TRADE_ACTION_PENDING;
      buylimit_req1.symbol       = _Symbol;
      buylimit_req1.volume       = NormalizeDouble(lot_r*lot_bl1, 2);
      buylimit_req1.price        = SymbolInfoDouble(buylimit_req1.symbol, SYMBOL_ASK)-set_bl1*_Point;
      buylimit_req1.tp           = order_req.price-tp_bl1*_Point;
      buylimit_req1.type         = ORDER_TYPE_BUY_LIMIT;
      buylimit_req1.type_filling = ORDER_FILLING_RETURN;
      buylimit_req1.expiration   = ORDER_TIME_GTC;
      buylimit_req1.magic        = 01;
      
      buylimit_req2.action       = TRADE_ACTION_PENDING;
      buylimit_req2.symbol       = _Symbol;
      buylimit_req2.volume       = NormalizeDouble(lot_r*lot_bl2, 2);
      buylimit_req2.price        = SymbolInfoDouble(buylimit_req2.symbol, SYMBOL_ASK)-set_bl2*_Point;
      buylimit_req2.tp           = order_req.price-tp_bl2*_Point;
      buylimit_req2.type         = ORDER_TYPE_BUY_LIMIT;
      buylimit_req2.type_filling = ORDER_FILLING_RETURN;
      buylimit_req2.expiration   = ORDER_TIME_GTC;
      buylimit_req1.magic        = 02;
      
      sellstop_req3.action       = TRADE_ACTION_PENDING;
      sellstop_req3.symbol       = _Symbol;
      sellstop_req3.volume       = NormalizeDouble(lot_v, 2);
      sellstop_req3.price        = SymbolInfoDouble(sellstop_req3.symbol, SYMBOL_ASK)-set_v*_Point;
      sellstop_req3.sl           = buylimit_req2.price + 10*_Point;
      sellstop_req3.type         = ORDER_TYPE_SELL_STOP;
      sellstop_req3.type_filling = ORDER_FILLING_RETURN;
      sellstop_req3.expiration   = ORDER_TIME_GTC;
      
   
   if(OrdersTotal()==0 && PositionsTotal() == 0)
      {
         OrderSend(order_req, order_res);
         OrderSend(buylimit_req1, buylimit_res1);
         OrderSend(buylimit_req2, buylimit_res2);
         OrderSend(sellstop_req3, sellstop_res3);
      }
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {

  
  }
 
 void OnTick()
  {
       int count_buy_limits = 0;
       for(int i=OrdersTotal()-1; i>=0; i--)
        {
          if(o_orderInfo.OrderType()==ORDER_TYPE_BUY_LIMIT)
               {
                  count_buy_limits++;
               }
        }   
      if(count_buy_limits < 2 || PositionsTotal() == 0)
         {
            for(int r=PositionsTotal()-1; r>=0; r--)
               {
                  ulong ticket=PositionGetTicket(r);
                  o_trade.PositionClose(ticket);   
               }  
      
            for(int o=OrdersTotal()-1; o>=0; o--)
               {
                  ulong ticket1=OrderGetTicket(o);
                  o_trade.OrderDelete(ticket1);
               }
      ExpertRemove();
         }
  }
//+------------------------------------------------------------------+
Arquivos anexados:
001.jpg  173 kb
 
Fergert Фергерт:

Não há erros de compilação...

AQUI ESTÁ O CÓDIGO:

Rever cuidadosamente o meu exemplo e o vosso exemplo. Não se pode copiar sem sentido. É preciso pensar um pouco. Procure por um erro no seu código.

Insira o código correctamente (usando o botão Código- corrigi a sua mensagem da primeira vez)

 
Vladimir Karputov:

Olhem cuidadosamente para o meu exemplo e para o vosso exemplo. Não se pode copiar sem sentido. É preciso pensar um pouco. Procure por um erro no seu código.

Insira o código correctamente (usando o botão - corrigi a sua mensagem pela primeira vez)

Sim, já percebi...
 
Fergert Фергерт:
Sim, tenho tudo...

Sim, esqueceu-se que, se contornar o laço, tem de REPARTIR em cada iteração:

      if(m_order.SelectByIndex(i))     // selects the pending order by index for further access to its properties

Referência:

SelectByIndex

Selecciona uma encomenda para acesso posterior pelo índice especificado

Документация по MQL5: Стандартная библиотека / Торговые классы / COrderInfo / SelectByIndex
Документация по MQL5: Стандартная библиотека / Торговые классы / COrderInfo / SelectByIndex
  • www.mql5.com
SelectByIndex(int) - COrderInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Karputov:

Sim, esqueceu-se que, se contornar o laço, tem de REPARTIR em cada iteração:

Referência:

SelectByIndex

Selecciona uma encomenda para acesso posterior pelo índice especificado

Sim. My bad..... MUITO OBRIGADO VLADIMIR!!!!)))) Boa sorte para si......
 
Boa tarde a todos os membros do fórum. Não consigo perceber como usar os cursores. Li a ajuda, mas ainda não a consegui perceber. Eu li a ajuda, mas ainda não a compreendo. Quero fazer leituras de MA rápido em 10 e 15 bares. Quero obter MA lenta em 10 e 15 barras, mas a minha cabeça está a ficar confusa. Estou confuso. Usei código padrão e ajuda. Ajudar quem sabe como implementar este código. Obrigado de antemão.
 

Boa tarde.

Não há migração para"shared hosting" quando as transacções estão abertas?

Ou outra razão?


Encerrei os negócios, de qualquer forma não está a migrar.

Trabalhos e cargas de peritos em todo o lado, qual poderá ser o problema?

Виртуальный хостинг для MetaTrader 5
Виртуальный хостинг для MetaTrader 5
  • www.mql5.com
Самый быстрый виртуальный выделенный сервер (VPS) для трейдинга на форексе от производителей терминала MetaTrader 4/5
 
Aleksandr Prishenko:

Boa tarde.

Não há migração para"shared hosting" quando as transacções estão abertas?

Ou outra razão?


Encerrei os negócios, de qualquer forma não está a migrar.

O Expert Advisor trabalha e está carregado em todo o lado, qual poderá ser o problema?

O problema está na EA. A propósito, as regras de alojamento partilhado proíbem dlls.

Razão: