Discusión sobre el artículo "Guía paso a paso para escribir un Expert Advisor en MQL5 para principiantes" - página 30

 
timmytrade #:

Comprobador - "Modo de llenado no admitido"

Probado en 3 brokers diferentes. ¿Cuál es el problema?

Intente sustituir SYMBOL_FILLING_FOK por SYMBOL_FILLING_IOC.

Saludos, Vladimir.

 
Hola Samual, su artículo es grande. Y la técnica de uso de indicador de media móvil y ADX es grande porque lo probé con EUR/US H2 par de divisas en 2010.01.01 -2010.07.01 y 2017.01.01-2017.07.01. Es genial. Es mejor que usar el indicador Hummer Hombre Colgante + Estocástico. Y es mejor que ThreeEMA Indicador. Gracias. Ahora estoy trabajando en su código.
 
mirac baver ozturk #:

Hola a todos (Especialmente al querido autor)

He codificado junto con este artículo. Lo disfruté mucho y aprendí mucho de él.

Gracias por escribir un artículo tan informativo.

Sin embargo tengo un problema. Mi EA no coloca ninguna orden. He descargado el código del autor, pero no colocó ninguna orden también.

Como el artículo es de hace 13 años, supongo que el código ya está obsoleto. ¿Alguien puede ayudarme?

Mi código está en el archivo de abajo. Gracias de antemano.

Este código ya funciona.
 

Visite la página en inglés sin traducir, que es la descarga correcta.

Descargar de esta página: Guía paso a paso para escribir un Asesor Experto en MQL5 para principiantes - Artículos MQL5

https://www.mql5.com/en/articles/100

 

Estimado todo el mundo;

De este artículo en la parte inferior, tiene el código completo mlq5 para descargar.

I have download to check function and found that the program has incorrect algorithm.

Setup is EURUSD ,M1,100USD start on 2025/01/01 to 2025/01/31

La primera orden es de venta, luego hay muchas órdenes de compra.

El concepto es que solo debe haber una orden, pero esto ocurre desde la linea 165.

La bandera para verificar si hay orden o no esta separada en 2 variables (Buy_opned,Sell_opened).

Si ahora ya tiene orden de venta, entonces en la línea 216 (Ordersend) hará una nueva orden de compra incluso si ahora tiene orden de venta.

Esperar a la siguiente vela Buy_open bandera en la declaración de la línea 172 no se puede establecer en on again.Why? Porque la primera orden es de venta, la segunda orden es de compra.

Y si, en la proxima vela, una orden de compra en la linea 216 (Ordersend) ocurrirá y continuará, muchas ordenes de compra ocurrirán hasta que no haya dinero.

Ver grafico aqui.



Ver lista de ordenes.


Gracias.

Niwath Jeamphue.

 
Niwath Jeamphue #:

Queridos todos;

A partir de este artículo en la parte inferior, que tiene el código completo mlq5 para descargar.

Tengo descarga para comprobar la función y encontró que el programa tiene algoritmo incorrecto.

Setup is EURUSD ,M1,100USD start on 2025/01/01 to 2025/01/31

La primera orden es de venta, luego hay muchas órdenes de compra.

El concepto es debe tener sólo un orden pero es occour de la línea 165

La bandera para comprobar si se ha ordenado o no está separada en 2 variables de bandera (Buy_opned,Sell_opened).

Si ahora ya tiene orden de venta, entonces en la línea 216 (Ordersend) hará una nueva orden de compra incluso si ahora tiene orden de venta.

Esperar a la siguiente vela Buy_open bandera en la declaración de la línea 172 no se puede establecer en on again.Why? Porque la primera orden es de venta, la segunda orden es de compra.

Y si, la proxima vela de nuevo la orden de compra en la linea 216 (Ordersend) ocurrirá y continuará, muchas ordenes de compra ocurrirán hasta que no haya dinero.

Ver gráfico aquí.



Ver lista de pedidos.


Gracias.

Niwath Jeamphue.

No debe utilizar PositionSelect(_Symbol) a menos que esté utilizando una cuenta de compensación.

En una cuenta de cobertura, necesita seleccionar su posición correctamente, con PositionGetTicket() o PositionSelectByTicket(). Consulte la documentación.

 
Alain Verleyen #:

No debe utilizar PositionSelect(_Symbol) a menos que esté utilizando una cuenta de compensación.

En una cuenta de cobertura, necesita seleccionar su posición correctamente, con PositionGetTicket() o PositionSelectByTicket(). Consulte la documentación.

Gracias por tu comentario. Pero sólo quiero decir a todos que el código fuente es de la final completa de este artículo.

https://www.mql5.com/es/articles/download/100/my_first_ea.mq5

Por favor, intente con usted mismo, será entender mi mainpoint.

Thank you.

 
Niwath Jeamphue #:

Gracias por tu comentario. Pero sólo quiero decir a todos que el código fuente es de la final completa de este artículo.

https://www.mql5.com/es/articles/download/100/my_first_ea.mq5

Por favor, intente con usted mismo, será entender mi mainpoint.

Thank you.

Este artículo es de 2010, en ese momento TODAS las cuentas eran cuentas de compensación en MT5 incluyendo para Forex.

Las cuentas de cobertura se introdujeron en 2016 : https://www.mql5.com/es/articles/2299

MetaTrader 5 features hedging position accounting system
MetaTrader 5 features hedging position accounting system
  • 2016.03.21
  • www.mql5.com
In order to expand possibilities of retail Forex traders, we have added the second accounting system — hedging. Now, it is possible to have multiple positions per symbol, including oppositely directed ones. This paves the way to implementing trading strategies based on the so-called "locking" — if the price moves against a trader, they can open a position in the opposite direction.
 

Niwath Jeamphue #:

Por favor, pruébelo usted mismo, entenderá mi punto de vista.

Gracias, señor.

Hola. Entiendo su punto de vista. En el archivo adjunto he cambiado el código fuente del Asesor Experto para que sólo se abra una posición, independientemente de la cuenta que utilice - compensación o cobertura.

Saludos, Vladimir.

Archivos adjuntos:
 
MrBrooklin #:

Hola. Entiendo su punto de vista. En el archivo adjunto he cambiado el código fuente del Asesor Experto para que sólo se abra una posición, independientemente de la cuenta que utilice - neteo o cobertura.

Saludos, Vladimir.

Cuenta de Cobertura ,MrBrooklin . Gracias. Pero prefiero obtener sólo una orden, no tantas órdenes.

He sido cambiar algo. de original

Borrar Buy y Sell bandera abierta

Si (PositionSelect(_Symbol)==true)

Si se encuentra que es una posición de compra entonces se activa la bandera de Buy_opened

Else Si se encuentra que es una posición de venta entonces se pone la bandera Sell_opened

Zona1 : Intenta abrir la orden de compra en la condición y marca Buy_opened

Zona2 : Intenta abrir una orden de venta y marca Sell_opened

A Nuevo algo. y funciona bien ahora.

If (PositionsTotal() > 0) return

Borra las banderas de compra y venta

Si se encuentra que es una posición de compra, entonces marca Buy_opened

Else Si se encuentra que es una posición de venta entonces se establece Sell_opened

Zona1 : Intenta abrir la orden de compra en la condición y marca Buy_opened

Zona2 : Intenta abrir una orden de venta y marca Sell_opened