Schließen Alle Positionen außer einer
Schließen Alle Positionen außer einer: die ausgewählte "Magische Zahl ausgenommen".
Paket SQ.Blocks.Order.Close;
import SQ.Functions.OrderFunctions;
importieren SQ.Internal.ActionBlock;
import com.strategyquant.lib.*;
importieren com.strategyquant.datalib.*;
import com.strategyquant.tradinglib.*;
// Modifiziert in Frankreich von Emmanuel Evrard für die StrategyQuantX Community :)
@BuildingBlock(returnType = ReturnTypes.Action)
@Help("Alle Positionen außer einer schließen")
@SortOrder(600) // In AlgoWizard ist dies eine Dropbox-Position (400 oder 500 oder 600 usw.) dieser Funktion im Menü "Neue Bedingung hinzufügen", Sie müssen sie eventuell anpassen, je nachdem, welche Funktion bereits auf derselben Dropbox installiert ist.
@IgnoreInBuilder
@NotSupportedFor(engines="EL")
public class CloseAllPositionsExcept extends ActionBlock
{
@Parameter(defaultValue="Current", category="Auftragskennung", showIfDefault=false, allowAny=true)
public String Symbol;
@Parameter(defaultValue="1", category="Auftragskennung", showIfDefault=false)
@Editor(type=Editors.Selection, values="Long=1,Short=-1,Any=0")
public int Direction;
@Parameter(defaultValue="MagicNumber", category="Auftragskennung", showIfDefault=false)
@Help("Magische Zahl, mit der die Bestellung identifiziert werden kann.")
@Editor(type=Editors.SelectionVariablesWithAny)
public int MagicNumber;
@Parameter(defaultValue="MagicNumber", category="Auftragskennung", showIfDefault=false)
@Help("MagicNumber der ausgeschlossenen Bestellung, diese Bestellung wird nicht geschlossen")
@Editor(type=Editors.SelectionVariables)
public int MagicNumberExcluded;
//@Parameter(defaultValue="", category="Auftragskennung", showIfDefault=false)
//@Help("Comment kann auch zur Identifizierung der Bestellung verwendet werden. Im Falle von Comment passt die Bestellung, wenn der Bestellkommentar den hier angegebenen Text enthält.")
public String Comment;
//------------------------------------------------------------------------
//------------------------------------------------------------------------
//------------------------------------------------------------------------
public CloseAllPositionsExcept()
{
}
//------------------------------------------------------------------------
@Override
public void OnAction() throws 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);
}
}
}
}
}
