[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 298

 
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {                     // !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
 
okvseok:

bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
 datetime t;
 double ocp, otp;
 int dg, i, j=-1, k=OrdersHistoryTotal();

 if (sy=="0") sy=Symbol();
 for (i=0; i<k; i++) {
 if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
 if (OrderSymbol()==sy || sy=="") {
 if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
 if (op<0 || OrderType()==op) {
 if (mn<0 || OrderMagicNumber()==mn) {
 if (t<OrderCloseTime()) {
 t=OrderCloseTime();
 j=i;
 }
 }
 }
 }
 }
 }
 }
 // !!!!!!!!?????? ХОТЬ КТО-ТО МОЖЕТ ОБЪЯСНИТЬ ЗНАЧЕНИЕ СТРОК КОДА, КОТОРЫЕ НАЧИНАЮТСЯ С ЭТОГО МЕСТА?
 if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {// Если очередной ордер истории торгов выбран, то
 dg=MarketInfo(sy, MODE_DIGITS);// переменная dg принимет значение дигитса по валютной паре, имя которой лежит в переменной sy
 // далее я возможно не верно расставил приоритет скобок, но по сути должно быть так:
 if (dg==0){// если дигитс равен нулю, то
 if(StringFind(OrderSymbol(),"JPY")<0){// если в имени инструмента ордера найдена подстрока то (только это не правильно написано - функция может верноуть значение > 1)
 dg=4;// дигитс принимает значение = 4
 }
 else{// иначе
 dg=2;// дигитс принимает значение = 2
 }
 }
 ocp=NormalizeDouble(OrderClosePrice(), dg);// нормализация цены закрытия ордера
 otp=NormalizeDouble(OrderTakeProfit(), dg);// нормализация цены ТейкПрофита ордера
 if (ocp==otp) return(True);
 }
 return(False);// команда вернуть из подпрограммы значение "ложь"
 }
 
drknn:

bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
datetime t;
doble ocp, otp;
int dg, i, j=-1, k=Total de pedidos();

if (sy=="0") sy=Símbolo();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy==") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
si (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
// !!!!!!!!?????? ¿ALGUIEN PUEDE EXPLICAR EL SIGNIFICADO DE LAS LÍNEAS DE CÓDIGO QUE COMIENZAN EN ESTE LUGAR?
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {// Si se selecciona la siguiente orden del historial de operaciones
dg=MarketInfo(sy, MODE_DIGITS);// la variable dg aceptará el valor de los dígitos por el par de divisas cuyo nombre está en la variable sy
// en adelante probablemente he colocado mal los paréntesis pero en realidad debería ser así
if (dg==0){// si los dígitos son cero, entonces
if(StringFind(OrderSymbol(), "JPY")<0){// si se encuentra una subcadena en el nombre del símbolo del pedido entonces (sólo que no está escrito correctamente - la función puede validar > 1)
dg=4;// dígitos toma valor = 4
}
else{// else
dg=2;// dígitos toma valor = 2
}
}
ocp=NormalizeDouble(OrderClosePrice(), dg);// normalizar el precio de cierre de la orden
otp=NormalizeDouble(OrderTakeProfit(), dg);// normalizar el precio del TakeProfit de la orden
si (ocp==otp) return(True);
}
return(False);// comando para devolver(false) desde la subrutina
}
gracias, ¿qué son los dígitos?
 
okvseok:
gracias, ¿qué son los dígitos?

Los dígitos de un instrumento de negociación: cuántos dígitos tiene después del punto decimal.
 
drknn:

Significado de un instrumento comercial: cuántos dígitos tiene después del punto decimal.

Es decir, si sé que los dígitos son 4, entonces el código se puede acortar así?

int dg = 4;

............ código

if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {

ocp=NormalizeDouble (OrderClosePrice(), dg );// normalizar el precio de cierre de la orden
otp=NormalizeDouble(OrderTakeProfit(), dg);// normalizar el precio de TakeProfit de la orden
if (ocp==otp) return(True);
}

return(False);

}

 
No sé si es posible -según la idea del autor (bueno, me parece a mí) esta parte del código está diseñada para determinar automáticamente los dígitos- para que el código pueda determinar exactamente a cuántos dígitos después del punto decimal redondear los precios. Sólo esta parte del código está hecha inútilmente.
 
¿Pueden decirme si existe un indicador que calcule el número total de órdenes abiertas para todos los pares que participan en el proceso de negociación?
 
yosuf:
¿Pueden decirme si existe un indicador que calcule el número total de órdenes abiertas para todos los pares que participan en el proceso de negociación?
No, no. Es más fácil hacer un simple Asesor Experto que calcule el número de posiciones abiertas.
 
Pregunta para el jefe de CodeBase. He enviado allí 3 publicaciones (más 3 en inglés). Uno de ellos fue enviado el 18 de julio y no ha sido publicado. Al principio, cuando enviaba los códigos allí, aparecían en 3-4 días. Ahora no está claro si se publicarán nuevas o no. Me gustaría saber si, por ejemplo, el material es débil y en opinión del supervisor no debe meterlo en CodeBase, ¿me llegará algún mensaje de que no aparecerá y entonces, por ejemplo, se eliminará de la aplicación? Si supiera que no se van a publicar, prepararía la publicación de forma diferente, más exhaustiva. ¿Hay un tiempo medio de espera para la publicación?
 
paladin80:
Pregunta para el jefe de CodeBase. He enviado allí 3 publicaciones (más 3 en inglés). Uno de ellos fue enviado el 18 de julio y no ha sido publicado. Al principio, cuando enviaba los códigos allí, aparecían en 3-4 días. Ahora no está claro si se publicarán nuevas o no. Me gustaría saber si, por ejemplo, el material es débil y en opinión del supervisor no debe meterlo en CodeBase, ¿me llegará algún mensaje de que no aparecerá y entonces, por ejemplo, se eliminará de la aplicación? Si supiera que no se van a publicar, prepararía la publicación de forma diferente, más exhaustiva. ¿Existe un tiempo medio de espera para su publicación?
¡A los anales inequívocamente!
Razón de la queja: