Bibliotecas: MT4Orders - página 58

 
Igor Makanu:

testei o MT4Orders em relação ao uso de MQL5 puro (sem usar SB) https://www.mql5.com/ru/forum/357253/page4#comment_19593443

inequivocamente, nada no MT4Orders fica lento e funciona perfeitamente bem

Os instantâneos separados do MT4Orders não foram escritos em um terreno uniforme. Mas isso é real. É difícil criar freios no Tester.

 

Essa biblioteca é incrível!!! É muito fácil executar o código do MT4 no MT5. Muito obrigado

Tenho um problema: a função OrderTicket() não retorna o número correto quando a negociação é fechada. Esse é um problema real para acompanhar uma negociação quando ela é fechada.

Por exemplo, uma negociação nº 4584849 se tornará nº 38484939 quando for fechada.

Agradeço antecipadamente por sua ajuda

Este é o meu código em um script:

#include <MT4Orders1.mqh>
void OnStart()
  {
int n=OrdersTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
  Print("History");
  n=OrdersHistoryTotal();
//pLog(StringConcatenateV4("detectCloseTrade n=",n," ticket=",ticket));
   for(int i=n-1; i>=0; i--)
     {
      //---
      //if((ticket=HistoryOrderGetTicket(i))>0 && isMagic())
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderType()>=OP_BUY && OrderSymbol()==Symbol())
        {
         Print("MOH ",i, " ",OrderTicket());
        }
     }
}
 
Não se trata de um problema. Uma posição fechada no MT5 tem vários tickets. Todos eles funcionarão com SELECT_BY_TICKET.
Talvez você precise de OrderTicketID().
[Excluído]  
E como posso desativar todos os sprints e cálculos extras (se houver)? Não consigo encontrar isso nas definições
 
Maxim Dmitrievsky:
E como posso desativar todos os sprints e cálculos extras (se houver)? Não consigo encontrar isso nas definições

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MT4Orders

fxsaber, 2019.04.29 15:19

Se você precisar manter o uso do MT4Orders em seu produto sem falar, poderá cortar as partes relevantes da fonte da biblioteca ou colocar um stub universal
// Por meio de macros, eliminamos todas as dicas sobre a presença do MT4Orders.
#define Alert PrintTmp
#define Print PrintTmp
  void PrintTmp( string ) {}
  
  #include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006
#undef  Print
#undef  Alert
[Excluído]  
fxsaber:

Obrigado

 
Uma nuance da diferença entre MT4 e MT5.
#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Abriu um pedido e o selecionou
    OrderPrint();                                                                                     // Imprimiu seus dados
    
  OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0) // Abriu um pedido, mas não o selecionou.
  OrderPrint();                                                   // O MT4 retornará o mesmo resultado de antes, mas o MT5 não necessariamente.
}


Resultado no MT5.

        #827589598 2021.01.13 01:21:17.832 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0
        #827589601 2021.01.13 01:21:17.895 buy limit 1.00 EURSEK 10.06849 0.00000 0.00000 10.06949 0.00 0.00 0.00 0 // No MT4, a string seria a mesma que a anterior.


Após as operações de negociação (no Terminal, não no Testador), OrderLots(), OrderTicket() e outros valores podem ser alterados. Aqueles que converterem do MT4 devem levar isso em consideração.

 
fxsaber:

Após as operações de negociação (no Terminal, não no Testador), OrderLots(), OrderTicket() e outros valores podem ser alterados. Aqueles que se converterem do MT4 devem levar isso em consideração.

Da mesma forma, após OrdersTotal.

#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  if (OrderSelect(OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - 100 * _Point, 0, 0, 0), SELECT_BY_TICKET)) // Abriu um pedido e o selecionou
    OrderPrint();                                                                                     // Imprimiu seus dados
    
  Sleep(10000); // Pausa.
  
  OrdersTotal();
  OrderPrint(); // O MT4 retornará o mesmo resultado de antes, mas o MT5 não necessariamente.
}


Resultado.

        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22112 0.00 0.00 0.00 0
        #827619194 2021.01.13 02:07:50.296 buy limit 1.00 EURUSD 1.22012 0.00000 0.00000 1.22111 0.00 0.00 0.00 0
 
Caro fxsaber, essa provavelmente é uma pergunta de banana, mas preciso fazê-la. O Bibla funciona bem, mas no testador aparece uma peculiaridade. No início, o Expert Advisor está martelando algo muito forte sem emitir ticks, ou seja, assim que o primeiro tick ocorre, algo muito feroz começa e só depois de alguns minutos o teste começa a ser executado. Agora no MT5 eu fui colocar no gráfico de corujas ele também comeu o primeiro tick e um núcleo está totalmente carregado trava, princhu ticks no log eles aparecem com uma periodicidade de 2,5 minutos aproximadamente). E o principal não está claro por quanto tempo ele estuprará o terminal e se ele terminará de fato). O Sov normalmente funciona no quarto, no quinto ele não é utilizável em princípio. Ok, desabilitei o sprinting, mas isso só limpou o registro, mas como fazer com o desempenho? Sim, eu uso tanto o total do histórico quanto a seleção de ordem, caso contrário, qual é o sentido de usar a biblioteca? Ou seja, você não pode usar robôs postiços, além disso, essa coisa quebra o OnTick e, consequentemente, todas as interfaces ficam de pé porque o MQL5 OnChartEvent está pendurado no OnTick, não está claro por quê. Existe alguma maneira de desativar esse recurso que simula o terminal ou, em princípio, ele não é fornecido? Eu gostaria muito de usar sua biblioteca em meu produto, mas ainda não sei como
 
E não leve o tom para o lado pessoal, eu sempre levo....