Comprimento máximo de um nome simbólico no FOREX - página 8

 
fxsaber:

Na verdade, é uma martelada. Uma vez que é possível não esperar que um comércio seja rastreado. A única não alternativa da onTradeTransaction é se o pedido for rejeitado. Por exemplo, se não houver dinheiro suficiente.


Acontece que fizemos uma centena de Async-transactions preenchendo a matriz (lista) com os devidos mages e requisitantes. Assim que a OnTradeTransaction recebeu a resposta sobre a busca, removemos o elemento da lista. Assim que vimos o destaque de um majestoso da lista entre os vivos/mortos, removemos a entrada. É assim que o controle é mais ou menos alcançado. Você entendeu bem?


Você ainda pode usar outros campos - SL/TP, Comentário - em vez de magia.

Sim, exatamente como isso. A OnTradeTransaction nunca é desativada, apenas a função de verificação é chamada periodicamente (se a OnTradeTransaction não for acionada). Assim que tudo com o pedido é detectado, as bandeiras são zeradas.

Como posso utilizar o comentário como SL/TP?

 
fxsaber:

Por que esperar quando você pode verificar cada On-stream?

Porque em minhas estratégias o que importa é o que veio na OnTradeTransaction.

Eu não uso On-puke :)

Adicionado

Se o evento chegou naOnTradeTransaction então tudo foi reinicializado, então não há nenhum problema.

 
prostotrader:

Como usar o comentário ronyatno, mas como SL/TP?

Acima complementado...

Você define o SL falso, no valor do qual a informação que você precisa é armazenada. Por exemplo, foi assim que armazenei o preço de abertura de uma posição na MT4, que foi buscado através do Limitador.

 
prostotrader:

Porque em minhas estratégias é importante exatamente o que veio na OnTradeTransaction.

Portanto, certifique-se de verificar se há magia diretamente na OnTradeTransaction. Eu o faria dessa maneira.


Em geral, a idéia de megaega como alternativa aos pedidos é legal!

 
fxsaber:

Acima complementado...

Você define um SL falso, no valor do qual as informações necessárias são armazenadas. Por exemplo, foi assim que armazenei o preço de abertura de uma posição na MT4, que foi preenchida através do Limitador.

É possível definir SL quando não há posição?

 
prostotrader:

É possível expor o SL se não houver posição?

Pode não ser possível fazer isso para os markdowns. Eu tenho negociado através de ordens limitadas apenas há muito tempo.

 
fxsaber:

Pode não ser possível fazer isso para os mercados. Há muito tempo eu venho negociando apenas através de ordens limitadas.

"É um pouco estranho armazenar informações como essa. Bem, sim, você deve saber.

Como o mercado FOREX não me interessa nada, 6 símbolos de nome de símbolo e 65365 tags em um gráfico são mais do que suficientes para minhas necessidades,

Além disso, posso realizar apenas 2000 transações por dia de negociação.

 
prostotrader:

Como o mercado FOREX não me interessa nada, os 6 caracteres do nome do símbolo e 65365 mogic em um gráfico são mais do que suficientes para as minhas necessidades,

Além disso, posso realizar apenas 2000 transações em um dia de negociação.

Não se trata de forex. E há os mesmos problemas com a OnTradeTransaction. Portanto, uma solução universal

#include <crc64.mqh> // https://www.mql5.com/en/blogs/post/683577

string GetMagicString()
{
  return(MQLInfoString(MQL_PROGRAM_PATH/*MQL_PROGRAM_NAME*/) + _Symbol + (string)ChartID()/* + (string)_Period*/);
}

// Формирует мэджик с изменяемой частью ReserveBits для прописывания туда Num-значения
ulong GetMagic( const int Num = 0, const int ReserveBits = 12 )
{
  uchar Bytes[];
  
  return((crc64(0, Bytes, (StringToCharArray(GetMagicString(), Bytes))) << ReserveBits) + (Num % (1 << ReserveBits)));
}

// Определяет, свой ли исходный мэджик с изменяемой частью ReserveBits
bool IsMyMagic( const ulong Magic, const int ReserveBits = 12 )
{
  return(GetMagic(0, ReserveBits) >> ReserveBits == Magic >> ReserveBits);
}

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{  
  for (int i = 0; i < 10; i++)
  {
    PRINT(GetMagic(i));
    PRINT(IsMyMagic(GetMagic(i)));
  }
  
  PRINT(IsMyMagic(MathRand()));
}
 

Naturalmente, o modelo do evento é inconveniente neste caso. Por exemplo, se você quiser fazer operações Async sem sair do On-function e obter resultados com elas.

Agora podemos liberar este comportamento através de uma muleta.

  1. Escrevemos um indicador (sem buffers e variáveis de entrada) com a OnTradeTransaction que escreve todas as transações em um local público (por exemplo, em um recurso).
  2. O Expert Advisor cria este indicador através do iCustom.
  3. Em qualquer lugar de execução, o Consultor Especialista pode visualizar todas as transações recebidas escritas pelo indicador.

Isto permite uma grande flexibilidade.

Por exemplo, podemos enviar uma centena de ordens Async e esperar sua execução sem sair do fundo do poço, continuando a executar nosso código.


Estamos falando, é claro, de Pedidos. E o tema mágico não tem nada a ver com isso.


Embora faria sentido que os desenvolvedores escrevessem as transações para uma matriz acessível ao público. Sem indicador.

 
fxsaber:

Não se trata de forex. E há os mesmos problemas com a OnTradeTransaction. Portanto, uma solução universal.

Embora seja possível (e ainda melhor) fazer sem operações bitwise - apenas crc64 + Num.
2018.08.25 22:10:48.913 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091264
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091265
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091272
2018.08.25 22:10:48.914 Test (BR-9.18,M1)       1749671450686091273

Há coincidências...