Resposta

Fazer a gestão avançada do dinheiro do portfólio por meio do controle de ações

3 respostas

stearno

Cliente, bbp_participant, comunidade, 379 respostas.

Perfil da visita

8 anos atrás #114345

Hoje, eu estava examinando o código de controle de ações. Tive uma ideia: talvez eu pudesse usá-lo para testar estratégias mais avançadas de gerenciamento de dinheiro para portfólios.

 

Uma estratégia que quero testar é interromper a negociação se atingir a perda de x% em um dia e voltar a negociar no dia seguinte. 

 

(Não tenho treinamento formal para realmente entender classes, objetos etc., por isso estou um pouco confuso com a página da API e como encontrar o que preciso). Portanto, estou um pouco confuso com a página da API e como encontrar o que preciso)

 

O que eu preciso é da data (dia). Sei que posso obter o tempo de abertura da negociação em segundos, mas preciso ser capaz de parar a negociação até que seja um novo dia. No NT7, eu diria algo como:

 

se(Time[I-1].Day != Time[i].Day)

{

    TradingHasReachedDailyLimit = false; //redefine o acionador que interrompe a negociação até o dia seguinte

    TodaysLImitBalance = originalTrades[i].balanceOnOpen - ( originalTrades[i].balanceOnOpen * 0,05 )

}  

 

Em seguida, eu usaria o seguinte trecho copiado de TrailingProfit:

 

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

 

Agradeço a orientação e, em seguida, tentarei criar o código e, provavelmente, voltarei para pedir mais orientações. Obrigado.

 

-Stearno

0

Tamas

Cliente, bbp_participante, comunidade, sq-ultimate, 73 respostas.

Perfil da visita

8 anos atrás #133556

Olá, Stearno,

usar a classe SQTime.

Por exemplo.

SQTime dt = new SQTime(trade.openTime);

dt.getDate();

ou qualquer outro método

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

Tom

0

Tamas

Cliente, bbp_participante, comunidade, sq-ultimate, 73 respostas.

Perfil da visita

8 anos atrás #133633

Olá, Stearno,

 

Talvez isso possa funcionar???

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

  int percent = getIntParameterValue("_PERCENT_");

  for(int i=0; i<originalTrades.length; 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) );
}

Com os melhores cumprimentos,

Tomas

0

stearno

Cliente, bbp_participant, comunidade, 379 respostas.

Perfil da visita

8 anos atrás #133635

Obrigado, Tomas. Parece que está funcionando. Agora que consigo ver o gráfico, tenho outros problemas para resolver. Voltarei se ficar preso novamente.

 

-Stearno

0

Visualizando 3 respostas - 1 até 3 (de um total de 3)