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);
}
}
}
}
}
