Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 89
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Cómo puedo determinar la hora de la negociación de futuros?
MarketInfo(Symbol(),MODE_STARTING)
MarketInfo(Symbol(),MODE_EXPIRATION)
devuelve ceros
¿Qué corredor?
Así que, en primer lugar, debería consultar a su agente de bolsa.
Estimados miembros del foro, ¿cómo escribir la condición de cruce de la línea del canal por el precio en su Asesor Experto, por ejemplo, el precio cruza la línea del canal desde arriba y la operación se abre o se cierra? Tenga en cuenta que me interesa el momento de este cruce. Estaré encantado de ayudar.
double price0=NormalizeDouble(ObjectGetValueByShift("NameYourChannelLine", 0),Digits)); - valor de su línea en la barra 0.
double price1=NormalizeDouble(ObjectGetValueByShift("NameYourChannelLine", 1),Digits)); - valor de su línea en la barra 1.
Y la forma más sencilla de determinar el momento de ruptura en la barra cero: si(High[0]>precio0 && High[1]<=precio1) {la línea ha roto al alza}, si(Low[0]<precio0 && Low[1]>=precio1) {la línea ha roto a la baja}. Los ifs serán TRUE desde el momento de la ruptura hasta el final de la barra actual. Es deseable que su línea de canal tenga la propiedad OBJPROP_RAY==True
Estimados miembros del foro, ¿cómo hacer una condición en un EA para el cruce de la línea del canal, por ejemplo, si el precio cruza la línea del canal desde arriba y se abre o cierra una operación? Tenga en cuenta que me interesa el momento de este cruce. Estaré encantado de ayudar.
De un par de maneras:
Si Ask > línea del canal y Low[1] <=línea del canal, cruzar hacia arriba
Si Bid < línea de canal y High[1] >=línea de canal, cruza hacia abajo
Puede consultar con MA con el periodo 1
. Debo haber planteado mal la pregunta, debería haber adjuntado parte del código. Me corrijo.
Como sugiere
artmedia70 indicó que la intersección se cerrará de la siguiente manera. Cierra el trato según la captura de pantalla. Pero tenemos que cerrar el trato donde está la cruz
void CheckForClose()
{
doble PrecioAlto, PrecioBajo;
//---- ir a negociar sólo para los primeros tiks del nuevo bar
if(Volumen[0]>1) return;
PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0);
PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);
for(int i=0;i<TotalPedidos();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=124 | OrderSymbol()!=Symbol()) continuar;
//---- comprobar el tipo de orden
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
romper;
}
if(OrderType()==OP_SELL)
{
if(High[1]>=PriceLow && Bid<=PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
romper;
}
}
//----
}
¿cómo se puede seleccionar la última orden CERRADA en el software y obtener información de ella?
Puedes encontrar lo que quieras.
Gracias por su ayuda
. Debo haber planteado mal la pregunta, debería haber adjuntado parte del código. Me corrijo.
Como sugiere
artmedia70 indicó que la intersección se cerrará de la siguiente manera. El acuerdo se está cerrando según la captura de pantalla. Pero tenemos que cerrar el trato donde está la cruz
void CheckForClose()
{
doble PrecioAlto, PrecioBajo;
//---- ir a negociar sólo para los primeros tiks del nuevo bar
if(Volumen[0]>1) return;
PriceHigh = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1, 0);
PriceLow = iCustom (Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);
for(int i=0;i<TotalPedidos();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=124 | OrderSymbol()!=Symbol()) continuar;
//---- comprobar el tipo de orden
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
romper;
}
if(OrderType()==OP_SELL)
{
if(High[1]>=PriceLow && Bid<=PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
romper;
}
}
//----
}
ExtremeTMA - son impiadosamente sobregirados. Es un gran trozo de historia: los últimos 30 compases, si no más. Lo usé para escribir un Asesor Experto - es una basura. Imagínese: aparece una señal, la alcanzo, pero un tiempo después la señal no existe en el historial - el indicador vuelve a dibujarse y resulta que he entrado para nada
Ha cometido un error al determinar el cruce: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... debe escribir if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... Y para lo contrario por analogía.
Inserte el código con el botón SRC en el panel de la parte superior de la ventana de entrada
ZZZY ¿Dónde está la captura de pantalla con la cruz?
ExtremeTMA - son impiadosamente sobregirados. Y una gran parte de la historia: los últimos 30 compases, si no más. Lo usé para escribir un Asesor Experto - es una mierda. Imagínese: tengo una señal, la introduzco, y algún tiempo después la señal no existe en el historial - el indicador hizo demasiados redraws y resulta que entré en el mercado en vano
Ha cometido un error al determinar el cruce: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... debe escribir if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... Y para lo contrario por analogía.
SZY El código debe pegarse pulsando el botón SRC en el panel de la parte superior de la ventana de entrada de texto
Corregido, cerró la operación de la misma manera que en la captura de pantalla anterior, y debería estar donde está la cruz roja.
Estoy de acuerdo en que ExtremeTMA está sobredimensionado, pero supongo que no afecta a la búsqueda de puntos de entrada, lo principal aquí son los filtros. He utilizado el indicador TDI. Adjunto lo que hice (no tengo buenas manos, por eso este EA debe ser manejado adecuadamente). Sólo tengo un problema con él, lleva unas 5 horas en el probador durante 1 año (he cometido un error en alguna parte). Si no es difícil buscar errores.
Corregido, cerré la operación de la misma manera que en la captura de pantalla anterior, pero donde debería estar la cruz roja.
Estoy de acuerdo en que ExtremeTMA está sobredimensionado, pero supongo que no afecta a la búsqueda de puntos de entrada, lo principal aquí son los filtros. He utilizado el indicador TDI. Adjunté la punta (mis manos no son sencillas, el proyecto de Asesor Experto es como mis manos). Sólo tengo un problema con él, lleva unas 5 horas en el probador durante 1 año (he cometido un error en alguna parte). Si no es difícil buscar errores.
Todavía no he buscado errores, hay mucho que hacer.
Para cerrar la venta donde está la cruz roja, hay que comprobar la barra actual. Si Ask<= nivel de cierre && High[1]>nivel de cierre