Estoy aprendiendo a escribir un asesor... - página 3

 
Todavía hay 1 error OrderSend 130... ¿De qué depende?
 
paukas >> :

Descargue velas de minutos (por ejemplo, de Alpari) y haga una prueba con velas de minutos.

¿Cómo voy a hacer una prueba de minutos si tengo un MTS para H4...?

No se puede probar en velas de 4 horas con 5 pips de parada.

¿Por qué no?
 

En el artículo Campeonato de Comercio Automatizado 2007: Errores comunes en los expertos
He leído que el error 130 de OrderSend (ERR_INVALID_STOPS) es que los stops son erróneos o están demasiado cerca.

Llamé a la DC, pregunté a qué distancia mínima se puede poner un tope - dijeron que no hay tal límite... ¡Extraño!

Tampoco entiendo una cosa. Si abro manualmente una orden, no puedo establecer el stop y el beneficio en ella... ¿Entonces cómo hace esto OrderSend()?

He comprobado que si coloco una orden manualmente y luego pongo un stop... Se debe establecer un mínimo de 4 pips desde el precio de apertura - es decir, el precio actual...

Ahora tengo que trastear con OrderModify(). ¿Por qué necesitamos el stoploss en OrderSend() entonces?

 
ALex2008 >> :

¿Cómo voy a hacer una prueba de minutos si tengo un MTS para H4...?

¿Por qué no?

La prueba en la TF más pequeña se realiza de la siguiente manera

Se escriben llamadas como ésta (por ejemplo)

   wpr[1] =   iWPR ( Symbol(), 10, PERIOD_H4, 1 );
   wpr[2] =   iWPR ( Symbol(), 20, PERIOD_H4, 1 );
   wpr[3] =   iWPR ( Symbol(), 40, PERIOD_H4, 1 );
   wpr[4] =   iWPR ( Symbol(), 60, PERIOD_H4, 1 );


¡Intentaremos utilizar cualquier plazo y será la prueba más eficiente y correcta en minutos!

¡será el más correcto!

---

Desgraciadamente, no se puede hacer con los ticks, porque no hay historial de ticks en el probador de MT4


---

¡Aprenda a escribir la TF de inmediato! ¡Y entonces a su EA no le importará en qué TF se ejecutó!

es razonable escribir parámetros en lugar de constantes - para un código más simple y una percepción más clara pongo constantes

 

Yuri) No soy un profesional en esto...) Al menos describe lo que significa para mí. wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );

 
ALex2008 >> :

Yury) No soy un profesional en este negocio...) Al menos describe lo que significa. wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );

iWPR es un indicador incorporado

double iWPR( string symbol, int timeframe, int period, int shift)
Cálculo del indicador Percent Range de Larry Williams.
Parámetros:
símbolo - Nombre del símbolo del instrumento, sobre cuyos datos se calculará este indicador. NULL significa símbolo actual.
plazo de tiempo - Punto. Puede ser uno de los períodos de la carta. 0 significa el período del gráfico actual.
period - Periodo (número de barras) para calcular el indicador.
shift - Índice del valor recibido del buffer del indicador (desplazamiento relativo a la barra actual hacia atrás en un número especificado de períodos).


Ejemplo:
if(iWPR(NULL,0,14,0)>iWPR(NULL,0,14,1)) return(0);

está descrito en el FAQ, échale un vistazo

wpr[...] es la matriz donde se resumen los resultados de cada indicador con un periodo diferente

( puedes nombrar el array como quieras)

doble wpr[5] ;

wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );
wpr[2] = iWPR ( Symbol(), 20, PERIOD_H4, 1 );
wpr[3] = iWPR ( Symbol(), 40, PERIOD_H4, 1 );
wpr[4] = iWPR ( Symbol(), 60, PERIOD_H4, 1 );


Acabo de mostrar una llamada con diferentes períodos...

La idea era poner un punto en los indicadores para poder probarlo en cualquier TF

 
Si la idea era escribir un periodo en los indicadores de una vez! para poder probarlo en cualquier TF, lo entiendo... -El Asesor Experto no tiene indicadores, sólo tiene velas H4 (como indicador). -TF ahora intentaré considerarlo en todas partes en el código y entonces podrás probarlo en cualquier TF)
 

Decidí hacer una modificación de orden abierta...

Justo después de OrderSend

      if (OrderSelect(0,SELECT_BY_POS)==true)
        if (OrderType()==OP_BUY)
          OrderModify(OrderTicket(),OrderOpenPrice(), Stop, Take, colorBaySell);


Hay un error en el registro:

ticket no válido para la función OrderModify
11:43:54 2005.01.26 13:12 EURUSD: OrderModify error 4051
Por favor, indíqueme qué es lo que ocurre.

 

Los nuevos valores de parada deben ajustarse de la siguiente manera: :

OrderModify(OrderTicket(), OrderOpenPrice(), Bid- Stop*Point,.....
                                                    
dónde se fija el nuevo stop - en pips (en números enteros)
 

¿Es necesario el uso de MarketInfo() para OrderClose para OrderModify?