Antwort

Fortgeschrittene Geldverwaltung durch Aktienkontrolle

3 Antworten

stearno

Kunde, bbp_participant, Gemeinschaft, 379 Antworten.

Profil besuchen

vor 8 Jahren #114345

Ich habe mir heute den Code für die Aktiensteuerung angesehen. Mir kam der Gedanke, dass ich ihn vielleicht verwenden könnte, um fortgeschrittenere Geldverwaltungsstrategien für Portfolios zu testen.

 

Eine Strategie, die ich testen möchte, ist, den Handel zu beenden, wenn x% Verlust an einem Tag erreicht wird, und dann am nächsten Tag wieder zu handeln. 

 

(Ich habe nicht die formale Ausbildung, um Klassen, Objekte usw. wirklich zu verstehen. Daher bin ich ein wenig verwirrt von der API-Seite und wie ich finde, was ich brauche)

 

Was ich brauche, ist das Datum (Tag). Ich weiß, dass ich die Eröffnungszeit des Handels in Sekunden erhalten kann, aber ich muss in der Lage sein, den Handel zu stoppen, bis es ein neuer Tag ist. In NT7 würde ich sagen, etwas wie:

 

if(Zeit[I-1].Tag != Zeit[i].Tag)

{

    TradingHasReachedDailyLimit = false; //setzt den Trigger zurück, der den Handel bis zum nächsten Tag stoppt

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

}  

 

Dann würde ich die untenstehende Kopie von TrailingProfit verwenden:

 

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

 

Ich danke für die Anleitung und werde dann versuchen, den Code zu erstellen und wahrscheinlich wiederkommen, um weitere Ratschläge zu erhalten. Danke.

 

-Stearno

0

Tamas

Kunde, bbp_participant, community, sq-ultimate, 73 Antworten.

Profil besuchen

vor 8 Jahren #133556

Hallo Stearno,

die Klasse SQTime verwenden.

z. B.

SQTime dt = new SQTime(trade.openTime);

dt.getDate();

oder eine andere Methode

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

Tom

0

Tamas

Kunde, bbp_participant, community, sq-ultimate, 73 Antworten.

Profil besuchen

vor 8 Jahren #133633

Hallo Stearno,

 

Vielleicht könnte das funktionieren?

@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) );
}

Mit freundlichen Grüßen,

Tomas

0

stearno

Kunde, bbp_participant, Gemeinschaft, 379 Antworten.

Profil besuchen

vor 8 Jahren #133635

Danke, Tomas. Es scheint zu funktionieren. Jetzt, wo ich das Diagramm sehen kann, habe ich andere Probleme zu lösen. Ich werde wiederkommen, wenn ich wieder nicht weiterkomme.

 

-Stearno

0

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)