Clôture d'un ordre de marché
Après avoir ouvert plusieurs positions, ce snippets ferme N ordres ("Nb Ordre"), à partir d'un MagicNumber
Par exemple, vous avez 5 positions avec le nombre magique : 1004, 1003, 1002, 1001, 1000.
Vous entrez le nombre magique : 1004
Vous entrez Nb Ordre : 5
Il fermera les 5 positions.
Voici le code
package SQ.Blocks.Order.Close ; import SQ.Functions.OrderFunctions ; import SQ.Internal.ActionBlock ; import com.strategyquant.lib.* ; import com.strategyquant.datalib.* ; import com.strategyquant.tradinglib.* ; // Modifié en France par Emmanuel Evrard pour la communauté StrategyQuantX :) @BuildingBlock(returnType = ReturnTypes.Action) @Help("Fermer N positions qui correspondent aux critères") @SortOrder(500) // Dans AlgoWizard, il s'agit d'une position de la boîte de dépôt (400 ou 500 ou 600 etc.) de cette fonction dans le menu "Ajouter une nouvelle condition", vous devrez peut-être l'ajuster en fonction de la fonction déjà installée sur la même boîte de dépôt. @IgnoreInBuilder @NotSupportedFor(engines="EL") public class CloseNPositions extends ActionBlock { @Parameter(defaultValue="Current", category="Order identification", showIfDefault=false, allowAny=true) public String Symbol ; @Parameter(defaultValue="0", category="Order identification", showIfDefault=false) @Editor(type=Editors.Selection, values="Long=1,Short=-1,Any=0") public int Direction ; @Parameter(defaultValue="MagicNumber", category="Order identification", showIfDefault=false) @Help("Numéro magique permettant d'identifier la commande") @Editor(type=Editors.SelectionVariablesWithAny) public int MagicNumber ; @Parameter(defaultValue="Number Of Order", category="Order identification", showIfDefault=false) @Help("Number Of Order est utilisé pour définir la quantité de la commande, leurs MagicNumbers sont des successeurs du MagicNumber ci-dessus") @Editor(type=Editors.SelectionVariables) public int NbOrder ; @Parameter(defaultValue="", category="Identification de l'ordre", showIfDefault=false) @Help("Le commentaire peut également être utilisé pour identifier la commande. Dans le cas d'un commentaire, la commande correspond si le commentaire de la commande contient le texte spécifié ici.") public String Comment ; //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ public CloseNPositions() { } //------------------------------------------------------------------------ @Override public void OnAction() throws TradingException { int total = Strategy.Trader.getOpenOrdersCount(false) ; if (NbOrder >= 1) { int MagicNumber1 = MagicNumber ; for(int i1 = 0 ; i1 =0 ; i--) { ILiveOrder order = Strategy.Trader.getOpenOrder(i, false) ; if(OrderFunctions.identify(order, Strategy, Symbol, Direction, MagicNumber, Comment)) { order.setExitIndex((byte) -1) ; order.Close(OrderCloseTypes.ExitSignal) ; } } } } } }