Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 404

 
fenix74:
evillive, intenté reemplazar como dijiste, pero supongo que incluso esto requiere un poco más de conocimiento, la compilación da "53 error(es), 18 advertencia(s)", el resultado se adjunta. evillive, puedo pedirte que hagas estas sustituciones, si tienes tiempo.

Sólo tienes que estar más atento, o no ser perezoso para especificar el tipo de variable en cada línea, o poner una coma en lugar de un punto y coma. Y en las llamadas de indicadores hay que definir las variables, no sólo de una antorcha.


Aquí hay un ejemplo, y luego - por su cuenta...

Aunque el segundo archivo parece estar bien, excepto por un punto en un nombre de variable. No hay puntos en los nombres de las variables.

Archivos adjuntos:
 
Vinin:
El servidor sólo accede a cuatro funciones. Abrir, modificar y cerrar (eliminar) una orden
artmedia70:
Funciones comerciales. Son los únicos que envían una solicitud específicamente al servidor de comercio y reciben una respuesta de éste.

Gracias.

 
Roger:
El usuario puede ordenar el historial sólo para la percepción visual, los números de posición en el historial no se pueden cambiar.


¿Cómo se puede saber si una estrategia es rentable o no basándose en los indicadores?
 
khorosh:

Y si vas a desmontar la función, no deberías haber cortado la cabecera de la función, ahí hay información importante.

Devuelve el tipo de la última posición abierta o -1 - esto significa que si no hay posiciones cerradas, entonces cuando se llame a la función, su valor será igual a -1

sy - nombre del instrumento (par de divisas)

mn - número mágico. Si ponemos -1, la función devolverá el tipo de la última orden cerrada sin importar el número mágico que se utilice

También lo sé, excepto por la característica del "número mágico".
Gracias por proporcionar una orientación útil.
No es necesario truncar la descripción de las variables.

artmedia70:

1. prescindamos del sarcasmo, ¿vale? Hizo que su aprendizaje fuera cómodo y fácil. ¿Qué tiene que ver el genio con esto?
2. Argumentativo.
3. No entiendes nada a juzgar por tus comentarios en el código.
4. Eso sucede.

En cuanto al punto 2, he aquí un ejemplo:

Hay menos cosas innecesarias.

1 - ¡no hubo sarcasmo! La genialidad reside en que hizo que mi aprendizaje fuera cómodo y fácil.
2 - tantas personas como opiniones. :)
3 - sigue siendo comprensible. No aclaré los objetivos variables que se realizaban, lo que hizo que surgiera esta opinión.

Gracias por la descripción detallada de la acción de las cadenas de funciones, me aseguré de mi comprensión de la función presentada.

Tenga en cuenta que ahora estamos inmersos en una conversación virtual sobre cuatro temas simultáneamente. Es muy ventajoso exponer tus respuestas en Internet punto por punto, pero algunos se lo toman como un insulto, lo siento.

Por cierto, diríjase a mí como "usted", ya que mi edad no permite que se dirija a mí como "usted" (una opinión formada en relación con el curso de estudios sociales de noveno grado).
khorosh:

1 - Sus ejemplos no son correctos. 2 - Cuando se llama a una función que tiene parámetros, hay que dar los valores de esos parámetros entre paréntesis, separados por comas. También debe tener en cuenta que no todas las funciones tienen valores asignados. 3 - Si el tipo de la función es void, entonces no tiene sentido y está destinada a realizar alguna acción, o a calcular algunas variables. En este último caso, es necesario conocer los nombres de estas variables para poder utilizar los resultados de esta función.

Disculpe, la respuesta se desglosa en puntos.
1 - mis ejemplos son incorrectos - esto es consecuencia de mi ignorancia.
2 - Me olvidé por completo de los soportes. Gracias. Me recordaron a ellos.
3 - ¿nada? ¿Se puede utilizar en lugar de un bool cuando se calcula por acciones (*, /, +, - )?


artmedia70:

El compilador generará un error en esta línea diciendo que la variable no está declarada.

El requisito mínimo es éste:


¡Sí, sí! Me olvidé de los paréntesis, pero me lo han recordado, ¡gracias de todos modos!
 
Profitov:

¿Cómo se puede saber por el historial que la estrategia es rentable o deficitaria, basándose en las lecturas de los indicadores?

Los indicadores utilizan los precios de cierre/apertura y los máximos/mínimos de las barras para los cálculos.
Los valores de los precios de cierre/apertura y los máximos/mínimos de las barras se almacenan en el historial.
Entonces, los indicadores obtienen los valores de los precios de cierre/apertura, máximos/mínimos de las barras del historial,
en consecuencia el indicador hace cálculos del historial.
se puede concluir que si la estrategia se basa en las indicaciones del indicador, se puede comprobar si es rentable o no utilizando los datos históricos.

Vinin:

En primer lugar, debes familiarizarte con el concepto de función. Y luego puedes pasar a lo que hacen y a cómo utilizarlos.

Conocer las tres interpretaciones de la palabra "función".
 
Link_x:


3 - ¿nada? ¿Es posible utilizarlo en lugar de bool cuando se cuenta por acciones (*, /, +, - )?

No entiendo la pregunta. La documentación da un ejemplo de una función de tipo void que imprime el nombre del error:

void errmesg(string s)
  {
   Print("error: "+s);
  }
 

¿Y tal vez después de la tercera vez alguien siga prestando atención a mi petición?

Escribí una función CAM, pero el probador da el error 4051, es decir, un número imposible de lotes. ¿Alguien tiene una opinión al respecto?

double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после 
                               //закрытия сетки ордеров
{
  double Lot=0; double TotalLot=0;
  for (int i = OrdersTotal()-1; i>0; i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         {
           Lot = NormalizeDouble (((OrderOpenPrice()-Bid)*Point)*OrderLots()/TP,2); 
           if (Lot>0)
           {
              TotalLot= TotalLot+Lot;
           }
         }
           
       
         else if (otype == OP_SELL)
         {
           Lot = NormalizeDouble (((Ask-OrderOpenPrice())*Point)*OrderLots()/TP,2);
           if (Lot>0)
           {
            TotalLot= TotalLot+Lot;
           }
           
         }
       }
     }
   }
   return (TotalLot);
   
 }
 
Trader7777:

¿Y tal vez después de la tercera vez alguien siga prestando atención a mi petición?

Escribí una función CAM, pero el probador da el error 4051, es decir, un número imposible de lotes. ¿Alguien tiene una opinión al respecto?


¿Es necesario multiplicar el precio por puntos?

(OrderOpenPrice()-Bid)*Point)
 
Trader7777:

¿Y tal vez la tercera vez alguien todavía prestará atención a mi petición?

Escribí la función por SAM, pero el probador da el error 4051, es decir, número imposible de lotes. ¿Alguien tiene una opinión sobre esto?

 double Lot=0; double TotalLot=0;
if (Lot>0)
Observe el valor de la variable que establece el número de lotes cuando se abre una posición.
Este valor es cero.
Es imposible abrir una posición con volumen cero para operar.



vadynik:


¿Es necesario multiplicar el precio por puntos?


También es posible, lo principal es escribir el código correctamente.
 
vadynik:


¿Es necesario multiplicar el precio por los puntos?


Supongamos que compré a 1,50.000 y el precio subió a 1,49950. Si no se multiplica por Puntos, sale 0,0005*0,1/100=0,0000005 no es suficiente


Si se multiplica, entonces 50*0,1/100= 0,05 es el valor correcto.

Razón de la queja: