8. 4. 2022

5 0

Fermer Tous les postes sauf un

Fermer Toutes les positions sauf une : le "Nombre magique exclu" sélectionné

 

package SQ.Blocks.Order.Close ;

import SQ.Functions.OrderFunctions ;
import SQ.Internal.ActionBlock ;

import com.strategyquant.lib.* ;
import com.strategyquant.datalib.* ;
import com.strategyquant.tradinglib.* ;


// Modifié en France par Emmanuel Evrard pour la communauté StrategyQuantX :)
@BuildingBlock(returnType = ReturnTypes.Action)
@Help("Fermer toutes les positions sauf une")
@SortOrder(600) // Dans AlgoWizard, il s'agit d'une position de la boîte de dépôt (400 ou 500 ou 600 etc.) de cette fonction dans le menu "Ajouter une nouvelle condition", vous devrez peut-être l'ajuster en fonction de la fonction déjà installée sur la même boîte de dépôt.
@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="Order identification", showIfDefault=false)
    @Editor(type=Editors.Selection, values="Long=1,Short=-1,Any=0")
    public int Direction ;

    @Parameter(defaultValue="MagicNumber", category="Order identification", showIfDefault=false)
    @Help("Numéro magique permettant d'identifier la commande")
    @Editor(type=Editors.SelectionVariablesWithAny)
    public int MagicNumber ;

    @Parameter(defaultValue="MagicNumber", category="Order identification", showIfDefault=false)
    @Help("Numéro magique de l'ordre exclu, cet ordre ne sera pas fermé")
    @Editor(type=Editors.SelectionVariables)
    public int MagicNumberExcluded ;

    //@Parameter(defaultValue="", category="Order identification", showIfDefault=false)
    //@Help("Le commentaire peut également être utilisé pour identifier la commande. Dans le cas d'un commentaire, la commande correspond si le commentaire de la commande contient le texte spécifié ici.")
    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) ;
                }
            }
        }
    }
}

 

S'abonner
Notification pour
0 Commentaires
Commentaires en ligne
Afficher tous les commentaires

Postes connexes