[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 464

 
sss2019:
Potete dirmi quale funzione dovrebbe chiudere metà dell'ordine, OrderClose() o OrderCloseBy()?

Se c'è un ordine aperto e solo una parte di esso deve essere chiuso, è sufficiente usare OrderClose() specificando il volume da chiudere.
 
sss2019:
Potete dirmi quale funzione dovrebbe chiudere metà dell'ordine, OrderClose() o OrderCloseBy()?

Chiusura della metà del volume degli ordini:

   int Ticket = ...
   OrderSelect(Ticket, SELECT_BY_TICKET);
   OrderClose(Ticket, NormalizeDouble(OrderLots()/2), Ask /*или Bid*/, Slippage);
 
MaxZ:

Chiudere la metà del volume degli ordini:


OrderSelect() prima di OrderClose() non è richiesto.
 
PapaYozh:

OrderSelect() prima di OrderClose() non è richiesto.
è richiesto perché usa OrderLots
 
ilunga:
è richiesto, poiché usa OrderLots


In questo caso:

- Per prima cosa, dobbiamo controllare il risultato restituito da OrderSelect();

- In secondo luogo, dobbiamo tenere d'occhio il volume ottenuto nel processo di divisione, altrimenti potrebbe non chiudersi affatto.

 

PapaYozh, MaxZ Il lotto è 0,1, nel calcolo di 30 ( ClosingPercent = 30) le percentuali dovrebbero essere 0,03, ma l'errore 131 si verifica quando si chiude con questo lotto.

           ClosingLot = OrderLots() / 100 * ClosingPercent;
           ClosingLot = NormalizeDouble(ClosingLot,3);
           OrderClose(OrderTicket(),ClosingLot,Ask,Slippage,Green);
 
sss2019:

PapaYozh, MaxZ Il lotto è 0,1, nel calcolo di 30 ( ClosingPercent = 30) le percentuali dovrebbero essere 0,03, ma l'errore 131 si verifica quando si chiude con questo lotto.


Perché normalizzate il volume a 3 cifre?
 
sss2019:

PapaYozh, MaxZ È 0.1 lotto, quando si calcola 30 (ClosingPercent = 30) la percentuale dovrebbe essere 0.03, ma l'errore 131 si verifica quando si chiude con questo lotto

1) perché normalizzare a 3 cifre?

2) probabilmente il lotto minimo è 0,1 e quindi un lotto più piccolo non è in linea di principio disponibile.

 
PapaYozh:

Perché normalizzate il volume a 3 cifre?

Beh, se il lotto è 0,10, non si può chiudere il 30%. Ma ho provato a normalizzare a 2 cifre con 1 lotto e ancora lo stesso errore.
 
sss2019:

Bene, quindi se il lotto è 0,10 allora non puoi già chiudere il 30%. Ma ho provato a normalizzare a 2 cifre con il lotto 1 e ancora lo stesso errore.

le cifre non sono contate per intero, ma dopo il punto decimale.

cioè normalizzando il numero 10.044425 a 2 cifre si otterrà il numero 10.04


Sì, e dov'è la selezione degli ordini prima di usare OrderLots?