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