Dificuldades de tradução :) - página 4

 
Alexey Volchanskiy:

Seja bem-vindo. Mas eu escrevi que sou um gatinho preguiçoso))

Essa é a razão de eu não puxar o diabo pelos tomates toda vez, mas manter os dados do pedido em classe.

Pura questão: presumivelmente você queria rever as posições, não as justificativas? М... Eu teria feito as coisas de maneira diferente, mas a alimentação ao vivo é algo parecido com isto

Tenho 40 destas funções em meu modelo para todas as ocasiões. Eu os tenho separadamente para pedidos e separadamente para posições. Eles são muito rápidos para trabalhar; usamos aqueles que precisamos em nossa EA e, além disso, podemos estender ou modificar o algoritmo da EA em alguns minutos. É por isso que uso as funções dentro de um arquivo e não preciso conectar nada adicional.

Sim, eu gostaria de rever as posições e, se possível, as ordens também, isso seria ótimo)

Aleksey, se você tiver tempo e desejo após a caminhada noturna, por favor, escreva, eu vou ver como deve ser e vou reescrever tudo por analogia.

Obrigado!

//==================

P.S. enquanto escrevia, você deu uma resposta)

(c) por que você tem que colocar todo tipo de merda depois deinserir o code!!!!

É para saber qual função, como um comentário, há muitas delas

Obrigado pela resposta, vou continuar cavando ))))

 
Alexey Volchanskiy:

Seja bem-vindo. Mas eu escrevi que sou um gatinho preguiçoso))

Essa é a razão de eu não puxar o diabo pelos tomates toda vez, mas manter os dados do pedido em classe.

Pura questão: presumivelmente você queria rever as posições, não as justificativas? М... Eu teria feito as coisas de maneira diferente, mas a alimentação ao vivo é assim

O estúpido do local caiu novamente, eu vou para o avermelhado, está tudo limpo lá.

****************** site estúpido !!!!!!!!!!!!!!

por que você tem que colocar merda depois de ter colocado o code!!!!

Não Alexey, isso não é bem assim. PositionSelect(Símbolo()) irá selecionar a mesma posição. Isso é bom para a rede.

Aqui está uma peça com parênteses não emparelhados também, todos aqui entendem

    for(i = 0; i < PositionsTotal(); i++)
     {
      if(PositionGetTicket(i) > 0 && PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_MAGIC) == magic)
       {
        if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY || PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
         {
 
Vitaly Muzichenko:

Sim, queria dar uma olhada nas posições e se você puder, as ordens também, isso seria super)


Para pedidos pendentes, seria quase o mesmo

    for(i = 0; i < Orders Total(); i++)
     {
      if(OrderGetTicket(i) > 0 && Order GetString(POSITION_SYMBOL) == Symbol() && Order GetInteger(POSITION_MAGIC) == magic)
       {
        if(Order GetInteger(POSITION_TYPE) == POSITION_TYPE_BUY_STOP || Order GetInteger(POSITION_TYPE) == POSITION_TYPE_SELL_STOP) // или другие типы
         {
 
Alexey Viktorov:

É quase o mesmo para pedidos pendentes

Enorme agradecimento aos cinco escritores) por toda sua ajuda!
 
Vitaly Muzichenko:

Alexei, uma pergunta para você:

Qual é a duração e a dificuldade de traduzir projetos que são escritos em estilo processual? Por que procedimento? - costumava fazer assim, ter um modelo para todas as ocasiões, escrever 3-5 linhas nele para condições, e qualquer coruja está pronta em meia hora com toda a depuração

A seguir:

É possível reescrever a função de abertura de posição para aplicá-la da mesma forma que no quad, acostumaram-se com seus nomes e uso ao longo dos anos, e não precisam conectar nenhuma biblioteca.

Bem, e um bloco de condições para a abertura e criação de gráficos:

Muito mais gráficos, escritos uma vez em cinco, então há algo feito através do tempo .opa e do preço de selecionar o primeiro ponto e o segundo. No quarto, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) e ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), mas no quinto, tal construção não funciona(

Agradecemos antecipadamente pela resposta!

Eu reescrevi mais um projeto ontem, é um grande Expert Advisor. Meu cliente vem otimizando-o há semanas, ele tem um código pesado e muitos parâmetros. Eu o encorajei a mudar para 5 com hedge, eu disse que ele poderia otimizá-lo na nuvem. Hoje ele escreve que está mijando nas calças com tanta velocidade, que levou algumas horas para otimizar tudo, o que costumava levar semanas. Claramente, geralmente há alguns milhares de agentes livres na nuvem.

Agora à sua pergunta, eu ganhei alguma experiência, há algumas respostas.

Deixe-os manter o estilo de procedimento, ninguém está forçando você a usar o OOP.

2. Aqui está um bom artigo sobre funções na MQL4 e 5. Há ali uma tabela . https://www.mql5.com/ru/articles/81.

Aqui está uma biblioteca sobre o uso combinado de 4 e 5 funções comerciais. Ainda não experimentei, mas é interessante. https://www.mql5.com/ru/code/16006

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 

Fórum sobre comércio, sistemas comerciais automatizados e estratégias comerciais de teste

Dificuldades de tradução :)

Vitaly Muzichenko, 2016.08.15 21:00

Eu concordo )

Alexey, então como um jogo) por favor, traduza este recurso para fives:

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Como utilizá-lo em quatro - você sabe.

Obrigado!


Tenho uma visão um pouco diferente sobre a tradução. Sem "substituições" em VS. Basta adicionar uma única linha. O código de trabalho da função mencionada para o MT5-Hedge

// https://www.mql5.com/ru/code/16006
#include <MT4Orders.mqh>

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

O código tornou-se imediatamente uma plataforma cruzada.

De forma semelhante, o MT4 Expert Advisor de outra pessoa no MT5-tester - exemplo.

 
fxsaber:

Eu tenho uma visão um pouco diferente da tradução. Sem "substituições" em VS. Basta adicionar uma única linha. Código de trabalho da função mencionada para MT5-Hedge

O código tornou-se imediatamente uma plataforma cruzada.

De forma semelhante, o MT4 Expert Advisor de outra pessoa no MT5-tester - exemplo.

Legal! Eu usei o CTrade ontem para velocidade de tradução, ainda não olhei para a biblioteca. Mas com certeza vou dar uma olhada nisso.
 
Alexey Volchanskiy:
Legal! Eu usei o CTrade ontem para velocidade de tradução, ainda não olhei para a biblioteca. Mas eu definitivamente darei uma olhada.

Meu MT4Orders.mqh não funcionou para mim - ele entra em conflito com a biblioteca padrão que já utilizo. Provavelmente, só deveria estar em uma folha limpa.

'::' - unexpected token Trade.mqh       126     22
'::' - unexpected token Trade.mqh       1477    14
'MqlTradeResult' - identifier already used      Trade.mqh       1477    55
see previous declaration of '           0       0
'&' - semicolon expected        Trade.mqh       1477    70
'if' - expressions are not allowed on a global scope    Trade.mqh       1483    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1485    4
'if' - expressions are not allowed on a global scope    Trade.mqh       1488    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1493    4
'return' - expressions are not allowed on a global scope        Trade.mqh       1499    4
')' - expressions are not allowed on a global scope     Trade.mqh       1500    3
declaration of 'action' hides global declaration in file 'Trade.mqh' at line 1480       DealInfo.mqh    244     55

**

 
Alexey Volchanskiy:

Meu MT4Orders.mqh não funcionou para mim - ele entra em conflito com a biblioteca padrão que já utilizo. Provavelmente, só deveria estar em uma folha limpa.

**

#include <MT4Orders.mqh> // если есть #include <Trade/Trade.mqh>, вставить эту строчку ПОСЛЕ
 

Pergunta - como conheço a comissão de uma posição na MQL5?

Eu o fiz na MQL4 desta maneira

double oProfit = OrderProfit() + OrderSwap() + OrderCommission(); // MQL4

Não há comissão na MQL5.

double oProfit = PositionGetDouble(POSITION_PROFIT) + PositionGetDouble(POSITION_SWAP);

Procurei nas propriedades do pedido, e não há comissão também. O que eu devo fazer?