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

 
Vitaly Muzichenko:

Talvez queira que os terminais com os gráficos enviem a marcação para um servidor web e que os outros a recebam e a exibam no gráfico. Não é uma tarefa fácil, mas é exequível

Como o posso fazer ou o que devo ler para aprender a fazê-lo? A marcação é automaticamente enviada e aceite por outros utilizadores ou precisa de ser carregada como modelos de cada vez?
 
Илья:
Como faço isto ou o que devo ler para saber como isto pode ser feito? A marcação é automaticamente enviada e aceite por outros utilizadores ou precisa de ser carregada separadamente de cada vez como modelos?

Penso que é necessário um pequeno botão, e depois de ter feito uma marcação, carregue nele e envie-o. Nos receptores é o mesmo, se quiser obter uma marcação, então prima o segundo botão. Total de 2 botões no gráfico, e não há custo de recursos para o monitorizar constantemente

 

Como posso limitar a colocação de ordens se existe sempre uma posição no mercado depois de activar as ordens de limite?

em forex, eu costumava verificar o número de ordens - posições

if( CalculateBUYPositions()==1)
//// 
 int CalculateBUYPositions()
  {
   int total=0;
//ENUM_ORDER_TYPE   order_type=ORDER_TYPE_BUY;
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
                   if(m_position.PositionType()==POSITION_TYPE_BUY)
                  
              {
            total++;
            }
//---
   return(total);
  }
  //

As ordens de limite devem ser estabelecidas se houver apenas uma posição

Como é que posso substituir esta condição?

 
lil_lil:

Como posso limitar a colocação de ordens se existe sempre uma posição no mercado depois de activar as ordens de limite?

em forex, fiz uma verificação sobre o número de ordens - posições

As ordens de limite devem ser estabelecidas se houver apenas uma posição

Como podemos substituir esta condição?

A questão não é clara. Está a confundir as ordens e as posições.

O código que citou, "CalculateBUYPositions()" calcula o número de posições de COMPRA.


Por favor, reformule a sua pergunta.

 
Vladimir Karputov:

A questão não é clara. As suas ordens e posições são confusas.

O código que citou, "CalculateBUYPositions()" calcula o número de PONTOS DE COMPRA.


Reescreva a sua pergunta.

Em forex, se eu tiver uma posição, coloco uma ordem limite e as ordens limite são activadas, o número de posições aumenta e a EA não coloca mais Limites.

Em forex, se houver um limite de posição e todas as ordens de limite forem activadas, o número de posições aumenta e não são colocadas mais ordens de limite. Eu preciso, uma alternativa igual à condição, -- "se houver uma posição" CalculateBUYPositions()==1

 
lil_lil:

Em forex se houver uma posição que eu ponha uma ordem de limite, as ordens de limite são activadas o número de posições aumenta, não são colocados mais limitadores pela EA.

No forex, se houver uma posição, a ordem limite é activada, o número de posições aumenta e não são colocadas mais ordens limite pela EA. Eu preciso, uma alternativa igual à condição, -- "se houver uma posição" CalculateBUYPositions()==1

Não, não é. Para esclarecer, já existe uma posição sobre o símbolo actual:

  • Nas contas de cobertura, assim que a ordem pendente for accionada, haverá MAIS UMA posição
  • sobre contas de compensação após o accionamento da ordem pendente
    • se a ordem pendente era para o símbolo actual então:
      • a posição existente irá aumentar
      • uma posição existente será diminuída
      • uma posição existente irá rolar
      • a posição existente irá inverter-se


Para esclarecer a sua pergunta: que tipo de conta procura e O QUE precisa de localizar.

 
lil_lil:

Como posso limitar a colocação de ordens se existe sempre uma posição no mercado depois de activar as ordens de limite?

em forex, eu costumava verificar o número de ordens - posições

As ordens de limite devem ser estabelecidas se houver apenas uma posição

Como pode esta condição ser alterada?

Isto pode ser determinado pelo número de negócios ou pelo número de ordens envolvidas na abertura e modificação de uma posição. Basta seleccionar o histórico para o bilhete da posição e verificar o número. Se houver uma variante de que a posição adicionou volume e depois foi parcialmente fechada por uma ordem de limite oposta ou de outra forma, teremos de percorrer as negociações e contar os tipos de negócios como DEAL_ENTRY_IN e/ou outros tipos.

Документация по MQL5: Торговые функции / HistorySelectByPosition
Документация по MQL5: Торговые функции / HistorySelectByPosition
  • www.mql5.com
Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть  в закладке "История" на панели "Инструменты" клиентского терминала. Функция...
 
Obrigado, eu comparo o lote da posição com o lote inicial, se não forem iguais saio.
 

Segundo dia a refazer o robô de MT4 a MT5. Estabelecimento de encomendas pendentes - funciona. Ajuda na MqlTradeRequest:

   else if(orderType==ORDER_TYPE_BUY_STOP)
     {
      request.type =ORDER_TYPE_BUY_STOP;                                // тип ордера
      price        =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // цена для открытия 
      request.price=NormalizeDouble(price,digits);                      // нормализованная цена открытия 
     }
   else if(orderType==ORDER_TYPE_SELL_STOP)
     {
      request.type     =ORDER_TYPE_SELL_STOP;                           // тип ордера
      price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;         // цена для открытия 
      request.price    =NormalizeDouble(price,digits);                  // нормализованная цена открытия 
     }

Em ambos os casos Ask - parece um erro. No segundo caso para SELL_STOP seria melhor usar Bid ????

 
STARIJ:

Segundo dia a refazer o robô de MT4 a MT5. Estabelecimento de encomendas pendentes - funciona. Ajuda na MqlTradeRequest:

Em ambos os casos Ask - parece um erro. No segundo caso, Bid seria melhor para SELL_STOP.


SELL abre por BID e fecha por ASK

Razão: