Nueva API MetaTrader 4 DISPONIBLE - página 6

 
yewnix:

No entiendo algo aquí ..

Puedo hacer envíos de órdenes todo el día...

Sin embargo estoy teniendo un gran problema haciendo un OrderClose ..


¿Puedes por favor dar un ejemplo en estos.


Realmente no creo que sea mi DLL envolvente .NET.

¡Hola yewnix!


Puedes mirar en <Archivos de Programa>\NTradeZone\NTZMT4API\NDeveloper\NShort_Sample_MQL4.zip


este simple código mql, cierra todas las órdenes abiertas, una vez que se incluye <orderproxy.mqh>


int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

int Total = TZ_OrdersTotal();


for(i=0;i<Total;i++)

{

TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

}

Saludos cordiales.

 
TradeZone:

¡Hola yewnix!


Puedes echar un vistazo en C:\NArquivos de programas\TradeZone\TZMT4API\NDeveloper\Short_Sample_MQL4.zip


este simple código mql, cierra todas las órdenes abiertas, una vez que incluya <orderproxy.mqh>


int hAccount = TZ_LogIn(Login, Password, Server, "", "", "", "");

int Total = TZ_OrdersTotal();


for(i=0;i<Total;i++)

{

TZ_OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

TZ_OrderClose(TZ_OrderTicket(), TZ_OrderLots(), TZ_OrderClosePrice(), 3);

}

Saludos cordiales.

Estoy tratando de hacer esto en C#.

He tomado sus funciones y escribió una envoltura dll para .NET

es decir


double askprice = MT4ApiNet.MarketInfo_MT4(h, "GBPUSD", (int)MT4ApiNet.MarketInfoType.MODE_ASK)

MT4ApiNet.OrderSend_MT4(h, "GBPUSD", (int)MT4ApiNet.OrderType.OP_BUY, 1, askprice, 3, (askprice - 0.0050), (askprice + 0.0050), "Mi Programa", 100, 0);


Esto funciona perfectamente. Esta orden se muestra perfectamente.

Ahora... Si obtengo el número de orden de MetaTrader (usando 1234 como número de orden por ejemplo)


MT4ApiNet.OrderClose_MT4(h, 1234, 1, MT4ApiNet.OrderClosePrice_MT4(h,1234), 20);


Esto no cancela la orden...

Incluso si hago un ciclo a través de las órdenes .. y hacer un MT4ApiNet.OrderGet_MT4 todavía no funciona

 

PARA QUE SEPAS.

Después de hacer el OrderClose, si obtengo el último error..

MessageBox.Show(MT4ApiNet.ErrorDescription_MT4(MT4ApiNet.GetLastError_MT4(h));


Esto devuelve el error general



¿Puede al menos mostrar un OrderClose adecuado en delphi?

Incluso en delphi mi código se cuelga

 
TradeZone:

Hola juso,


<Archivos de programa>TradeZone\TZMT4API\NDeveloper\MetaTrader4 API.txt contiene lo que quieres.


Saludos cordiales.

Hola TradeZone


gracias por la pronta respuesta. La última vez que estuve haciendo desarrollo en c++ de forma activa fue hace 8 años y por aquel entonces uno necesitaba tener los archivos *.h y *.lib de la dll para poder ejercer la api de forma natural. En caso de tener el archivo *.h y no tener el *.lib todavía se puede hacer resolviendo la dirección de la función dinámicamente, aunque el proceso es más tedioso. Por lo tanto, puedo crear el archivo *.h yo mismo, aunque *.lib sigue faltando. Tal vez, hay una manera fácil de crear lib thingy de dll sí mismo que no soy consciente de.


Cuídate

Juso

 

TradeZone,


¿Podría publicar una muestra de trabajo OrderClose_MT4 comando que se envía desde la aplicación Delphi.

Como he dicho antes, no puedo conseguir que esto funcione.


Gracias.

 
bump .. bump ..
 

Bueno, como no he recibido respuesta a esto me he puesto a investigar cómo funciona realmente su DLL.

Bastante buena idea en realidad.

Cargar 10 gráficos cada uno adjuntando a un EA diferente.

Estos EAs se ejecutan y crean archivos en el directorio experts/files.

La DLL lee estos archivos para mostrar los datos en su aplicación programada.

El EA comprueba la existencia de los archivos (producidos por las llamadas a la DLL) y si existen procesa las transacciones y luego crea otros archivos para devolver los datos de respuesta y luego borra el archivo creado por la DLL para que sepamos que la transacción se ha completado o ha fallado.


Si no me equivoco tu Handle devuelto por el comando Login_MT4 es sólo un índice del nombre del directorio generado aleatoriamente. De esta manera usted sabe qué proceso terminal.exe para controlar y dónde colocar sus archivos generados en.


Podría estar equivocado con todo esto, sólo quiero arreglar el problema de OrderClose que he estado teniendo...


Sin embargo, en lugar de crear archivos una y otra vez... Yo recomendaría el uso de Memory Mapping(Create / Open Memory Map basado en Pair Name_Handle)

Buen trabajo por cierto.. solo que podrías decirme sobre el OrderClose para no tener que codificar mis propios EAs y la interfaz DLL de Memory Map.


Ahí lo tienen chicos, mi análisis sobre esta API.


¡Saludos!

 

Chicos,

Tengo una integración como esta funcionando bien y probada (no este código). Se hace a través de un experto, y expone la funcionalidad a través de un C++/ Managed C++ a un módulo .NET. Permite una gestión fluida de las operaciones, informa de los errores, da cotizaciones en tiempo real, etc. La comunicación es a través de TCP, por lo que es rápido y fiable.

Se publicará de forma totalmente gratuita como parte de una nueva plataforma de trading de código abierto (basada en .NET, puede utilizar MT4 para recibir datos o realizar órdenes). Usted puede elegir utilizar la plataforma, o simplemente una pequeña parte de la integración - depende de usted.

Si estás interesado levanta la mano y te daré más detalles :)

El lanzamiento de la plataforma está previsto para dentro de unos días (aproximadamente el 15 de octubre).

 

Peer2k,


Bien, ya pensé en usar TCP en lugar de Memory Mapping.

Si quieres enviar un enlace al código no me importaría mirarlo.

Aunque eso depende de ti :)


¡Saludos!

yewnix@gmail.com

 
hey, peer2k, eso sería muy bueno, por favor publícame con los detalles, yuryrub@gmail.com.