8. 4. 2022

5 0

Chiusura dell'ordine di mercato N

Dopo aver aperto più posizioni, questo snippet chiude N ordini ("Nb Order"), a partire da un MagicNumber

 

Ad esempio, si hanno 5 posizioni con numero magico: 1004, 1003, 1002, 1001, 1000.

Si inserisce il numero magico: 1004

Si inserisce l'ordine Nb : 5

Chiuderà le 5 posizioni.

 

Ecco il codice

 

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 N posizioni che soddisfano i criteri")
@SortOrder(500) // 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 CloseNPositions extends ActionBlock
{
    
    @Parameter(defaultValue="Current", category="Order identification", showIfDefault=false, allowAny=true)
    public String Symbol;
    
    @Parameter(defaultValue="0", 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="Numero d'ordine", category="Identificazione ordine", showIfDefault=false)
    @Help("Numero d'ordine è usato per impostare la quantità dell'ordine, i loro MagicNumber sono successivi al MagicNumber di cui sopra")
    @Editore(tipo=Editori.SelectionVariables)
    public int NbOrder;

    @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 specificato qui.")
    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);
                    }
                }
            }
        }
    }
}

 

 

 

 

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti

Messaggi correlati