Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 814

 
Igor Makanu:

porque hay que acostumbrarse

También puedes entrenarte para llevar siempre un paraguas, porque puede llover. También puedes acostumbrarte a otro, pero todo el mundo lo esconde después de cada uso.

 
Alexey Viktorov:

También puedes acostumbrarte a caminar siempre con un paraguas, porque puede llover. También puedes acostumbrarte a otro, pero todo el mundo lo esconde después de cada uso.

¿hablamos de ello?

Sólo para empezar, aquí está:

c = a/b;

o

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

?

ZS: Por desgracia, soy el único de mi familia que no tiene paraguas, no puedo decir nada al respecto, siempre voy en coche, el paraguas es más un estorbo que una ayuda.

 
Igor Makanu:

¿hablamos de ello?

Sólo para empezar, aquí está:

c = a/b;

o

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

?

ZS: por desgracia soy el único de mi familia que no tiene paraguas, no puedo decir nada al respecto, siempre voy en coche, un paraguas es más un estorbo que una ayuda

La respuesta estaba aquí.

¿Y el segundo ejemplo?
 
Alexey Viktorov:

La respuesta estaba aquí

¿Y el segundo ejemplo?

Cómo explicar el problema... en otro foro tuve una conversación similar sobre el mismo tema, pero allí yo defendía la opinión de que el precio actual no necesita ser normalizado, y el contrincante hacía ruido diciendo que incluso el Bid y el Ask necesitan ser normalizados - no quiero mirar, pero la opinión de los desarrolladores era que los precios del servidor son siempre correctos

ok, no lo normalices, depende de ti.

 
Igor Makanu:

cómo explicar el problema... en otro foro tuve una conversación similar sobre el mismo tema, pero allí defendí la opinión de que el precio actual no necesita ser normalizado, y el oponente estaba haciendo ruido que incluso el Bid y Ask necesitan ser normalizados - no quiero mirar, pero la opinión de los desarrolladores fue que los precios del servidor son siempre correctos

ok, no lo normalices, depende de ti

El adversario ruidoso no tiene siempre la razón. En mi opinión, siempre hay que guiarse por la lógica y tomar sus propias decisiones. Y no agite por una u otra opinión de los demás.

 
Alexey Viktorov:

Un oponente ruidoso no siempre tiene razón. En mi opinión, uno debe guiarse siempre por la lógica y tomar sus propias decisiones. Y no agite por una u otra opinión de los demás.

la lógica - este es el manual de los desarrolladores, un ejemplo correcto está escrito, tómelo y usehttps://docs.mql4.com/ru/trading/ordersend

No tengo información sobre el formato en el que se envían los datos al servidor, ¿tal vez los precios se envían en forma de texto?

tengo un ejemplo en Help, así que es verdad - como dicen en el ejército, ¡luminiscente significa luminiscente! )))

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

la lógica - este es el manual de los desarrolladores, un ejemplo correcto está escrito, tómelo y usehttps://docs.mql4.com/ru/trading/ordersend

No tengo información sobre el formato en el que se envían los datos al servidor, ¿tal vez los precios se envían en forma de texto?

tengo un ejemplo en la Ayuda, así que es verdad - como dicen en el ejército, ¡luminiscente significa luminiscente! )))

Igor, al menos ve un ejemplo antes de empezar 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 успешно выполнена");
//---
  }

Al fin y al cabo, en el ejemplo de la documentación el precio no se normaliza sin cálculos matemáticos. Y en el ejército también se dice "Eh, vosotros tres, venid aquí, los dos"... pero no hay que imitar a cualquiera.

 
Alexey Viktorov:

Igor, al menos podrías mirar el ejemplo antes de argumentar.

Después de todo, en el ejemplo de la documentación, el precio no se normaliza sin cálculos matemáticos. Y en el ejército también se dice 'Eh, vosotros tres, venid aquí, los dos'... pero no hay que imitar a nadie.

No he normalizado el precio en mi ejemplo:

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

Si quieres enviar una orden como autor del código, no te molestaré:

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

No he normalizado el precio en mi ejemplo:

Si quieres enviar un pedido como autor del código, no te molestaré:

¿Hubo algún ejemplo en el que el corredor no aceptara las cifras correctas? Observo que en los videotutoriales de gente reputada ponen enteros en ordersend().


Quizás lo otro sea un poco diferente en este caso. Tenía una función de comparación que, de alguna manera, se negaba a aceptar como iguales una variable de tipo doble y OrderStoploss() o OrderTakeProfit() con los mismos valores, hasta que las normalizaba a ambas.

 
Andrey Sokolov:

¿Hubo algún ejemplo de que el corredor no aceptara las cifras correctas? Observo que en los videotutoriales de gente reputada, el ordersend() se establece en enteros.

Quizás lo otro sea un poco diferente en este caso. De alguna manera tenía una función de comparación que no aceptaba una variable de tipo doble y OrderStoploss() o OrderTakeProfit() con los mismos valores, hasta que los normalicé a ambos.

Probablemente estemos hablando de un ejemplo de este tipo:

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

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

y podría ser así:

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

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

No sé si el servidor acepta números enteros, así como personas autorizadas, hace tiempo que me he formado una biblioteca (correcta en mi opinión) para trabajar con órdenes, aquí está mi bibliotecahttps://www.mql5.com/ru/code/24829

En el archivo TradePanel_C#.mqh mi biblioteca y la función de apertura de órdenes OrderSend_(), escribo mis códigos de esta manera

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