Répondre

Faire de la gestion avancée de portefeuille par le contrôle des actions

3 réponses

stearno

Client, bbp_participant, communauté, 379 réponses.

Visiter le profil

Il y a 8 ans #114345

J'ai examiné le code de contrôle des actions aujourd'hui. J'ai pensé que je pourrais peut-être l'utiliser pour tester des stratégies de gestion financière plus avancées pour les portefeuilles.

 

Une stratégie que je souhaite tester est d'arrêter le trading si la perte atteint x% en un jour, puis de reprendre le trading le lendemain. 

 

(Je n'ai pas la formation formelle nécessaire pour comprendre les classes, les objets, etc. Je suis donc un peu déconcerté par la page API et par la manière de trouver ce dont j'ai besoin).

 

Ce dont j'ai besoin, c'est de la date (jour). Je sais que je peux obtenir l'heure d'ouverture de la transaction en secondes, mais j'ai besoin de pouvoir arrêter la transaction jusqu'à ce que ce soit un nouveau jour. Dans NT7, je dirais quelque chose comme :

 

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

{

    TradingHasReachedDailyLimit = false ; //réinitialise le déclencheur qui arrête la négociation jusqu'au jour suivant

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

}  

 

J'utiliserais alors le modèle ci-dessous, copié à partir de TrailingProfit :

 

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

 

J'apprécie les conseils et je vais essayer de faire le code et je reviendrai très probablement pour d'autres conseils. Merci.

 

-Stearno

0

Tamas

Client, bbp_participant, community, sq-ultimate, 73 réponses.

Visiter le profil

Il y a 8 ans #133556

Bonjour Stearno,

utiliser la classe SQTime.

eg.

SQTime dt = new SQTime(trade.openTime) ;

dt.getDate() ;

ou toute autre méthode

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

Tom

0

Tamas

Client, bbp_participant, community, sq-ultimate, 73 réponses.

Visiter le profil

Il y a 8 ans #133633

Bonjour Stearno,

 

Cela pourrait peut-être fonctionner ?

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

Je vous prie d'agréer, Madame, Monsieur, l'expression de mes salutations distinguées,

Tomas

0

stearno

Client, bbp_participant, communauté, 379 réponses.

Visiter le profil

Il y a 8 ans #133635

Merci, Tomas. Cela semble fonctionner. Maintenant que je peux voir le graphique, j'ai d'autres problèmes à résoudre. Je reviendrai si je suis à nouveau bloqué.

 

-Stearno

0

Affichage de 3 réponses de 1 à 3 (sur un total de 3)