Cerrar Todas las posiciones excepto una
Cerrar Todas las posiciones excepto una : el "Número Mágico Excluido" seleccionado
paquete SQ.Blocks.Order.Close; import SQ.Functions.OrderFunctions; importar SQ.Internal.ActionBlock; import com.strategyquant.lib.*; import com.strategyquant.datalib.*; import com.strategyquant.tradinglib.*; // Modificado en Francia por Emmanuel Evrard para la Comunidad StrategyQuantX :) @BuildingBlock(returnType = ReturnTypes.Action) @Help("Cerrar todas las posiciones excepto una") @SortOrder(600) // En AlgoWizard, esta es una posición de dropbox (400 o 500 o 600 etc.) de esta función en el menú de "Añadir Nueva Condición", puede que tenga que ajustarlo dependiendo de la función ya instalada en el mismo dropbox. @IgnorarEnConstructor @NotSupportedFor(motores="EL") public class CerrarTodasLasPosicionesExcepto extends ActionBlock { @Parameter(defaultValue="Actual", category="Identificación del pedido", showIfDefault=false, allowAny=true) public String Símbolo; @Parameter(defaultValue="1", category="Identificación del pedido", showIfDefault=false) @Editor(type=Editors.Selection, values="Largo=1,Corto=-1,Cualquiera=0") public int Dirección; @Parameter(defaultValue="Número mágico", category="Identificación del pedido", showIfDefault=false) @Help("Número mágico que puede identificar el pedido.") @Editor(type=Editors.SelectionVariablesWithAny) public int NúmeroMágico; @Parameter(defaultValue="NúmeroMágico", category="Identificación del pedido", showIfDefault=false) @Help("Número mágico del pedido excluido, este pedido no se cerrará") @Editor(type=Editors.SelectionVariables) public int NúmeroMágicoExcluidos; //@Parameter(defaultValue="", category="Identificación del pedido", showIfDefault=false) //@Help("Comentario también puede utilizarse para identificar el pedido. En el caso de Comment, el pedido coincide si los comentarios del pedido contienen el texto especificado aquí.") public String Comentario; //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ public CerrarTodasLasPosicionesExcepto() { } //------------------------------------------------------------------------ @Override public void OnAction() lanza TradingException { int total = Strategy.Trader.getOpenOrdersCount(false); for(int i=total-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); } } } } }