8. 4. 2022

5 0

Cierre N Orden de mercado

Después de abrir varias posiciones, este fragmento cierra N órdenes ("Nb Order"), a partir de un MagicNumber

 

Por ejemplo, tiene 5 posiciones con número mágico: 1004, 1003, 1002, 1001, 1000.

Introduce el número mágico : 1004

Se introduce Nb Orden : 5

Cerrará las 5 posiciones.

 

Este es el código

 

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 N posiciones que cumplan los criterios")
@SortOrder(500) // 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 CerrarNPosiciones extends ActionBlock
{
    
    @Parameter(defaultValue="Actual", category="Identificación del pedido", showIfDefault=false, allowAny=true)
    public String Símbolo;
    
    @Parameter(defaultValue="0", 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úmero de pedido", category="Identificación del pedido", showIfDefault=false)
    @Help("Número de pedido se utiliza para establecer la cantidad de pedido, sus MagicNumbers son sucesivos al MagicNumber anterior")
    @Editor(type=Editors.SelectionVariables)
    public int NbOrder;

    @Parameter(defaultValue="", category="Identificación del pedido", showIfDefault=false)
    @Help("Comentario también se puede utilizar 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 CerrarNPosiciones()
    {
        
    }
    
    //------------------------------------------------------------------------

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

        if (NbOrder >= 1)
        {
            int NúmeroMágico1 = NúmeroMágico;
            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);
                    }
                }
            }
        }
    }
}

 

 

 

 

Suscríbase a
Notificar a
0 Comentarios
Feedbacks de Inline
Ver todos los comentarios

Puestos relacionados