Chiudere Tutte le posizioni tranne una
Chiudere tutte le posizioni tranne una: il "Numero magico escluso" selezionato.
pacchetto SQ.Blocks.Order.Close; importare SQ.Functions.OrderFunctions; importare SQ.Internal.ActionBlock; importare com.strategyquant.lib.*; importare com.strategyquant.datalib.*; importare com.strategyquant.tradinglib.*; // Modificato in Francia da Emmanuel Evrard per la comunità StrategyQuantX :) @BuildingBlock(returnType = ReturnTypes.Action) @Help("Chiudi tutte le posizioni tranne una") @SortOrder(600) // In AlgoWizard, si tratta di una posizione di dropbox (400 o 500 o 600 ecc.) di questa funzione nel menu di "Add New Condition", che potrebbe essere necessario adattare a seconda della funzione già installata nello stesso dropbox. @IgnoreInBuilder @NotSupportedFor(engines="EL") public class CloseAllPositionsExcept extends ActionBlock { @Parameter(defaultValue="Current", category="Order identification", showIfDefault=false, allowAny=true) public String Symbol; @Parameter(defaultValue="1", category="Identificazione ordine", showIfDefault=false) @Editor(type=Editors.Selection, values="Long=1,Short=-1,Any=0") public int Direzione; @Parameter(defaultValue="MagicNumber", category="Order identification", showIfDefault=false) @Help("Numero magico che può identificare l'ordine.") @Editor(type=Editors.SelectionVariablesWithAny) public int MagicNumber; @Parameter(defaultValue="MagicNumber", category="Identificazione ordine", showIfDefault=false) @Help("Numero magico dell'ordine escluso, questo ordine non sarà chiuso") @Editor(type=Editors.SelectionVariables) public int MagicNumberExcluded; //@Parametro(defaultValue="", category="Identificazione ordine", showIfDefault=false) //@Help("Il commento può essere utilizzato anche per identificare l'ordine. In caso di Commento, l'ordine corrisponde se i commenti dell'ordine contengono il testo qui specificato.") public String Comment; //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ public CloseAllPositionsExcept() { } //------------------------------------------------------------------------ @Override public void OnAction() throws TradingException { int total = Strategy.Trader.getOpenOrdersCount(false); for(int i=totale-1; i>=0; i--) { ILiveOrder order = Strategy.Trader.getOpenOrder(i, false); if(OrderFunctions.identify(order, Strategy, Symbol, Direction, MagicNumber, Comment)) { if (order.getMagicNumber() != MagicNumberExcluded) { order.setExitIndex((byte) -1); order.Close(OrderCloseTypes.ExitSignal); } } } } }