don t close all position HELP
don t close all position HELP
14 Mar 2024, 07:19
Cano you tell me why don t close in the same time the symbols
protected override void OnTick()
{
Symbol symbol1 = Symbols.GetSymbol(Symbol1);
Symbol symbol2 = Symbols.GetSymbol(Symbol2);
CheckTakeProfit(symbol1, symbol2);
}
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);
}
}
public void CloseAllPositions(Symbol symbol1, Symbol symbol2)
{
List<Position> positionsToClose = Positions.Where(p => p.Symbol == symbol1 || p.Symbol == symbol2).ToList();
//bool positionsClosedSuccessfully = true;
// 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)
{
Print("Non ci sono più posizioni aperte per i simboli specificati");
}
}
else
{
Print("Non ci sono più posizioni aperte per i simboli specificati");
}
//return positionsClosedSuccessfully;
}
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
PanagiotisCharalampous
15 Mar 2024, 07:02
Hi there,
How can we reproduce your problem?
Best regards,
Panagiotis
@PanagiotisCharalampous
PanagiotisCharalampous
14 Mar 2024, 07:46
Hi there,
Your question is not clear. Can you rephrase and elaborate?
Best regards,
Panagiotis
@PanagiotisCharalampous