
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Almeno nei setter di metodi questo è giustificato - il codice può diventare più leggibile e compatto, si ottiene un parametro con nome
ChartObject *hline=HLine::New(1.255).Color(clrGreen).Width(2).Selectable(true); // не надо помнить очерёдность параметров и можно писать в одну строку - цепочкой
// получается вот из подобного :
class HLine:public ChartObject {
public:
HLine(double price);
HLine *New(double _price) { return new HLine(_price); } // это чтобы не городить (new HLine(...)).Method1
HLine *Color(color _clr) { fgColor=_clr; return GetPointer(this); } // а это чтобы получались цепочки obj.Method1(..).Method2(..)
};
e un po' interferisce con la qualificazione delle funzioni dal tipo restituito.
Sentitevi liberi di restituire GetPointer(this) dai metodi.
In questo modo &questo è più conciso.
Beh, lasciatemi iniziare per primo.
Per chiudere un ordine, non dobbiamo definire il tipo di ordine e il prezzo che corrisponde a questo tipo. È sufficiente scrivere "chiudere al prezzo" in OrderClosePrice()!
void OnStart()
{
int i, total = OrdersTotal()-1;
for(i = total; i >= 0; i--)
{
if(OrderType() < OP_SELLSTOP)
{
if(!OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100))
printf("***********");
}
}
}/********************************************************************/
Piuttosto figo! ) Grazie.
A giudicare dall'esempio, non avete nemmeno bisogno di OrderSelect()?
(Fico! ) Grazie.
A giudicare dall'esempio, anche OrderSelect() non è necessario?
Bello! ) Grazie.
Necessario. L'ho perso per pigrizia...
Sì, beh... Davvero incasinato.
Ma prima non mi sono imbattuto in questi argomenti.
Quindi potete usare OrderClosePrice solo DOPO il corrispondente OrderSelect. Poiché OrderSelect copia i dati per le funzioni Order(const)- una volta, e lo stesso RefreshRates non è in grado di aggiornarli.
Cioè se, per esempio, OrderClosePrice non riesce a chiudere, allora l'OrderSelect deve essere rifatto prima del prossimo tentativo (RefreshRates non è richiesto).
ZS Questo thread è del 2005! Ci sono argomentazioni dettagliate degli sviluppatori qui.
Gli ordini aperti dovrebbero essere analizzati a partire da un numero più alto, cioè for(int nom=OrdersTotal()-1; nom>=0; nom--)
Ci sono 20 ordini in sospeso
Questo è particolarmente importante quando si cancellano gli ordini.
Ma cosa succede se facciamo il contrario for(int nom=0; nom<OrdersTotal(); nom++) ?
All'inizio, l'indice è uguale a zero e il primissimo ordine con numero 0 viene cancellato.
Allora l'indice diventa uguale a 1. A questo punto gli ordini rimanenti vengono spostati e quello con il numero 1
occupa la posizione zero. L'ex numero 2 prende la posizione 1. Sarà cancellato.
Allora l'indice diventa 2. E l'ordine che era il numero 4 all'inizio sarà cancellato.
Così, gli ordini che occupano posizioni pari all'inizio vengono cancellati. Quelli dispari rimarranno. Questo può essere visto nei commenti agli ordini e ai numeri.
Allego uno script che mostra entrambe le opzioni di cancellazione e gli screenshot