Gente, c'è bisogno di aiuto. La funzione deve chiudere necessariamente la metà degli ordini iniziando da quello più vecchio. Nel primo caso, gli ordini vengono chiusi uno per uno per qualche motivo, e nel secondo, iniziano a chiudersi nell'ordine sbagliato.
void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
int count = 0; double CTbuy = CountTrades(OP_BUY); double CTsell = CountTrades(OP_SELL);
for (int i = 0; i<=OrdersTotal;i++)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
{
if (otype == OP_BUY)
{
if (count<CTbuy/2 && CTbuy>3 )
OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
count++;
Sleep(1000);
}
elseif (otype == OP_SELL)
{
if (count<CTsell/2 && CTsell>3)
OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
count++;
Sleep(1000);
}
}
}
}
}
Ciao, ho cercato da Kim, ma non riesco a trovare nulla che mi faccia sapere: da quale ordine (pendente) ha aperto la posizione? Da un ordine limite o un ordine stop?
Ho provato a confrontare i prezzi dell'ultimo ordine aperto
Gente, c'è bisogno di aiuto. La funzione dovrebbe chiudere necessariamente la metà degli ordini iniziando da quello più vecchio. Nel primo caso, gli ordini vengono chiusi uno per uno per qualche motivo, e nel secondo, iniziano a chiudersi nell'ordine sbagliato.
C'era una domanda come questa, come chiudere gli ordini a partire dal più vecchio, un paio di pagine dopo c'è una risposta e il codice corretto.
Ciao, ho cercato da Kim, ma non riesco a trovare nulla che mi faccia sapere: da quale ordine (pendente) ha aperto la posizione? Da un ordine limite o un ordine stop?
Ho provato a confrontare i prezzi dell'ultimo ordine aperto
con una posizione aperta su di esso, ma l'intera logica è rotta. Forse c'è qualcosa di più adatto? Grazie!
Boris. Prova a scrivere nel commento degli ordini - limite a limite, stop a stop. Poi da questi commenti di posizioni aperte saprete da cosa sono cresciute le gambe. Solo la chiusura parziale di questi commenti li cancellerà. Forse qualcos'altro può uccidere i commenti. Solo le posizioni cancellate vengono salvate nella cronologia. Quelli che funzionavano non ci sono. Devi passare attraverso... si capisce cosa si deve passare...
Quindi ho bisogno di un intero...
Gente, c'è bisogno di aiuto. La funzione deve chiudere necessariamente la metà degli ordini iniziando da quello più vecchio. Nel primo caso, gli ordini vengono chiusi uno per uno per qualche motivo, e nel secondo, iniziano a chiudersi nell'ordine sbagliato.
Quindi ho bisogno di un intero...
MathRound
quindi questo è un arrotondamento, il numero non diventa int, rimane doppio
quindi questo è un arrotondamento, il numero non diventa int, ma rimane doppio
Quindi? C'è una differenza fondamentale tra 1 e 1.0 per i calcoli? Naturalmente il formato è doppio, ma il valore è intero.
Una variante particolarmente perversa: DoubleToStr e poi StringToInteger
Per favore, ditemi come rimuovere l'avviso nel nuovo compilatore
possibile perdita di dati a causa della conversione del tipo
Grazie, quindi nessun preallarme, mi sta già facendo incazzare)
Ciao, ho cercato da Kim, ma non riesco a trovare nulla che mi faccia sapere: da quale ordine (pendente) ha aperto la posizione? Da un ordine limite o un ordine stop?
Ho provato a confrontare i prezzi dell'ultimo ordine aperto
con una posizione aperta su di esso, ma l'intera logica è rotta. Forse c'è qualcosa di più adatto? Grazie!
Gente, c'è bisogno di aiuto. La funzione dovrebbe chiudere necessariamente la metà degli ordini iniziando da quello più vecchio. Nel primo caso, gli ordini vengono chiusi uno per uno per qualche motivo, e nel secondo, iniziano a chiudersi nell'ordine sbagliato.
C'era una domanda come questa, come chiudere gli ordini a partire dal più vecchio, un paio di pagine dopo c'è una risposta e il codice corretto.
https://www.mql5.com/ru/forum/145455/page406
Ciao, ho cercato da Kim, ma non riesco a trovare nulla che mi faccia sapere: da quale ordine (pendente) ha aperto la posizione? Da un ordine limite o un ordine stop?
Ho provato a confrontare i prezzi dell'ultimo ordine aperto
con una posizione aperta su di esso, ma l'intera logica è rotta. Forse c'è qualcosa di più adatto? Grazie!