Documentation
Applications
Dernière mise à jour le 18. 11. 2021 par clonex / Ivan Hudec
Exemple - Ratio Trade Edge
Contenu des pages
Le ratio d'avantage nous indique à quel point le potentiel d'une transaction donnée était élevé. Le calcul est le rapport entre la MFE normalisée et la MAE normalisée. Nous avons déjà abordé la question du Edge Ratio dans cet article article. Dans le tutoriel suivant, nous allons vous montrer comment créer une nouvelle colonne de transactions qui nous permettra d'analyser l'Edge Ratio de chaque transaction.
Étape 1 - Créer une nouvelle colonne Commerce
Ouvrez CodeEditor, cliquez sur Create new et choisissez l'option List of trades column - Name it. EdgeRatioTrade.
Cela créera un nouveau snippet EdgeRatioTrade.java dans le dossier Utilisateur/Snippets/SQ/Colonnes/Trades
Définissons Decimal2 dans le constructeur afin d'obtenir la valeur avec deux décimales.
public class EdgeRatioTrade extends TradelistColumn { public EdgeRatioTrade() { super("EdgeRatioTrade", Decimal2) ; setWidth(80) ; }
Étape 2 - Mise en œuvre de la méthode getValue()
Cette méthode a pour paramètre Commande order est une classe qui stocke les valeurs de chaque ordre de la stratégie. En même temps, cette classe contient des méthodes qui nous permettent de trier ou d'identifier l'ordre. En arrière-plan, StrategyQuant X appelle la méthode getValue(Order order) et produit une valeur pour chaque ordre de la stratégie.
@Override public Object getValue(Order order) { double mae = order.PipsMAE ; //obtient le MAE de l'ordre en pips double mfe = order.PipsMFE ; // obtient la MAE de l'ordre en pips double atrOnOpen = order.ATROnOpen ; // obtient l'ATR de l'ordre en pips double normMAE = mae/atrOnOpen ; // obtient le MAE normalisé double normMFE = mfe/atrOnOpen ; // obtient l'EMF normalisé double eRTrade = SQUtils.safeDivide(normMFE,normMAE) ; // SQUtils.safeDivide précède l'exception de division par zéro nulle. return eRTrade ; }
Conseil:
Si vous souhaitez déboguer votre code, ajoutez simplement la fonction fdebug("","") à votre code. Le journal dans lequel les valeurs sont écrites se trouve dans le dossier user/Log/StrategyQuant.
@Override public Object getValue(Order order) { double mae = order.PipsMAE ; //obtient le MAE de l'ordre en pips double mfe = order.PipsMFE ; // obtient la MAE de l'ordre en pips double atrOnOpen = order.ATROnOpen ; // obtient l'ATR de l'ordre en pips double normMAE = mae/atrOnOpen ; // obtient le MAE normalisé double normMFE = mfe/atrOnOpen ; // obtient l'EMF normalisé double eRTrade = SQUtils.safeDivide(normMFE,normMAE) ; // SQUtils.safeDivide précède l'exception de division par zéro nulle. /// fdebug fdebug("EdgeRatioTrade---> "," order.Ticket : "+order.Ticket+" order.PipsMAE : "+order.PipsMAE+" order.ATROnOpen : "+order.ATROnOpen) ; return eRTrade ; }
Étape 3 - Ajout d'un extrait à la liste des métiers
Après avoir compilé l'extrait et redémarré StrategyQuantX, vous pouvez ajouter l'extrait à la liste des opérations.
Code complet commenté de l'extrait
package SQ.Columns.Trades ; import com.strategyquant.lib.* ; import com.strategyquant.datalib.* ; import com.strategyquant.tradinglib.* ; public class EdgeRatioTrade extends TradelistColumn { public EdgeRatioTrade() { super("EdgeRatioTrade", Decimal2) ; setWidth(80) ; } @Override public Object getValue(Order order) { double mae = order.PipsMAE ; //obtient le MAE de l'ordre en pips double mfe = order.PipsMFE ; // obtient la MAE de l'ordre en pips double atrOnOpen = order.ATROnOpen ; // obtient l'ATR de l'ordre en pips double normMAE = mae/atrOnOpen ; // obtient le MAE normalisé double normMFE = mfe/atrOnOpen ; // obtient l'EMF normalisé double eRTrade = SQUtils.safeDivide(normMFE,normMAE) ; // SQUtils.safeDivide précède l'exception de division par zéro nulle. return eRTrade ; } }
Cet article a-t-il été utile ? L'article était utile L'article n'était pas utile
très bien ! !!