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

 
Igor Makanu:

porque você tem que se acostumar

Você também pode se treinar para usar sempre um guarda-chuva, pois pode chover. Você também pode se acostumar com outro, mas todos o escondem após cada uso.

 
Alexey Viktorov:

Você também pode se acostumar a andar sempre com um guarda-chuva, pois pode chover. Você também pode se acostumar com outro, mas todos o escondem após cada uso.

Devemos falar sobre isso?

só para começar, aqui está ele:

c = a/b;

ou

if(b!=0) c = a/b;

?

ZS: Infelizmente, sou o único em minha família sem guarda-chuva, não posso dizer nada sobre isso, estou sempre em um carro, um guarda-chuva é mais um empecilho do que uma ajuda.

 
Igor Makanu:

Devemos falar sobre isso?

apenas para começar, aqui está ele:

c = a/b;

ou

if(b!=0) c = a/b;

?

ZS: infelizmente sou o único em minha família sem guarda-chuva, não posso dizer nada sobre isso, estou sempre em um carro, um guarda-chuva é mais um empecilho do que uma ajuda

A resposta estava aqui.

E quanto ao segundo exemplo?
 
Alexey Viktorov:

A resposta estava aqui

E quanto ao segundo exemplo?

Como explicar o problema... em outro fórum tive uma conversa semelhante sobre o mesmo tópico, mas lá estava eu defendendo a opinião de que o preço atual não precisa ser normalizado, e o oponente estava fazendo barulho de que mesmo os Bid e Ask precisam ser normalizados - eu não quero olhar, mas a opinião dos desenvolvedores era de que os preços dos servidores estão sempre corretos

ok, não normalize, a decisão é sua.

 
Igor Makanu:

como explicar o problema... em outro fórum tive uma conversa semelhante sobre o mesmo tópico, mas lá defendi a opinião de que o preço atual não precisa ser normalizado, enquanto meu oponente estava fazendo barulho de que até os Bid e Ask precisam ser normalizados - eu não quero olhar, mas a opinião dos desenvolvedores foi que os preços dos servidores estão sempre corretos

ok, não o normalize, é com você

O oponente ruidoso está longe de ter sempre razão. Na minha opinião, você deve sempre ser guiado pela lógica e tomar suas próprias decisões. E não agitar por uma ou outra das opiniões de outras pessoas.

 
Alexey Viktorov:

Um oponente barulhento nem sempre está certo. Na minha opinião, a pessoa deve ser sempre guiada pela lógica e tomar suas próprias decisões. E não agitar por uma ou outra das opiniões de outras pessoas.

a lógica - este é o manual do desenvolvedor, um exemplo correto é escrito, pegue-o e usehttps://docs.mql4.com/ru/trading/ordersend

Não tenho informações sobre o formato em que os dados são enviados ao servidor, talvez os preços sejam enviados em forma de texto?

tenho um exemplo no Help, então é verdade - como dizem no exército, luminescente significa luminescente! )))

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
[in]  Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике. При открытии рыночного ордера (OP_SELL или OP_BUY) в качестве цены открытия могут использоваться только самые последние цены Bid (для продажи) или Ask (для покупки). Если операция проводится по...
 
Igor Makanu:

a lógica - este é o manual do desenvolvedor, um exemplo correto é escrito, pegue-o e usehttps://docs.mql4.com/ru/trading/ordersend

Não tenho informações sobre o formato em que os dados são enviados ao servidor, talvez os preços sejam enviados em forma de texto?

tenho um exemplo na Ajuda, então é verdade - como dizem no exército, luminescente significa luminescente! )))

Igor, ao menos veja um exemplo antes de começar a discutir.

void OnStart()
  {
//--- получим минимальное значение Stop level
   double minstoplevel=MarketInfo(Symbol(),MODE_STOPLEVEL);
   Print("Minimum Stop Level=",minstoplevel," points");
   double price=Ask;
//--- вычисленные значения цен SL и TP должны быть нормализованы
   double stoploss=NormalizeDouble(Bid-minstoplevel*Point,Digits);
   double takeprofit=NormalizeDouble(Bid+minstoplevel*Point,Digits);
//--- размещаем рыночный ордер на покупку 1 лота
   int ticket=OrderSend(Symbol(),OP_BUY,1,price,3,stoploss,takeprofit,"My order",16384,0,clrGreen);
   if(ticket<0)
     {
      Print("OrderSend завершилась с ошибкой #",GetLastError());
     }
   else
      Print("Функция OrderSend успешно выполнена");
//---
  }

Afinal, no exemplo da documentação, o preço não é normalizado sem cálculos matemáticos. E no exército também dizem "Ei vocês três, venham aqui, vocês dois"... mas não devem imitar qualquer um.

 
Alexey Viktorov:

Igor, você poderia ao menos olhar para o exemplo antes de discutir.

Afinal de contas, no exemplo da documentação, o preço não é normalizado sem cálculos matemáticos. E no exército também dizem: "Ei vocês três, venham aqui, vocês dois"... mas não devem imitar mais ninguém.

Eu não normalizei o preço no meu exemplo:

ticket_sell=OrderSend(_Symbol, OP_SELL, 0.1, Bid,10,
                     NormalizeDouble(0.0,_Digits),NormalizeDouble(0.0,_Digits), "", 0, 0, clrRed);  

Se você quiser enviar um mandado como autor do código, eu não o incomodarei:

ticket_sell=OrderSend(NULL, OP_SELL, 0.1, Bid, 0, 0, 0, "", 0, 0, Red);  
 
Igor Makanu:

Eu não normalizei o preço no meu exemplo :

Se você quiser enviar uma ordem como autor do código, eu não o incomodarei:

Houve algum exemplo de que o corretor não aceitou os números corretos? Observo que nos tutoriais em vídeo de pessoas respeitáveis eles colocam os inteiros no final do pedido().


Talvez a outra coisa seja um pouco diferente neste caso. Eu tinha uma função de comparação de alguma forma me recusei a aceitar como igual uma variável de tipo duplo e ou OrderStoploss() ou OrderTakeProfit() com os mesmos valores, até normalizá-los aos dois.

 
Andrey Sokolov:

Houve alguns exemplos de números corretos que não foram aceitos pelo corretor? Observo que nos tutoriais em vídeo de pessoas de boa reputação, o fim do pedido() é definido para inteiros.

Talvez a outra coisa seja um pouco diferente neste caso. De alguma forma, eu tinha uma função de comparação que não aceitava uma variável de tipo duplo e ou OrderStoploss() ou OrderTakeProfit() com o mesmo valor, até normalizá-los aos dois.

Provavelmente estamos falando de um exemplo desse tipo:

 double x = 5/2;
 Print("x = ",x);

//ответ 
//х = 2.0
  

e poderia ser assim:

 double x = 5.0/2.0;
 Print("x = ",x);

//ответ
//x=2.5

Eu não sei se o servidor aceita inteiros, assim como pessoas autorizadas, eu mesmo formei há muito tempo uma biblioteca (correta em minha opinião) para trabalhar com pedidos, aqui está minha bibliotecahttps://www.mql5.com/ru/code/24829

No arquivo TradePanel_C#.mqh minha biblioteca e a função para abrir pedidos OrderSend_(), escrevo meus códigos desta forma

TradePanel_Csharp
TradePanel_Csharp
  • www.mql5.com
Торговая панель, которая работает и в Визуализаторе Тестера.Таблица текущих ордеров/позиций.Таблица истории торгов (корректно работает на Хедж-счетах). Использование Ручная торговля в Тестере или вмешивание в работу советника (например, с целью проверки устойчивости ко внешним факторам).Ручная торговля в Терминале на демо/реальных...