8. 4. 2022

5 0

Abschluss N Marktauftrag

Nach dem Eröffnen mehrerer Positionen schließt dieses Snippet N Aufträge ("Nb Order"), ab einer MagicNumber

 

Beispiel: Sie haben 5 Positionen mit Magic Number: 1004, 1003, 1002, 1001, 1000.

Sie geben die magische Zahl ein: 1004

Sie geben Nb Order ein: 5

Damit werden die 5 Positionen geschlossen.

 

Hier ist der Code

 

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("Schließe N Positionen, die den Kriterien entsprechen")
@SortOrder(500) // In AlgoWizard ist dies eine Dropbox-Position (400 oder 500 oder 600 usw.) dieser Funktion im Menü von "Add New Condition", Sie müssen sie eventuell anpassen, je nachdem, welche Funktion bereits auf derselben Dropbox installiert ist.
@IgnoreInBuilder
@NotSupportedFor(engines="EL")
public class CloseNPositions extends ActionBlock
{
    
    @Parameter(defaultValue="Current", category="Order identification", showIfDefault=false, allowAny=true)
    public String Symbol;
    
    @Parameter(defaultValue="0", 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="Number Of Order", category="Order identification", showIfDefault=false)
    @Help("Number Of Order wird verwendet, um die Menge der Bestellung festzulegen, ihre MagicNumbers sind Nachfolger der obigen MagicNumber")
    @Editor(type=Editors.SelectionVariables)
    public int NbOrder;

    @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 CloseNPositions()
    {
        
    }
    
    //------------------------------------------------------------------------

    @Override
    public void OnAction() throws TradingException
    {
        int total = Strategy.Trader.getOpenOrdersCount(false);

        if (NbOrder >= 1)
        {
            int MagicNumber1 = MagicNumber;
            for(int i1 = 0; i1 =0; i--)
                {
                    ILiveOrder order = Strategy.Trader.getOpenOrder(i, false);
                    
                    if(OrderFunctions.identify(order, Strategy, Symbol, Direction, MagicNumber, Comment))
                    {
                        order.setExitIndex((byte) -1);
                        order.Close(OrderCloseTypes.ExitSignal);
                    }
                }
            }
        }
    }
}

 

 

 

 

Abonnieren
Benachrichtigen Sie mich bei
0 Kommentare
Inline-Rückmeldungen
Alle Kommentare anzeigen

Verwandte Beiträge