Faire de la gestion avancée de portefeuille par le contrôle des actions
3 réponses
stearno
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
Tamas
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
Tamas
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
stearno
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
Affichage de 3 réponses de 1 à 3 (sur un total de 3)