Ejecutar en Remote Run

Foro dedicado a la plataforma de trading de divisas de Dukascopy en la que la programación de estrategias se realiza mediante Java.
Avatar de Usuario
eurer
Mensajes: 793
Registrado: 09 May 2005 16:05
Ubicación: Tenerife

Re: Ejecutar en Remote Run

Mensaje por eurer »

Gracias, entendido, sabrías modificarlo para que haga el breakeven que quiero?
Si tengo 30 pips de stop loss, que cuando vaya ganando 30 pips, ponga el stop loss justo en el precio que se hizo la entarda en largo o en corto, así si el precio se da la vuelta en contra de la posición abierta, no pierda ningún pip. Pensaba que esta estrategia de Dukascopy iba a hacer eso.
Un saludo.

Avatar de Usuario
eurer
Mensajes: 793
Registrado: 09 May 2005 16:05
Ubicación: Tenerife

Re: Ejecutar en Remote Run

Mensaje por eurer »

Más sencillo, si pongo stop loss de 30 pips en la orden de entrada(stop buy o stop sell), y en la estrategia pongo 1 pip, entonces cuando lleve 30 pips de ganancia, me lo pondrá 1 pip por encima del precio de apertura de la posición?
Entonces si me valdría tal como está programado.

Avatar de Usuario
mascara
Mensajes: 338
Registrado: 18 Oct 2007 23:15

Re: Ejecutar en Remote Run

Mensaje por mascara »

eurer escribió:Más sencillo, si pongo stop loss de 30 pips en la orden de entrada(stop buy o stop sell), y en la estrategia pongo 1 pip, entonces cuando lleve 30 pips de ganancia, me lo pondrá 1 pip por encima del precio de apertura de la posición?
Entonces si me valdría tal como está programado.
Creo que sí es así

Avatar de Usuario
eurer
Mensajes: 793
Registrado: 09 May 2005 16:05
Ubicación: Tenerife

Re: Ejecutar en Remote Run

Mensaje por eurer »

Acabo de comprobarlo en la cuenta real, el stop loss está 1pip por encima del precio de entrada, es prácticamente estar en el breakeven. Y encima no pierdo el pip que me cuesta abrir y cerrar la posición. :D
Adjuntos
Captura.JPG

Avatar de Usuario
eurer
Mensajes: 793
Registrado: 09 May 2005 16:05
Ubicación: Tenerife

Re: Ejecutar en Remote Run

Mensaje por eurer »

Mi gozo en un pozo!
La estrategia se ha parado desde los servidores de Dukascopy Bank. Por chat me han confirmado esto y me han dicho esto otro:
This means that strategy overloaded server CPU for more then 60 sec and was stopped automaticaly
y que mejorando el código de programación podría evitar de nuevo que la estrategia se parase.
Sabrías optimizar el código?
Estoy haciendo trading en real con cinco pares a la vez, pude ser que eso sea un problema, aunque no entiendo el mensaje que recibí sobre la CPU. Enfadado le contesté que comprasen una CPU mejor.
Pongo de nuevo lo último que me modificaste para que funcionase en Remote Server.

/*

StopManager.java
version 1.0
Copyright 2010 Quantisan.com

Move stops to breakeven when equidistance to original stop loss

*/

package jforex;

import com.dukascopy.api.*;
import java.util.*;

public class StopManagerInstruments implements IStrategy {
private IEngine engine;
private IConsole console;
private IContext context;

@Configurable("Instruments") public Set<Instrument> eInstruments = new HashSet<Instrument>( Arrays.asList(new Instrument[] {
Instrument.EURUSD, Instrument.EURGBP
})) ;
@Configurable("Lock-in Pips for Breakeven")
public int lockPip = 3;

@Configurable("Move stop to breakeven?")
public boolean moveBE = true;

public void onStart(IContext context) throws JFException {
this.engine = context.getEngine();
this.console = context.getConsole();
this.context = context;

context.setSubscribedInstruments(eInstruments); // nos subscribimos a los pares seleccionados...
}

public void onAccount(IAccount account) throws JFException {
}

public void onMessage(IMessage message) throws JFException {
}

public void onStop() throws JFException {
}

public void onTick(Instrument instrument, ITick tick) throws JFException {

if(eInstruments.contains(instrument)){//El bloque for solo cuando el par está entre los seleccionados...
for (IOrder order : engine.getOrders(instrument)) {
if (order.getState() == IOrder.State.FILLED) {
boolean isLong;
double open, stop, diff, newStop;
String label = order.getLabel();
IChart chart;

isLong = order.isLong();
open = order.getOpenPrice();
stop = order.getStopLossPrice();
diff = open - stop; // stop loss distance

if (isLong) { // long side order
if (moveBE && diff > 0 && tick.getBid() > (open + diff)) {
// make it breakeven trade + lock in a few pips
newStop = open + instrument.getPipValue() * lockPip;
order.setStopLossPrice(newStop);
console.getOut().println(label + ": Moved stop to breakeven");

chart = this.context.getChart(instrument);
chart.draw(label + "_BE", IChart.Type.SIGNAL_UP, tick.getTime(), newStop);
}
}
else { // short side order
// Move to breakeven
if (moveBE && diff < 0 && tick.getAsk() < (open + diff)) { // diff is negative
// make it breakeven trade + lock in a few pips
newStop = open - (instrument.getPipValue() * lockPip);
order.setStopLossPrice(newStop);
console.getOut().println(label + ": Moved stop to breakeven");

chart = this.context.getChart(instrument);
chart.draw(label + "_BE", IChart.Type.SIGNAL_DOWN, tick.getTime(), newStop);
}
}
}
}
}//fin if(eInstruments.contains(instrument))
}

public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
}
}

Un saludo.
Adjuntos
Captura.JPG

Avatar de Usuario
mascara
Mensajes: 338
Registrado: 18 Oct 2007 23:15

Re: Ejecutar en Remote Run

Mensaje por mascara »

Pues no sé qué se podría optimizar ahí, porque hace bien poco... además el código era suyo ¿no? jeje... No sé... habrá sido un pico puntual o algo... Más que tocarlo podrías ejecutar cinco estrategias con un par cada una mejor que una con cinco pares ¿no?

Avatar de Usuario
eurer
Mensajes: 793
Registrado: 09 May 2005 16:05
Ubicación: Tenerife

Re: Ejecutar en Remote Run

Mensaje por eurer »

Hola máscara.
La estrategia es bastante simple. Yo tampoco veo mucho que se pueda optimizar.
Lo que voy a hacer, ya que es una Estrategia programada por Dukascopy, es preguntarles a ellos.
Nunca pensé que tuviese un problema con una Estrategia programada por ellos mismos.
Pondré aquí la contestación.
Un saludo.


Responder

Volver a “JForex”