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

 
Dimka-novitsek:

Aquí está


El asesor trabaja. Abre operaciones
 
gheka:

Sigo perplejo y no lo entiendo, no entiendo de dónde sale el número de secuencia único, todo es diferente en los ejemplos,

si no me equivoco no soy yo quien lo crea, por ejemplo

Ya que has borrado la pregunta del MP, sin esperar respuesta - la lanzaré aquí:

Desglosémoslo así:

índice -

Posición de la orden o número de la orden en función del segundo parámetro.
(Posición o número de orden, ¿de dónde viene?)

"Dependiendo del segundo parámetro" - ¿significa que depende de "seleccionar"?

La posición de la orden es su ubicación en el conjunto de órdenes de su terminal. Este es exactamente el puesto que buscamos en el bucle:

Búsqueda de pedidos:

for (int index=0; index<OrdersTotal(); index++) // Цикл по терминалу. В кач-ве переменной цикла будет index для наглядности
    {
       if (OrderSelect(index, SELECT_BY_POS) && OrderMagicNumber()==Magic) // Если выбран ордер и магик равен магику советника
           {
                if (OrderTipe()==OP_BUY)                                   // Если нам нужен ордер Бай
                   {
                       //............... Тут код обработки выбранного орд
                   }
           }
    }

Si buscamos SELECT_BY_POS, el siguiente parámetro es por defecto MODE_TRADES y se puede omitir. El Asesor Experto buscará posiciones que aún no estén cerradas, es decir, en el mercado.

Si necesitamos buscar órdenes que ya han sido cerradas, entonces tenemos que añadir el siguiente parámetro después del SELECT_BY_POS: MODE_HISTORY. Entonces el Asesor Experto sólo buscará en la lista de posiciones cerradas y órdenes borradas o activadas.

(Si no me equivoco, estos son los órdenes que ya se han establecido, ¿verdad? como que el "0" es el primero en la parte superior,
"1" es el segundo en la lista, y así sucesivamente).

Exactamente esta es la posición, la posición de la orden en la matriz de órdenes del terminal, por así decirlo - su índice - el propio índice
... Y se ubican en el array empezando por las celdas cero del array, aunque el número de orden empieza por 1. Es decir, la primera orden se sitúa en la celda cero del array, la segunda en la primera, la tercera en la segunda, etc...

Ahora el billete. El ticket, un número único de una orden, es asignado por su empresa de corretaje. Según este número podemos identificar claramente este mismo orden o posición. Sin embargo, tenemos algunas reservas. El ticket debe ser guardado en algún lugar del EA (una variable o un array) para que sepa exactamente en qué orden necesita tener este ticket. Para ello, utilizo la función del libro de órdenes de mi propio EA, donde almaceno no sólo los datos de las órdenes que se pueden obtener mediante funciones estándar, sino que también almaceno en él, por ejemplo, los niveles de Fibo, que calculo justo después de abrir una posición y luego los introduzco en mi libro de órdenes. Entonces elijo fácilmente una posición por su tiempo de apertura y toma y muevo el nivel de parada de acuerdo con los niveles de Fibo que guardé para esta posición en mi matriz de órdenes ... También puedo obtener de ahí el ticket de la orden que necesito y utilizarlo después con las funciones estándar:

   if (OrderSelect(Ticket, SELECT_BY_TICKET) && OrderCloseTime()==0) // Если выбран ордер по тикету и время его закрытия равно нулю
      {
         if (OrderTipe()==OP_BUY)                                   // Если нам нужен ордер Бай
            {
               //............... Тут код обработки выбранного ордера
            }
      }

Aquí es necesario comparar el tiempo de cierre de la orden con cero. Porque durante la selección contra la entrada, MODE_TRADES y MODE_HISTORY se ignoran y no se utilizan y tenemos que ver la hora de cierre de la orden para determinar si está cerrada y se selecciona de la lista de posiciones abiertas. Si todavía está en el mercado, su hora de cierre también será cero.
Si quieres ver los datos de una orden cerrada y tienes que elegirla por ticket, la hora de cierre debe ser comparada con cero, y si lo es, la orden ya ha sido cerrada.

piscina -

Fuente de datos para la selección. Se utiliza cuando el parámetro select es igual a SELECT_BY_POS. Puede ser uno de los siguientes valores:
MODE_TRADES (por defecto)
- la orden se selecciona entre las órdenes abiertas y pendientes,
estas son las órdenes actuales


MODE_HISTORY - la orden se selecciona entre las órdenes cerradas y eliminadas.

y esto es de la lista de órdenes completadas, como de la lista de registro, ¿verdad?

Eso es correcto.

double OrderProfit( )
devuelve un beneficio neto, pero ¿cuál? ¿el último pedido o todos los pedidos?

Devuelve el beneficio actual de la orden que aún no se ha cerrado.

Si la orden ya ha sido cerrada, devolverá el beneficio o la pérdida de esta orden. Una orden, seleccionada.

Sin tener en cuenta los swaps, las comisiones, etc... Para tenerlos en cuenta, tenemos que crear nuestra propia función.

=============================================================================

Espero que lo descubras... :)
 

El asesor trabaja. Es la apertura de operaciones.

Gracias!!!! Conociendo la plataforma de comercio está enfermo, al parecer.

 
Renown:
Es necesario que un EA suavice la volatilidad (aquí está el valor: High[iHighest(NULL, 0, MODE_HIGH, 30, 1)] - Low[iLowest(NULL, 0, MODE_LOW, 30, 1)] de la media móvil exponencial. Por lo que tengo entendido, no se puede hacer por iMA estándar y tengo que escribir una función para ello? ¿Puede alguien ayudarme con el código?


iMAOnArray

 

buenos días a todos.... hay un problema... ¿puede alguien ayudar...?

Estoy operando un EA basado en el principio de la martingala... decidí incluir un stop loss en él también... para calcular una pérdida usé la siguiente fórmula...

Stopper = AveragePrice - Stoploss * Point; esto no me cuadra, porque el stopper en este caso cambia para las siguientes curvas... y me gustaría que fuera fijo para todas las curvas, por ejemplo 100 pips .... es decir, después de abrir una orden el stop se fija en 100 pips...Digamos que la segunda rodilla abre después de 30 pips por lo que el stop debería ser de 70 pips para llegar al mismo lugar que la primera ... en definitiva, necesito un stop loss fijo e invariable para toda la serie ... si no te importa explicarlo)))) o enviarme la función)))) te lo agradecería
 

Ha surgido una pregunta sobre la detección de una tecla pulsada. Es necesario hacer un seguimiento del hecho de pulsar y si, por ejemplo, se pulsa K, entonces realizamos algunas acciones. Aquí ( _http://msdn.microsoft.com/en-us/library/ms646293%28v=VS.85%29.aspx ) encontré la función int GetAsyncKeyState(int vKey) que es en principio lo que necesito... Pero hay una pega: el hecho de pulsar debe definirse sólo si una ventana de MetaTrader está activa. Estoy utilizando el siguiente código simple en mi Asesor Experto para comprobar:

#define VK_K                            0x4B    // K key 
#import         "user32.dll"
   int GetAsyncKeyState(int vKey);

//-----------------------------------------------------------------------------------------------//
int init()  {

 return(0);
}
//-----------------------------------------------------------------------------------------------//
int deinit()   {

 return(0);
}
int start() {
   if(GetAsyncKeyState(VK_K)==0) Print("K не нажата...");
   else {Alert("НАЖАТА K");}
 return(0);
}
Estaba escuchando alertas mientras escribía este post :). Por favor, ayúdenme a superar este problema =)
 

¡¡El horror!! Amigos, estoy perdido... :)

Hay dos bucles anidados. Cuando salgo del interno por ruptura, ¿dónde salgo, al principio o al final del bucle externo?

¿Al soporte de cierre del soporte exterior o al soporte de apertura?

 
artmedia70:

¡¡El horror!! Amigos, estoy perdido... :)

Hay dos bucles anidados. Al salir del bucle interno por medio de un break, ¿dónde salgo, al principio o al final del bucle externo?

¿Al soporte de cierre del exterior o al soporte de apertura?

código en el estudio.

De hecho, justo detrás del paréntesis de cierre del bucle interno

 
Necron:

código por favor.

De hecho, justo detrás del paréntesis de cierre del bucle interno

Gracias. Eso es exactamente lo que hice, pero me surgieron algunas dudas sobre si debía comprobar la bandera en el bucle exterior antes del paréntesis de cierre o al principio después del paréntesis de apertura...
 

¿Alguien sabe cómo hacer un tope fijo para la serie((((

Hay muchos profesionales aquí, el trabajo probablemente no sea tan difícil.