Respuesta

Realizar una gestión avanzada de la cartera mediante el control de las acciones

3 respuestas

stearno

Cliente, bbp_participant, comunidad, 379 respuestas.

Visitar el perfil

hace 8 años #114345

Hoy he estado revisando el código de control de renta variable. Tuve una idea, tal vez podría usarlo para probar estrategias de gestión de dinero más avanzadas para las carteras.

 

Una estrategia que quiero probar es dejar de operar si se alcanzan pérdidas x% en un día y volver a operar al día siguiente. 

 

(No tengo la formación formal para entender realmente las clases, objetos, etc.). Así que estoy un poco confundido por la página de la API y cómo encontrar lo que necesito)

 

Lo que necesito es la fecha (día). Sé que puedo obtener la hora de apertura de la operación en segundos, pero necesito poder dejar de operar hasta que sea un nuevo día. En NT7 diría algo como:

 

if(Hora[I-1].Día != Hora[i].Día)

{

    TradingHasReachedDailyLimit = false; //restablecer el trigger que detiene la negociación hasta el día siguiente

    TodaysLImitBalance = originalTrades[i].balanceOnOpen - ( originalTrades[i].balanceOnOpen * 0.05 )

}  

 

Entonces yo usaría lo siguiente copiado de TrailingProfit:

 

"...trades[i].balanceOnOpen <= TodaysLImitBalance[i]..."

 

Agradezco la orientación y luego intentaré hacer el código y lo más probable es que regrese por más consejos. Gracias.

 

-Stearno

0

Tamas

Cliente, bbp_participant, comunidad, sq-ultimate, 73 respuestas.

Visitar el perfil

hace 8 años #133556

Hola Stearno,

utilizar la clase SQTime.

Ej.

SQTime dt = new SQTime(trade.openTime);

dt.getDate();

o cualquier otro método

https://strategyquant.com/qa_api/com/strategyquant/lib/time/SQTime.html

Tom

0

Tamas

Cliente, bbp_participant, comunidad, sq-ultimate, 73 respuestas.

Visitar el perfil

hace 8 años #133633

Hola Stearno,

 

tal vez esto podría funcionar???

@Override
public double[] computeBalanceControlLine(Trade[] originalTrades) throws Exception {
  double[] controlLine = new double[originalTrades.length];

  int porcentaje = getIntParameterValue("_PERCENT_");

  for(int i=0; i<longitudTradesoriginal; i++) {
    if(i==0 || !SQTime.toDateString(originalTrades[i].openTime).equals(SQTime.toDateString(originalTrades[i-1].openTime))) {
      controlLine[i] = computdailyriskamout(originalTrades, i, percent);
    } else {
      controlLine[i] = controlLine[i-1];
    }
  }

  return controlLine;
}

private double computdailyriskamout(Trade[] trades, int i, int percent) {
  return trades[i].balanceOnOpen - (trades[i].balanceOnOpen * (percent/100) );
}

Saludos cordiales,

Tomas

0

stearno

Cliente, bbp_participant, comunidad, 379 respuestas.

Visitar el perfil

hace 8 años #133635

Gracias, Tomas. Parece que funciona. Ahora que puedo ver el gráfico, tengo otros problemas que resolver. Volveré si me quedo atascado de nuevo.

 

-Stearno

0

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)