Ayuda con orden condic. en Visual Jforex o Java

Foro dedicado a la plataforma de trading de divisas de Dukascopy en la que la programación de estrategias se realiza mediante Java.
Responder
Avatar de Usuario
WallStreet
Mensajes: 2150
Registrado: 14 Ago 2006 13:34
Ubicación: blog-wallstreet.com
Contactar:

Ayuda con orden condic. en Visual Jforex o Java

Mensaje por WallStreet »

Hola, quería pedir un favorcito a los usuarios expertos en programación de sistemas en Visual Jforex o Java.

Realmente no es un sistema, es simplemente poder lanzar una orden a mercado, largo o corto, de cualquier par a una hora concreta (ejemplo 16:42:34 GMT).

Me parece increíble que desde propia plataforma Jforex no se pueda lanzar este tipo de órdenes pero bueno...

He pedido esto mismo en los foros de Dukascopy y a algunos expertos de visual jforex y parece ser que no se puede, cosa que me parece más increíble todavía... por que es un sistema de lo más sencillo que se puede pensar (lanzar una orden a mercado a una hora concreta). Algunos me dicen que hay que poner más condiciones y realmente no hay más condiciones, la única condición para lanzar la orden al mercado es que se cumpla la hora exacta programada en el sistema.

Por si algún alma caritativa quiere ayudarme, estas son las reglas del sistema, he puesto más reglas de las que necesito, la regla que realmente me interesa es poder elegir la hora concreta de entrada:

Par por defecto: Eur/usd (pero que pueda elegir luego cualquier par)
Dirección de la entrada por defecto: largo (pero que pueda elegir luego largo o corto)
Volumen de la entrada: 100.000 = 1 lote (pero que pueda elegir luego cualquier volumen)
Stop loss por defecto: 150 pips (pero que pueda elegir luego cualquier cantidad)
Take profit por defecto: 300 pips (pero que pueda elegir luego cualquier cantidad)
Hora de entrada por defecto: 16:14:45 h. GMT (pero que pueda elegir luego cualquier hora)
Tipo de entrada: A mercado a la hora programada anteriormente.

Ejemplo: Quiero entrar largo a mercado en eur/usd a las 16:14:45 h GMT con 1 lote con stop en 150 pips y profit en 300 pips.

Si hay que dar más datos o quitar alguno ponerlo por aquí.

Muchas gracias

Saludos
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12781
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por X-Trader »

Lo muevo aquí, más apropiado.

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
daykoku
Mensajes: 438
Registrado: 28 Dic 2010 21:20
Ubicación: Tenerife

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por daykoku »

Wall,

Yo queria hacer algo parecido en mi codigo y encontré este camino, espero que te sirva:

1- Lo primero es crearte una clase que según los inputs genere una booleana (prueba con esta)

Código: Seleccionar todo

// Es la funcion ValidTime
    
    private boolean isValidTime(int fromHour, int fromMin, int toHour, int toMin, Integer... days) throws JFException {
        
        long lastTickTime = mHistory.getLastTick(Instrument.EURUSD).getTime();
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
        //you want to work with the date of the last tick - in a case you are back-testing
        calendar.setTimeInMillis(lastTickTime);
        calendar.set(Calendar.HOUR_OF_DAY, fromHour);
        calendar.set(Calendar.MINUTE, fromMin);
        calendar.set(Calendar.SECOND, 0);
        long from = calendar.getTimeInMillis();        

        calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
        calendar.setTimeInMillis(lastTickTime);
        calendar.set(Calendar.HOUR_OF_DAY, toHour);
        calendar.set(Calendar.MINUTE, toMin);
        calendar.set(Calendar.SECOND, 0);
        long to = calendar.getTimeInMillis();
        
        boolean isDayOk = (Arrays.asList(days)).contains(calendar.get(Calendar.DAY_OF_WEEK));
        boolean timeOk = lastTickTime > from  && lastTickTime < to ;
     //   mConsole.getOut().println(String.format("calendar: %s - %s last tick: %s, isDayOk=%s, timeOk=%s",mSdf.format(from), mSdf.format(to), mSdf.format(lastTickTime), isDayOk, timeOk)); 
                        

        return isDayOk && timeOk;
    }
2- Luego en la parte donde lanza las ordenes simplemente te creas una condición (por ejemplo estaS)

Código: Seleccionar todo

boolean isValid1 = isValidTime(01, 00, 23, 00, Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY);
                boolean isValid2 = isValidTime(22, 59, 23, 00, Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY);
                boolean isValid3 = isValidTime(20, 00, 20, 01, Calendar.FRIDAY);
                boolean isValid4 = isValidTime(10, 59, 11, 00, Calendar.MONDAY, Calendar.TUESDAY,

A mi esto me funcionó, lo único que desconozco si hay una forma mas eficiente de hacerlo.

ya me cuentas,

Saludos
Avatar de Usuario
daykoku
Mensajes: 438
Registrado: 28 Dic 2010 21:20
Ubicación: Tenerife

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por daykoku »

Otra cosa, para la parte de las reglas de entrada puedes usar la interface SortedMap

https://docs.oracle.com/javase/tutorial ... d-map.html

Por ejemplo crearte una como esta:

private SortedMap<String, reglas> mReglas;

//-----------------------------------------------------------------------------------------------------
Par por defecto: Eur/usd (pero que pueda elegir luego cualquier par)
Dirección de la entrada por defecto: largo (pero que pueda elegir luego largo o corto)
Volumen de la entrada: 100.000 = 1 lote (pero que pueda elegir luego cualquier volumen)
Stop loss por defecto: 150 pips (pero que pueda elegir luego cualquier cantidad)
Take profit por defecto: 300 pips (pero que pueda elegir luego cualquier cantidad)
Hora de entrada por defecto: 16:14:45 h. GMT (pero que pueda elegir luego cualquier hora)
Tipo de entrada: A mercado a la hora programada anteriormente.
-----------------------------------------------------------------------------------------------------------//
public class reglas
{
private Instrument mI;
private int mDireccion;
private int mSL = 0;
private int mTP = 0;
private double mLotes = 0;

reglas(Instrument instrument, int direccion, double lots, int sl, int tp)
{
mI = instrument;
mDireccion = direccion;
mSL = sl;
mTP = tp;
mLotes = lots;

}

--------------------------------------------------------------------------------------------------------

Entonces reglas seria la que determina las reglas y la puedes condicionar con la otra funcion de ValidTime



PD: Esto es parte de un codigo que yo uso y funciona, pero que yo no hize. Creo que ya puedes arrancar tu solo con esto y debería funcionarte también.


La forma más simple es añadir en reglas lo de la funcion IsValid, pero yo no lo hize así. Prueba y me dices

Saludos
Avatar de Usuario
WallStreet
Mensajes: 2150
Registrado: 14 Ago 2006 13:34
Ubicación: blog-wallstreet.com
Contactar:

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por WallStreet »

Hola daykoku, muchas gracias por tu valiosa y rápida respuesta, el problema es que yo no tengo ni idea de programación de ningún tipo. Lo máximo que sé hacer es subir un archivo .java con el código ya escrito a la jforex o subir el archivo .vfs a la plataforma Visual jforex y si tengo suerte ponerlo a funcionar.

El código que me pones no tengo ni idea de que hacer con él (todo me suena como si fuera chino). Quizá es pedir demasiado pero necesito el archivo con el código ya escrito para poder probarlo y ver si realmente es lo que pido.

En cualquier caso muchas gracias por todas las molestias que te has tomado para responder.

Saludos...

Avatar de Usuario
daykoku
Mensajes: 438
Registrado: 28 Dic 2010 21:20
Ubicación: Tenerife

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por daykoku »

BUff...lo que necesitas es un programa completo y testeado. Aunque tuviera tiempo me falta conocimiento, mi alcance llega a trozos de código que modifico o creo según necesidades, pero trabajando sobre una base ya testeada.

Se me ocurre que busques algún EA sencillito que gatille según algunas de tus condiciones y vayas añadiendo cosas hasta que te vaya funcionando. Es lo que yo suelo hacer.

Siento no poder ayudarte más.

Saludos
Avatar de Usuario
WallStreet
Mensajes: 2150
Registrado: 14 Ago 2006 13:34
Ubicación: blog-wallstreet.com
Contactar:

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por WallStreet »

daykoku escribió:BUff...lo que necesitas es un programa completo y testeado. Aunque tuviera tiempo me falta conocimiento, mi alcance llega a trozos de código que modifico o creo según necesidades, pero trabajando sobre una base ya testeada.

Se me ocurre que busques algún EA sencillito que gatille según algunas de tus condiciones y vayas añadiendo cosas hasta que te vaya funcionando. Es lo que yo suelo hacer.

Siento no poder ayudarte más.

Saludos
Muchas gracias daykoku, has hecho bastante, no te preocupes.

Estoy buscando alguno parecido ya hecho, si lo encuentro lo pondré por aquí.

Lo que me pregunto es por qué en ninguna plataforma de ningún broker (que yo conozca) está incluida la opción de poner ordenes condicionadas a una hora concreta, no deja de ser más que una orden limitada a una hora concreta en lugar de a un precio concreto :shock:

Saludos...
TRADERMIX
Mensajes: 8
Registrado: 17 Jun 2015 19:20

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por TRADERMIX »

Hola WALLSTREET, pues lo mismo me pasa a mí desde hace años, yo tengo una estrategia de poner una posición en el XAU USD a las 00.12H y todos los putos días tengo que estar delante de la pantalla para colocar la #@#!%# orden, ya que no existe ninguna opción de ponerla cuando quieras para que salte a esa precisa hora, no existe ni en jforex ni en METATRADER, así llevo cuatro años poniendo todas las noches las orden a las OO.12H, pk a nadie se le ocurre de poner un programa de poner ordenes condicionadas horarias y no sólo sobre precios.Así que de momento me fastidio y todos los días a esa hora delante del ordenador si quiero colocar la orden.

En fin.... no queda otra que.....

Saludos
TRADERMIX
:lol: :lol:
Avatar de Usuario
WallStreet
Mensajes: 2150
Registrado: 14 Ago 2006 13:34
Ubicación: blog-wallstreet.com
Contactar:

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por WallStreet »

TRADERMIX escribió:Hola WALLSTREET, pues lo mismo me pasa a mí desde hace años, yo tengo una estrategia de poner una posición en el XAU USD a las 00.12H y todos los putos días tengo que estar delante de la pantalla para colocar la #@#!%# orden, ya que no existe ninguna opción de ponerla cuando quieras para que salte a esa precisa hora, no existe ni en jforex ni en METATRADER, así llevo cuatro años poniendo todas las noches las orden a las OO.12H, pk a nadie se le ocurre de poner un programa de poner ordenes condicionadas horarias y no sólo sobre precios.Así que de momento me fastidio y todos los días a esa hora delante del ordenador si quiero colocar la orden.

En fin.... no queda otra que.....

Saludos
TRADERMIX
:lol: :lol:
Hola TRADERMIX, bueno... al final después de mucho buscar encontré casi lo que quiero ya hecho, me sirve perfectamente, es posible que tu encuentres algo parecido en las webs donde alojan EAs de metatrader, que hay muchas.

Ojo... primero haz montones de pruebas en demo de los archivos de descargues, yo probé bastantes hasta que dí con el que me podía servir.

Lo que yo buscaba lo encontré aquí: https://www.mql5.com/es/code/10822

Seguramente alguien ya habrá compartido algo parecido a lo que pides, en último recurso siempre puedes recurrir a los profesionales que te lo hacen por menos de 30 euros creo.

Saludos...
TRADERMIX
Mensajes: 8
Registrado: 17 Jun 2015 19:20

Re: Ayuda con orden condic. en Visual Jforex o Java

Mensaje por TRADERMIX »

Wallstreet, muchisimas gracias por el Ea, es justo lo que necesitaba, ya lo he probado durante toda la semana y funciona perfectamente.

Saludos
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “JForex”