Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1813

 
Vitaly Muzichenko #:

Não há 8 no comentário, mas há uma sequela.

Obrigado. Isso o mostra corretamente. Erro estúpido, é claro. Mas ainda me pergunto por que todos os outros valores são exibidos normalmente e apenas um é torto.

 
Maksim Efimov #:

Obrigado. Essa é a maneira correta de fazer isso. Erro estúpido, é claro. Mas ainda me pergunto por que todos os outros valores são exibidos normalmente e apenas um é torto.

Não está torto, está correto no nível da máquina, você vê que há "e-08" no final.

Por exemplo, o número 1e-05 não é um erro, mas0,00001.

Você precisa usar o DoubleToString para ver a que estamos acostumados e o programa vai funcionar corretamente de qualquer forma

Leia

Все калькуляторы
  • allcalc.ru
Онлайн калькулятор для перевода чисел в экспоненциальный вид и обратно, другим языком для вычисления чисел с буквой E. На компьютере (в частности в тексте компьютерных программ) экспоненциальную запись записывают в виде MEp (пример 1e-10), где: M — мантисса, E (exponent) — буква E, означающая «*10^» («…умножить на десять в степени…»), p — порядок. Это необходимо для представлении очень больших и очень малых чисел, а также для унификации их написания. Многие пользователи калькуляторов столкнулись с вопросом: Что означает буква "E" в цифровом калькуляторе? Это Экспоненциа́льная за́пись— представление действительных чисел в виде мантиссы и порядка. Удобна для записи очень больших и очень малых чисел.
 
Vitaly Muzichenko #:

Não está torto, está correto no nível da máquina, veja que há um "e-08" no final.

Por exemplo, o número 1e-05 não é um erro, ele é0,00001.

Para ver ao que estamos acostumados, você precisa usar o DoubleToString e o programa funcionará corretamente de qualquer forma

Leia

Mais uma vez, obrigado. Vou lê-lo.

 
Em mql4 OrderSend() devolveu imediatamente o resultado do processamento do pedido pelo servidor comercial.
Em mql5 tal função tem que ser escrita por você mesmo?

 
Tretyakov Rostyslav #:

Consertado, agora funciona. É claro que não está certo, mas funciona.

{
              if(iTrailTakeProfit > 0.0)
                {
                tp=OrderTakeProfit() + NormalizeDouble(iTrailTakeProfit * Point(),_Digits);
                if(NormalizeDouble(((tp - OrderTakeProfit())) < 0.0,Digits))return;
                tp = OrderTakeProfit();
                }else tp = 0.0;
              if(OrderProfit() + OrderSwap() + OrderCommission() > MarketInfo(Symbol(), MODE_TICKVALUE) * iTrailStart * OrderLots());
                {
                 if(((NormalizeDouble((Bid - OrderOpenPrice()*Point),Digits) >= NormalizeDouble(((Bid - NormalizeDouble((iTrailStart * Point),_Digits))),_Digits) > OrderStopLoss() || OrderStopLoss()==0)));//true
                   {
                    if((OrderStopLoss() == 0.0 && NormalizeDouble(Bid - OrderStopLoss()* Point,Digits) < NormalizeDouble((Bid - NormalizeDouble((iTrailDist * Point),_Digits)),_Digits)));//true
                      {
                      if(iTrailStep > 0.0 && OrderStopLoss() >= 0.0 && NormalizeDouble(((Bid - OrderStopLoss() - iTrailDist * Point)),Digits) >= iTrailStep);//true
                        {
                         sl_lev = NormalizeDouble((Bid - iTrailDist * Point()),_Digits);
                         if(NormalizeDouble(Bid - sl_lev * Point,_Digits) < MarketInfo(Symbol(),MODE_STOPLEVEL));//false
                           {
                            if(!OrderModify(Forder,OrderOpenPrice(),NormalizeDouble(Bid - NormalizeDouble((iTrailStart * Point),_Digits),_Digits),tp,OrderExpiration()));
                            Print("Не удалось модифицировать стоплосс ордера №",OrderTicket(),". Ошибка: ",GetLastError());
                           }
                        }
                      }
                   }
                }
             }

Não está ajustado corretamente, como faço para consertá-lo?

 
Valeriy Yastremskiy #:

E olhe na revista para ver o que acontece)

No início eu não escrevi nada, depois comecei a olhar sequencialmente e acabou sendo muito.

Obrigado.

 
Alexander Avksentyev #:

Consertado, agora funciona. É claro que não está certo, mas funciona.

Não acerta as paradas, como você as conserta?

De onde você está obtendo esses dados?

OrderTakeProfit()
OrderProfit() + OrderSwap() + OrderCommission()
OrderOpenPrice()
OrderStopLoss()
 
Tretyakov Rostyslav #:

De onde você está obtendo esses dados?

A partir do mandado.

if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
       {
        if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
          {
           if(OrderType() == OP_BUY) 
             {
              if(iTrailTakeProfit > 0.0)
                {
                tp=OrderTakeProfit() + NormalizeDouble(iTrailTakeProfit * Point(),_Digits);
                if(NormalizeDouble(((tp - OrderTakeProfit())) < 0.0,Digits))return;
                tp = OrderTakeProfit();
                }else tp = 0.0;
              if(OrderProfit() + OrderSwap() + OrderCommission() > MarketInfo(Symbol(), MODE_TICKVALUE) * iTrailStart * OrderLots());
 
secret do processamento do pedido pelo servidor comercial.
Em mql5, tal função tem que ser escrita por você mesmo?

Tipos de transações comerciais

A MQL5 também retornará imediatamente

OrderSend

Se o pedido for aceito com sucesso pelo servidor comercial, a função OrderSend() retorna verdadeiro.

 
Alexander Avksentyev #:

Consertado, agora funciona. É claro que não está certo, mas funciona.

Ele pára de dar errado, como posso consertá-lo?

OrderOpenPrice()*Point
OrderStopLoss()* Point

1,12500*Point=0.0000112500

Razão: