Buenos dias,
Muy buenas, solo que no entiendo una cosa. Cuando pongo la orden en WIN y WDO el EA abre 6 órdenes con el número de contratos que he introducido en "apalancamiento". O sea que aunque quiera operar con 1 contrato, no puedo, me abre 6.
¿Es este un concepto que he pasado por alto? Soy principiante, así que parto de esa premisa.
Muchas gracias por compartir.
Como yo lo entiendo, usted necesita el conocimiento de AlgoTrading para trabajar con él ...
Usted no necesita conocimientos de AlgoTrading ... pero tiene que estar habilitado siempre que utilice un EA (Asesor Experto), de lo contrario el EA está limitado en la forma en que funciona.
¿Es este un concepto que he pasado por alto? Soy principiante, así que parto de esa premisa.
Muchas gracias por compartir.
Puede ser que el sistema esté enviando más de una orden cuando pulsas el ratón, los motivos pueden ser otros, pero gracias por reportarlo 😁👍, para solucionar este problema, tendrás que añadir una prueba extra cuando pulses el ratón, los puntos a modificar o añadir están marcados en VERDE... asegurate de escribirlo de la manera correcta, de lo contrario la orden puede no ser enviada, o puede no ser aceptada por el servidor ... pero añadiendo esta prueba extra debería resolver su problema. La lógica es la siguiente: Cuando se pulsa el ratón, la variable STATIC se establecerá, y sólo se restablecerá para permitir el envío de un nuevo pedido cuando el ratón deje de estar pulsado.
inline void MoveTo(int X, int Y, uint Key) { static double d_block = 0; int w = 0; datetime dt; bool bEClick, bKeyBuy, bKeySell; double take = 0, stop = 0, price; bEClick = (Key & 0x01) == 0x01; /Clic izquierdo bKeyBuy = (Key & 0x04) == 0x04; //SHIFT pulsado bKeySell = (Key & 0x08) == 0x08; //CTRL Pulsado ChartXYToTimePrice(Infos.Id, X, Y, w, dt, price); ObjectMove(Infos.Id, Infos.szHLinePrice, 0, 0, price = (bKeyBuy != bKeySell ? AdjustPrice(price) : 0)); ObjectMove(Infos.Id, Infos.szHLineTake, 0, 0, take = price + (Infos.TakeProfit * (bKeyBuy ? 1 : -1))); ObjectMove(Infos.Id, Infos.szHLineStop, 0, 0, stop = price + (Infos.StopLoss * (bKeyBuy ? -1 : 1))); if ((bEClick) && (bKeyBuy != bKeySell) && (d_block == 0)) CreateOrderPendent(bKeyBuy, Infos.Volume, (d_block = price), take, stop, Infos.IsDayTrade); else d_block = 0; ObjectSetInteger(Infos.Id, Infos.szHLinePrice, OBJPROP_COLOR, (bKeyBuy != bKeySell ? Infos.cPrice : clrNONE)); ObjectSetInteger(Infos.Id, Infos.szHLineTake, OBJPROP_COLOR, (take > 0 ? Infos.cTake : clrNONE)); ObjectSetInteger(Infos.Id, Infos.szHLineStop, OBJPROP_COLOR, (stop > 0 ? Infos.cStop : clrNONE)); };
Buenas tardes, ¿dónde se ajusta el número de puntos y el número de lotes para el mini índice?
En realidad, en este código el ajuste es automático. Le dices el financiador y el número de contratos a operar y el código hace el ajuste en cuanto a puntos... Esta información te la da cuando colocas el Asesor Experto en el gráfico. 😁👍
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Desarrollando un EA comercial desde cero:
Comprenda cómo desarrollar un EA para tráding programando lo menos posible.
Este EA se puede mejorar en muchos aspectos para poder poner a funcionar algún conjunto de parámetros, es cierto que habrá que añadir más código para que sea más independiente de MT5, pero esto depende de la creatividad y necesidad de cada uno.
El gran acierto de este EA es el hecho de que utiliza el propio MetaTrader 5 para hacer las cosas que no están en su código, y con lo cual es extremadamente estable y fiable.
Autor: Daniel Jose