LECTURE SEULEMENT

Le forum est désormais une archive en lecture seule.

Pour les rapports de bogues et les questions relatives à la plateforme → [email protected]

Notre communauté vit sur Discord et YouTube - rejoignez-nous !

JOIGNEZ-NOUS SUR Discord YouTube

La colonne de la banque de données affiche toujours une valeur nulle

1 réponses

Julian Gonzalez

Abonné, bbp_participant, sq-ultimate, client, communauté, 8 réponses.

Visiter le profil

Il y a 10 mois #291831

J'ai créé une colonne Databank et un code modèle est généré automatiquement pour calculer netProfit. Je le compile et redémarre l'interface utilisateur SQX. Lorsque j'ouvre la DataBank à partir de Builder et que j'ajoute la colonne, elle affiche toujours la valeur zéro. Il en va de même lorsque je télécharge des extraits de code depuis la communauté.

Si j'en crée un nouveau avec seulement getNumericValue() et getValue(), cela fonctionne parfaitement. Il semble donc que la fonction compute() ne fasse rien, pourquoi ?

J'ai déjà essayé avec les versions 136, 142 et 143. À l'aide !

Voici le modèle :

package SQ.Columns.Databanks;
import com.strategyquant.lib.* ;
import com.strategyquant.datalib.* ;
import com.strategyquant.tradinglib.* ;
public class Prueba2 extends DatabankColumn {
  public Prueba2() {
    super(“ Prueba2 ”,
          DatabankColumn.Decimal2, // format d'affichage de la valeur
          ValueTypes.Maximize, // si la valeur doit être maximisée / minimisée / approximée à une valeur
          0, // valeur cible si l'approximation a été choisie
          0, // moyenne minimale de cette valeur
          100) ; // moyenne maximale de cette valeur
    setWidth(80) ; // largeur par défaut de la colonne en pixels
    setTooltip(“ Votre info-bulle ici ”) ;
    /* Si cette nouvelle colonne dépend d'autres colonnes qui doivent être calculées au préalable, placez-les ici.
       Veillez à ne pas créer de dépendance circulaire, telle que A dépend de B et B dépend de A.
       Les colonnes (=valeurs statistiques) sont identifiées par le nom de la classe.
    */
    //setDependencies(“ DrawdownPct ”, “ NumberOfTrades ”) ;
  }
  //————————————————————————
  /**
   * Cette méthode doit renvoyer la valeur calculée de cette nouvelle colonne. Vous devez généralement la calculer à partir de la liste des commandes.
   * ou à partir de certaines valeurs statistiques déjà calculées (autres colonnes de la base de données).
   */
  @Override
  public double compute(SQStats stats, StatsTypeCombination combination, OrdersList ordersList, SettingsMap settings, SQStats statsLong, SQStats statsShort) throws Exception {
    /* un exemple – voici comment obtenir d'autres valeurs dont dépend cette nouvelle valeur */
    //int nombreDeTransactions = stats.getInt(“ NombreDeTransactions ”) ;
    //double drawdownPct = stats.getDouble(“ DrawdownPct ”) ;
    /* un exemple – calcul du bénéfice net à partir de la liste des transactions */
    double netProfit = 0 ;
    for(int i = 0; i<ordersList.size(); i++) {
      Commande commande = listeCommandes.get(i) ;
      if(commande.estCommandeSolde()) {
        // ne pas compter les ordres de solde (dépôts, retraits) dans
        continuer ;
      }
      /* La méthode getPLByStatsType renvoie automatiquement le PL en fonction du type de statistiques donné : en argent, % ou pips. */
      double PL = getPLByStatsType(ordre, combinaison) ;
      netProfit += PL ;
    }
    /* arrondir et renvoyer la valeur. Elle sera enregistrée dans les statistiques sous la clé “ Prueba2 ” */
    retourner round2(netProfit) ;
  }
}

0

Julian Gonzalez

Abonné, bbp_participant, sq-ultimate, client, communauté, 8 réponses.

Visiter le profil

Il y a 10 mois #291832

Résolu !

Il semble que la fonction compute() ne se mette à jour que lorsque vous forcez la stratégie à être testée à nouveau (en la testant à nouveau ou en générant une nouvelle stratégie). En revanche, les fonctions getNumericValue() et getValue() n'en ont pas besoin.

🙂

1

Affichage d'1 réponse (sur un total de 1)