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

 
Snower: La línea amarilla es el canal de precios que el precio debería romper, y que la orden se abriría con una vela de cara sonriente, y todas las anteriores serían ignoradas

en su trozo de código, ¿el canal de precios channel_top y channel_bottom están definidos arriba? ¿Dónde está la definición de barra de clavos?

 
Vitaly Muzichenko:

Respuesta

Artyom, no lo has leído con atención: el TS necesita abrirse sólo en la ruptura de una barra pin, respectivamente, si prescribes una barra pin (cuerpo pequeño y sombras grandes), la condición puede cumplirse

Vitaly, estaba respondiendo a esto:

...e ignoró todas las anteriores...

Si todos los que estaban antes eran barras de clavijas, entonces ¿cómo puede ignorarlos cuando eran actuales, eran barras de clavijas cruzando la línea?

 
Sergey Likho:

¿Cómo se maneja la función iCustom en MT4? Por favor, respondan los que sepan del tema.


En el probador de estrategias, por ejemplo, un EA llama al indicador en cada tick.

Cuando se llama a la función, el indicador se carga en la memoria, recalcula todos los valores desde la barra cero hasta la barra y luego devuelve el valor en el desplazamiento requerido.

Si solicito el valor de 1 barra en el primer tick y el valor de la segunda barra en el segundo tick, entonces mi Asesor Experto calculará el indicador dos veces en todo el historial?


Si el Asesor Experto accede al indicador1, y tiene iCustom al indicador2. ¿Cuántas veces se recalculará el indicador2 al solicitar el valor del indicador1?


¿Tal vez, el Probador de Estrategias y el terminal MT4 almacenan los valores de los indicadores en cada barra, para no tener que recalcularlos en la solicitud repetida?

Todo depende de la realización del indicador. Si el cálculo es correcto, entonces el indicador sólo calcula la barra actual - las otras se calcularon con (rates_total-prev_calculate)>1

 

¿Cómo promediar iMAOnArray sobre un array si hay valoresEMPTY_VALUE en el array?

 
Максим Дмитриев:

¿Cómo promediar iMAOnArray sobre un array si hay valoresEMPTY_VALUE en el array?


Si al menos un valor de la muestra promedio esEMPTY_VALUE, entonces el valor de iMAOnArray en ese punto también esEMPTY_VALUE.

 

Buenos días a todos. Estoy probando un EA. No voy a comerciar con él, sino sólo a comprobar cierta regularidad. El EA abre una orden en cada vela de un minuto y si la orden se cierra en un SL, abre otra orden de COMPRA al precio de cierre en un SL.


int start()                                             
{
if(Bid == iOpen(NULL,PERIOD_M1,0))
if ( G != Minute() )
{
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,Y10,123 );
G  =  Minute();
}
////*******   Если в списке закрытых ордеров есть ордер закрытый по СЛ - открыть другой ордер
int Счетф=0,  Номерф=OrdersHistoryTotal()-1;
for( ; Номерф>=0; Номерф--)
{
if(!OrderSelect(Номерф, SELECT_BY_POS, MODE_HISTORY)) continue;
if(OrderProfit()>=0) break;
Счетф++;
if(Счетф>0)
if(TimeCurrent()==OrderCloseTime())
OrderSend(Symbol(),OP_BUY,1,Ask,1,Bid-400*Point,Bid+200*Point,Y11,123 );
}
return;
}

El problema es... Si se cierran varias órdenes en un tick y la última orden se cierra en un PI, la orden de COMPRA que necesito no se abre. Esto se debe a que el programa piensa que la última orden fue cerrada por un TP, no por un SL. He aquí un ejemplo de esta situación

13:38:15.859 2008.01.02 15:01:46 Probador: stop loss #232 a 1.46566 (1.46560 / 1.46562)

13:38:15.859 2008.01.02 15:01:46 Probador: stop loss #233 a 1.46566 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:01:46 Probador: take profit #302 a 1.46562 (1.46560 / 1.46562)
13:38:15.859 2008.01.02 15:02:00 MACD Sample EURUSD,M1: open #347 sell 0.10 EURUSD at 1.46570 sl: 1.46972 tp: 1.46372 ok
¿Podría explicar qué estructura lingüística debe utilizarse para abrir una orden de COMPRA en un tick justo después de que la orden de SL se cierre en el mismo tick con la orden de SL?

Gracias.

 

¡Hola!

Ya me he devanado los sesos. ¿Cómo puedo comprobar si hay un precio determinado en la matriz doble?

Lo escribí así para la prueba:


double prmas[5] = {11,22,33,44,99};

ArrayBsearch(prmas,OrderOpenPrice(),WHOLE_ARRAY,0,MODE_ASCEND));


El script encuentra 11, 22, 33, 44 sin problemas (el terminal tiene esas órdenes). Sin embargo, si el script procesa el precio de 45, por ejemplo, sigue mostrando 3 (posición del precio 44 en la matriz).

Lo que realmente necesito es un bool - si hay un precio de la orden que se está procesando en el array, debería devolver true, si no, debería devolver false. Pero todavía no he encontrado esa función en el lenguaje.

 

Buenas tardes. Pueden decirme por qué no se crea el archivo y no se escriben los datos:

   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   string file_name=terminal_data_path+"\\MQL4\\Files\\VolC(Symbol(),Period())";
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
YarTrade: Buenas tardes. ¿Puede decirme por qué no se crea el archivo ni se escriben los datos en él?

¡¡Examine la carpeta de archivos cuidadosamente!! Escribir siempre en la caja de arena = Carpeta de archivos . Inténtalo de esta manera:

   string file_name=VolC(Symbol(),Period());  // А кто такой ВолК = VolC  ???
   int file_handle=FileOpen(file_name,FILE_READ|FILE_WRITE|FILE_TXT);
   FileWrite(file_handle,(double)V5);
   FileClose(file_handle);
 
STARIJ:

¡¡Examine la carpeta de archivos cuidadosamente!! Escribir siempre en la caja de arena = Carpeta de archivos . Pruébalo así:


VolC - He nombrado el archivo de esa manera. ¿No es necesario el nombre del archivo?

Razón de la queja: