Replies

vinc.lomiglio
14 Mar 2024, 16:34

RE: don t close all position HELP

HELLO, I WOULD LIKE YOU TO HELP ME TO CHECK WHY MY FUNCTIONS DO NOT CLOSE BOTH POSITIONS OF THE SYMBOLS WHEN THE TAKE AND STOP CONDITIONS VERIFY:
I WANT THAT WHEN A SYMBOL REACHES ONE OF THE CONDITIONS DEFINED IN CheckTakeProfit(Symbol symbol1, Symbol symbol2) ALL POSITIONS OF THE TWO SYMBOLS MUST BE CLOSED AS THEY MUST WORK IN PAIR

private void CloseAllPositions(Symbol symbol1, Symbol symbol2)
       {
         List<Position> positionsToClose = Positions.Where(p => p.Symbol == symbol1 || p.Symbol == symbol2).ToList();
   
           // Verifica se ci sono ancora posizioni aperte per i simboli specificati
         if (positionsToClose.Count > 0)
           {
           // Chiudi tutte le posizioni simultaneamente
         foreach (var position in positionsToClose)
       {
           position.Close();
       }
       
       // Verifica se ci sono ancora posizioni aperte per i simboli specificati dopo la chiusura
       List<Position> remainingPositions = Positions.Where(p => p.Symbol == symbol1 || p.Symbol == symbol2).ToList();
       if (remainingPositions.Count > 0)
       {
           // Se ci sono ancora posizioni rimanenti, chiudi tutte le posizioni di nuovo
           CloseAllPositions(symbol1, symbol2);
          
       }
       else
       {
           CloseAllPositions(symbol1, symbol2);
           Print(" Non ci sono più posizioni aperte per i simboli specificati");
           
           // Esegui eventuali azioni aggiuntive o stampa messaggi se necessario
       }
   
   }
}

 

public void CheckTakeProfit(Symbol symbol1, Symbol symbol2)
{
   // Ottieni l'orario corrente dell'utente
   DateTime userTime = DateTime.Now;

   // Ottieni le posizioni per i due simboli
   var pos1 = Positions.Find(Symbol1, etichettaOperazioni_simbolo1);
   var pos2 = Positions.Find(Symbol2, etichettaOperazioni_simbolo2);

   // Controlla se almeno una posizione ha raggiunto i suoi obiettivi di take profit o stop loss
   if ((pos1 != null && (pos1.TakeProfit >= takeProfitPips_Long || pos1.StopLoss <= -stopLossPips_Long || pos1.TakeProfit <= -takeProfitPips_Short || pos1.StopLoss >= stopLossPips_Short)) ||
       (pos2 != null && (pos2.TakeProfit >= takeProfitPips_Long || pos2.StopLoss <= -stopLossPips_Long || pos2.TakeProfit <= -takeProfitPips_Short || pos2.StopLoss >= stopLossPips_Short)))
   {
       // Chiudi entrambe le posizioni simultaneamente
       CloseAllPositions(symbol1, symbol2);
   }
}
 


@vinc.lomiglio

vinc.lomiglio
21 Aug 2023, 09:04 ( Updated at: 29 Feb 2024, 09:08 )

how can to close all position in the same of two symbols please i want close in the same if simbol1 take a profit i want that simbol2 close in the same

I

//ENTRATE_LONG
                    if ((FastResultL >0) 
                    {
                        var q = Symbol.QuantityToVolumeInUnits(quantity);

                        var q_2 = Symbol.QuantityToVolumeInUnits(quantity_2);
                     

                    tradeOperation = ExecuteMarketOrderAsync(TradeType.Buy, Symbol1, q, etichettaOperazioni_simbolo1 , StopLoss_Long, TakeProfit_Long);
                        
                     tradeOperation = ExecuteMarketOrderAsync(TradeType.Sell, Symbol2, q_2, etichettaOperazioni_simbolo2, StopLoss_Short, TakeProfit_Short);/
                        
                        Print("ORDINI long short INVIATI");
                        //Print("Positions Count:" + Positions.Count); 
                        //tradeOperation = ExecuteMarketOrderAsync(TradeType.Sell, Symbol2, q_2, etichettaOperazioni);
                        
                        tradeType = 1;
                        openedPositions++;
                        nOp++;
                        //Print("Position  LONG is opened");
                    }

 


@vinc.lomiglio