Erros típicos e como lidar com eles quando se lida com o ambiente comercial - página 8

 
fxsaber:

A receita, como se costuma dizer, é universal:

  1. Atender uma ordem de mercado com identificação zero - sair imediatamente.
  2. MT5-OrderSend é reescrito para retornar sempre um resultado não zero - o código fonte foi postado em KB.
  3. Depois de cada pedido, enviar ou dormir para o passo 1.
Com esta abordagem, qualquer TC (100% absoluto) funcionará.

E não é disto que estou falando?

s vezes as pessoas têm uma estranha percepção da informação :)

Somente não sair imediatamente no pedido com identificação zero, mas seu processamento no mesmo tick - algum tipo de expectativa pré-definida.

O resto é tudo o que eu estava falando. Acontece que é o fundo :))))

 

Pensar sobre a adequação de seus TOR. Uma situação real que acontece todos os dias no MT4

  1. Nada está aberto.
  2. Você colocou BuyLimit e, em seguida, nenhum OrderSend.
  3. Depois de um tempo você encontrou 3 posições de compra e BuyLimit.
  4. Após um tempo você detecta 2 posições de compra e BuyLimit.
  5. Daqui a pouco você precisa fechar 5 posições de COMPRA.
  6. Daqui a pouco você precisa detectar 1 posição de COMPRA.
  7. Após algum tempo, você detecta o ponto 1.

Este é o mais fácil. Portanto, o modelo proposto contém

// Находит позицию соответствующего типа
bool PositionsScan( const string Symb, const ENUM_POSITION_TYPE Type );
Bem, e que nível de resiliência TC para escrever e para quem - cada um decide por si mesmo.
 
fxsaber:

  1. Nada foi aberto.
  2. Você estabelece um BuyLimit e, em seguida, nenhum OrderSend.
  3. Depois de um tempo você tem 3 posições BUY e BuyLimit.
  4. Depois de um tempo você tem 2 posições BUY e BuyLimit.
  5. Daqui a pouco você terá 5 posições de COMPRA.
  6. Daqui a pouco você precisa detectar 1 posição de COMPRA.
  7. Após um certo período de tempo, você detecta o ponto 1.

Portanto, BuyLimit é uma posição da EA. As outras são manuais.

Qualquer TS pode distinguir entre suas próprias posições e as de outros.

A conversa foi sobre suas próprias posições.

 
Artyom Trishkin:

Portanto, o BuyLimit é o estabelecido pela EA. As outras são manuais.

Qualquer TS pode distinguir entre o seu próprio e o de outra pessoa.

A conversa foi sobre suas posições.

Nada manualmente ou por outro Expert Advisor. Apenas um BuyLimit é exposto. Todas as posições BUY mencionadas têm a mesma magia do BuyLimit.

 
fxsaber:

Nada manualmente ou por outro conselheiro. Apenas um BuyLimit está definido. Todas as posições BUY mencionadas têm o mesmo número mágico que BuyLimit.

Portanto - execução parcial.

 
Artyom Trishkin:

Portanto - desempenho parcial.

Só isso.

 
fxsaber:

Influência QB para parar de postar código com bugs, eu acho que valeria a pena.

 
Artyom Trishkin:

Apenas não para sair imediatamente em uma ordem com identificação zero, mas para processá-la no mesmo carrapato - algum tipo de espera definida.

Sim, a saída imediata não é uma boa solução.

 
Comentários não relacionados a este tópico foram movidos para"Qualquer pergunta de novatos sobre MQL4, ajuda e discussão sobre algoritmos e códigos".
 
Ivan Ivanov:


2018.02.20 15:20:35.845 Pedido de compra nº 66745055 0.01 / 0.01 EURUSDeur no mercado feito em 610.625 ms

2018.02.20 15:20:35.935 Trades deal #5461453 comprar 0,01 EURUSDeur a 1,23403 feito (com base no pedido #66745055)

2018.02.20 15:20:35.845 TestBUY (EURUSDeur,M15) retcode=10009 deal=0 order=66745055

Se o pedido for atendido (10009) , por que negociar=0

Boa tarde!

Tenho uma pergunta semelhante para todos e especialmente para o fxsaber.
Parece ser uma pergunta primitiva, mas não consigo encontrar uma resposta para ela.
Aqui https://www.mql5.com/ru/forum/6343/page939 me disseram: "Tente procurá-lo. O fxsaber está trabalhando neste problema há algum tempo. O que deu certo, eu não sei, não estou interessado". Por isso, decidi perguntar-lhe.

A questão é esta. Abri posição e quero imprimir o conteúdo da MqlTradeResult:

        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
 //============================================================     
        if(OrderSend(request,result))       
        Print ("retcode = " +IntegerToString (result.retcode) + "; ");        
        Print ("deal = " +IntegerToString (result.deal) + "; ");
        Print ("order = " +IntegerToString (result.order) + "; "); 
        Print ("volume = " +DoubleToString (result.volume) + "; ");  
        Print ("price = " +DoubleToString (result.price) + "; ");

retcode, pedido e volume são impressos, mas o negócio e o preço são sempre zeros.
Por favor, me informe o que estou fazendo de errado e como ter acesso (pelo menos, imprima primeiro) ao conteúdo da estrutura de resultados?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2018.10.29
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...