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
¿Qué hace esta función que está clara para todos?
int OpenSell(double volume,int slippage=10,string comment="Open Short EUR/USD (Sell)",int magic0=102406)
{
MqlTradeRequest mi_comercio;
MqlTradeResult mi_comercio_resultado;
mi_comercio.acción=TRADE_ACTION_DEAL;
mi_operación.símbolo=Símbolo();
mi_comercio.volumen=NormalizarDoble(volumen,1);
mi_operación.precio=NormalizarDoble(Oferta,_Dígitos);
mi_operación.sl=NormalizarDoble(Oferta+StopLoss*_Punto,_Dígitos);
mi_comercio.tp=NormalizarDoble(Oferta-TomaBeneficio*_Punto,_Dígitos);
mi_comercio.desviación=desviación;
mi_comercio.tipo=ORDEN_TIPO_VENTA;
my_trade.type_filling=ORDER_FILLING_AON;
mi_comercio.comentario=comentario;
mi_comercio.magia=magia;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
time_oc=TimeLocal();
md=0;
Print( " Código de resultado de la operación - " ,mi_resultado_comercial.retcode);
}
si no
{
Print("Código de resultado de la operación - ",mi_resultado_comercial.retcode);
Print("Error de apertura de pedido = ",GetLastError());
}
return(0);
}
En el procedimiento OnTick()
...
OpenSell(Lots,10, "EUR/USD (Sell)",102406);
...
Al principio:
doble StopLoss=250,
TakeProfit=1400;
extern double Lots = 0.1;
¿Por qué demonios hay 220 dólares en los resultados de las pruebas?
<FECHA> <BALANCE> <CAPITAL> <NIVEL DE MARGEN
01,01,2010 0 :00:00 10000 10000 0
11,01,2010 2 :57:00 9779,29 9841,92 6827
15,01,2010 16:00:00 9829,8 9941,9 6857
22,01,2010 14:32:00 10124,1 10135,9 7167
26,01,2010 2 :14:00 10048,6 10048,6 0
26,01,2010 4 :06:00 10048,6 10038,4 7099
27,01,2010 21:12:00 10188,5 10188,5 0
29,01,2010 2 :16:00 10188,5 10308 7346
29,01,2010 7 :14:00 10188,5 10277,4 7324
04,02,2010 22:05:00 10418,63 10480,83 7592
Si me equivoco, dame un toque en la nariz.
No te dejaré ver el EA completo. La función en Buy es similar...
Cierro la posición con la orden contraria.
Muy bien. He estado gritando hasta la saciedad. Sólo aprendiendo el idioma. Si he ofendido a alguien, pido disculpas. Trabajaré y buscaré el problema. Probablemente lo he hecho yo mismo, pero realmente quiero aprender a hacer buenos EAs usando mql5. Es un sistema muy bueno, pero . Hasta ahora tengo problemas con él.
Aunque tengo 20 Expert Advisors en mql4 sin ningún problema.
...
He empezado a estudiar la sección de "Operaciones de archivo" poco a poco. ¿Sabes si hay algún tutorial sobre cómo trabajar con archivos en MQL5?
¿Cuál es la forma correcta de eliminar todos los pedidos con un determinado modo?
Tengo dos funciones para esto, check_orders comprueba los pedidos con un determinado modo, y remove_sl los elimina:
El problema es que en el diario de EA aparecen estas líneas:
2011.05.11 21:40:19 Operaciones '726238' : falló la orden de cancelación #4375237 comprar 0.00 a 0.00000 [Solicitud inválida]
Es decir, hay peticiones redundantes al servidor de comercio para borrar la orden que ya se ha enviado.
Creo que tengo un problema con el cierre y la apertura de posiciones.
De alguna manera, en lugar de tener una posición para 0,1 lote, en realidad tengo varios lotes. Al parecer, las posiciones de un símbolo se superponen y el volumen de la posición crece. Sólo así se explican los problemas mencionados con los grandes valores de parada y la gran diferencia en las pruebas. Significa que estoy analizando mal la presencia de operaciones abiertas o cerrando mal las pistas.
Este es el procedimiento que utilizo para determinar si hay una posición abierta por un símbolo:
int Total()
{
count=0;
for (i=0; i<=PositionsTotal(); i++)
{
if (PositionGetSymbol(i)==_Symbol) {count++;}
}
return(count);
}
Por supuesto, la función devuelve 0 o 1.
Utilizo la siguiente entrada para abrir órdenes
si (Total()<1)
{
if (#alguna comprobación de los indicadores#) OpenBuy(Lots,10, "EUR/USD (Buy)",102406);
if (#alguna comprobación de los indicadores#) OpenSell(Lots,10, "EUR/USD (Sell)",102406);
}
Abro compra y venta parece:
int OpenSell(double volume,int slippage=10,string comment="Abrir EUR/USD en corto (vender)",int magic0=102406)
{
MqlTradeRequest mi_comercio;
MqlTradeResult mi_comercio_resultado;
mi_comercio.acción=TRADE_ACTION_DEAL;
mi_operación.símbolo=Símbolo();
mi_comercio.volumen=NormalizarDoble(volumen,1);
mi_operación.precio=NormalizarDoble(Oferta,_Dígitos);
mi_operación.sl=NormalizarDoble(Oferta+StopLoss*_Punto,_Dígitos);
mi_comercio.tp=NormalizarDoble(Oferta-TomaBeneficio*_Punto,_Dígitos);
mi_comercio.desviación=desviación;
mi_comercio.tipo=ORDEN_TIPO_VENTA;
my_trade.type_filling=ORDER_FILLING_AON;
mi_comercio.comentario=comentario;
mi_comercio.magia=magia;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
time_oc=TimeLocal();
md=0;
Print( " Código de resultado de la operación - " ,mi_resultado_comercial.retcode);
}
si no
{
Print("Código de resultado de la operación - ",mi_resultado_comercial.retcode);
Print("Error de apertura de pedido = ",GetLastError());
}
return(0);
}
Cierro las operaciones en el procedimiento principal de la misma manera:
if (Total()>0) TryToClose();
TryToClose es así:
}
El indicador comprueba que si debería haber una posición de compra y hay una posición de venta, entonces hacemos una compra.
Donde cometí un error. Por qué se me agrandan las posiciones.
Inserte el código a través del botón SRC
¿Sabes la diferencia entre una orden MT4 y una orden MT5?En mql4 las órdenes son comerciales o pendientes.
En mql5 una orden es una operación pendiente. La entrada en el mercado es la apertura de una posición. Cuando se activa la orden, se abre una posición. Sólo puede haber una posición para un símbolo, y puede haber tantas órdenes como queramos.
Todo el mundo me insinúa que soy estúpido. Puede que sea tonto. Bueno, encuentra mis errores para que pueda corregirlos.
Me está dando un toque de estupidez. Puede que sea estúpido. Bueno, encuentra mis errores para que pueda corregirlos.
No estoy insinuando nada, sólo pasé por aquí y pregunté cuál es el motivo más frecuente, no sé tu nivel de formación.
Llevo mucho tiempo aquí, ya me he formado una opinión sobre mucha gente (cada uno es fuerte a su manera), a ti todavía no te conozco, así que no voy a insinuar nada.
No veo el panorama general de la estrategia. A juzgar por la forma en que estás recorriendo las posiciones, la estrategia es multidivisa.
Pero sólo has prescrito una herramienta, si la herramienta es una, ¿por qué recorrer las posiciones?
Si conoces el instrumento, no necesitas buscarlo en todas las posiciones para encontrarlo, sólo tienes que utilizar esta función: