Erros, bugs, perguntas - página 1453

 
Vladislav Andruschenko:

a tabela, no entanto, mostra os seguintes valores:

Preencher ou Matar

SYMBOL_FILLING_FOK

1

Esta política significa que um acordo só pode ser executado com o volume especificado. Se o montante necessário de um instrumento financeiro não estiver actualmente disponível no mercado, a ordem não será executada. O volume necessário pode ser preenchido utilizando várias ofertas disponíveis no mercado neste momento.

Imediato ou Cancelar

SÍMBOLO_ENCHIMENTO_IOC

2

Neste caso, um comerciante concorda em executar um negócio com o volume máximo disponível no mercado dentro do indicado na ordem. Caso a encomenda não possa ser completamente preenchida, o volume disponível da encomenda será preenchido, e o volume restante será cancelado. A possibilidade de utilizar ordens do COI é determinada no servidor comercial.

Regresso

Sem identificador

Esta política é utilizada apenas para ordens de mercado (Compra e Venda), ordens de limite e stop limit e apenas para os símbolos com execução no Mercado ou na Bolsa. Em caso de enchimento parcial de um mercado ou encomenda limite com volume restante não é cancelado, mas processado posteriormente.

Mas deve haver uma mistura de dados!

Ainda não leu toda a Ajuda.

Pode definir mais de um modo para cada símbolo através de uma combinação de bandeiras. A combinação de bandeiras é expressa por uma operação lógica OR (|), por exemploSYMBOL_FILLING_FOK|SYMBOL_FILLING_IOC. Para verificar se um determinado modo é permitido para um instrumento, o resultado da lógica AND (&) deve ser comparado com a bandeira do modo.

 

Para símbolos, a propriedade SYMBOL_FILLING_MODE significa uma combinação de bandeiras - ou seja, descreve quais os modos de preenchimento permitidos quando se comercializa aquele símbolo.

Já tentou fazer o cheque tal como está escrito na documentação?

В режимах исполнения "По запросу" и "Немедленный" для рыночных ордеров всегда используется политика заполнения Все/Ничего, а для лимитных ордеров - режим "Вернуть". В данном случае, при от отсылке ордеров функциями OrderSend или OrderSendAsync тип заполнения для них можно не указывать.

Nos modos de execução "Por Mercado" e "Bolsa", a política de preenchimento de "Devolução" é sempre permitida para todos os tipos de ordens. A permissibilidade dos outros tipos de encomenda pode ser verificada usando as propriedades SYMBOL_FILLING_FOK e SYMBOL_FILLING_IOC.

Exemplo:

//+------------------------------------------------------------------+
//| verifica a permissibilidade do modo de enchimento especificado |
//+------------------------------------------------------------------+
bool IsFillingTypeAllowed(string symbol,int fill_type)
{
//--- obter o valor do bem descrevendo o modo de enchimento
int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//---- retornar verdadeiro se o modo fill_type estiver activado
return((filling&fill_type)==fill_type);
}


 
Rashid Umarov:

Para símbolos, a propriedade SYMBOL_FILLING_MODE significa uma combinação de bandeiras - ou seja, descreve quais os modos de preenchimento permitidos quando se comercializa aquele símbolo.

Já tentou fazer o cheque tal como está escrito na documentação?


A seguinte solução funcionou

         switch((int)SymbolInfoInteger(Symbol(), SYMBOL_FILLING_MODE))
   {
   case SYMBOL_FILLING_FOK:
      request.type_filling=ORDER_FILLING_FOK;
      break;
   case SYMBOL_FILLING_IOC:
      request.type_filling=ORDER_FILLING_IOC;
      break;
   default:
      request.type_filling=ORDER_FILLING_RETURN;
   }
 
Vladislav Andruschenko:

esta solução ajudou

Se ler a ajuda com mais atenção, verá que o caso quando ambos os modos estão disponíveis não é tratado - o valor de SymbolInfoInteger será(SYMBOL_FILLING_FOK | SYMBOL_FILLING_IOC).
 

E pode verificá-lo no servidor "RoboForex-MetaTrader 5" com este código:

//+------------------------------------------------------------------+
//|                                                 Info_FILLING.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property description "Варианты исполнения ордера по объему"
#include<Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
// Все/Ничего     SYMBOL_FILLING_FOK   1
// Все/Частично   SYMBOL_FILLING_IOC   2
// Вернуть        Идентификатор отсутствует
   Print("Все/Ничего: ",IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_FOK));
   Print("Все/Частично: ",IsFillingTypeAllowed(Symbol(),SYMBOL_FILLING_IOC));
   Print("Вернуть: ",IsFillingTypeAllowed(Symbol(),NULL));

   CTrade oTrade;
   switch((int)SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE))
     {
      case SYMBOL_FILLING_FOK:
         Print("ORDER_FILLING_FOK");
         break;
      case SYMBOL_FILLING_IOC:
         Print("ORDER_FILLING_IOC");
         break;
      default:
         Print("ORDER_FILLING_RETURN");
     }
  }
//+------------------------------------------------------------------+ 
//| проверяет разрешенность указанного режима заполнения             | 
//+------------------------------------------------------------------+ 
bool IsFillingTypeAllowed(string symbol,int fill_type)
  {
//--- получим значение свойства, описывающего режим заполнения 
   int filling=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
//--- вернем true, если режим fill_type разрешен 
   return((filling&fill_type)==fill_type);
  }
//+------------------------------------------------------------------+

E o resultado da troca:

2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Все/Ничего: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Все/Частично: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      Вернуть: true
2015.12.22 18:13:09.946 Info_FILLING (AUDCAD.m,D1)      ORDER_FILLING_RETURN


Pode ver que a variante do interruptor não nos está a dizer a verdade. Mas aqui está um exemplo da documentação que nos dá o quadro completo.

 

Qual é o problema com

MarketInfo(Symbol(),MODE_MARGININIT) e SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL)

Porque é que devolvem zeros ?????

 
Vladimir Pastushak:

Qual é o problema com

MarketInfo(Symbol(),MODE_MARGININIT) e SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL)

Porque é que devolvem zeros ??????

Há seis meses que estou à espera de um help desk com um problema de cálculo de margens. A informação no help desk não corresponde à informação no site a informação no help desk e no site não corresponde à informação real.

Cálculo colateral

Erros,MetaTrader 5 MQL5,Aberto,Iniciado: 2015.07.13 16:23,#1259415

Aqui está um exemplo da ajuda da MQL5 :

SÍMBOLO_CALC_MODE_FOREX

Modo Forex - cálculo de lucro e margem para Forex

Margem:Lotes*Tamanho_de_contrato/Alavancagem

Esta é uma fórmula para calcular uma cotação avançada. A cotação inversa será diferente para a cruz, e a terceira para a cruz. O site tem o mesmo erro.

Por isso, qualquer que seja o tipo de mercado que tome, as fórmulas são bastante duvidosas.

E descobri hoje que MarketInfo(Symbol(),MODE_MARGININIT) e SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL) devolvem zeros.

Mas neste recurso há também escritos estranhos, https://metaquotes5.wordpress.com/2012/08/ tanto quanto sei é o blogue MetaQuotes.

What are Expert Magic Numbers?
  • 2012.08.11
  • skebanga
  • metaquotes5.wordpress.com
Expert magic numbers are ids given to a particular expert advisor. Care should be taken to ensure the ids are unique. This is because the magic number is used by the MetaTrader back end to know which expert advisor to send information to. For example, when a trade notification is...
 
Há inimigos por todo o lado. Ninguém nos quer excepto as nossas mulheres no dia de pagamento.
 
Алексей Тарабанов:
Há inimigos em todo o lado. Ninguém precisa de nós a não ser as nossas mulheres no dia de pagamento.

Saudações Alexey

Se conseguir reescrever o indicador iPulsar no MT5, por favor reescreva-o na base de código

Obrigado


 

Olá colegas!

Desculpe, fiz uma confusão no fio principal antes de ver este.

Por favor, aconselhar como resolver este problema: o MT5 Expert Advisor on FORTS continua a mostrar erro 10022: "Invalidorder expiry date in request" ao colocar ordens BAY_STOP ou SELL_STOP.

A data de expiração não é importante para mim, mas não consigo encontrar nenhum parâmetro que apenas defina a ordem. Não temos tal problema em forex. O meu corretor está ABERTO. O erro ocorre no testador.