[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 155
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
nella definizione di una tendenza?
In un cambiamento di tendenza su un periodo di tempo... Vedere https://www.mql5.com/ru/forum/131277/page148 e https://www.mql5.com/ru/forum/131277/page149
Potete dirmi perché OrderSelect restituisce TRUE anche se l'ordine con questo biglietto non esiste (è stato cancellato)?
in un cambiamento di tendenza su un tratto di tempo...
Per favore, ditemi se la funzione Tp e Slossa funziona qui
se (totale > 0) AveragePrice = NormalizeDouble(AveragePrice / Count, Digits);
if (NewOrdersPlaced) {
for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_BUY) {
PriceTarget = AveragePrice + TakeProfit * Point;
BuyTarget = PriceTarget;
Stopper = AveragePrice - Stoploss * Point;
flag = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderType() == OP_SELL) {
PriceTarget = AveragePrice - TakeProfit * Point;
SellTarget = PriceTarget;
Stopper = AveragePrice + Stoploss * Point;
flag = TRUE;
ha compilato bene per me
Scusa, l'indicatore funziona - è come era in origine, e l'errore è nel file tcht - non compila.
Posso usare init per fare i calcoli per il buffer dell'indicatore?
Volevo ricalcolare in init tutte le barre tranne la barra zero e in start zero bar - non conta...
Potete dirmi perché OrderSelect restituisce TRUE anche se non c'è nessun ordine con tale biglietto (è stato cancellato)?
Avete letto bene il riferimento alla funzione?
Leggiamolo di nuovo:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Il parametro pool è ignorato se l'ordine è selezionato dal numero del biglietto. Il numero del biglietto è un identificatore unico per l'ordine. Per determinare da quale lista viene selezionato un ordine, dobbiamo analizzare il suo tempo di chiusura. Se il tempo di chiusura dell'ordine è 0, allora l'ordine è aperto o in sospeso e viene preso dalla lista delle posizioni aperte del terminale. Una posizione aperta può essere distinta da un ordine pendente per il suo tipo. Se il tempo di chiusura non è uguale a 0, allora l'ordine è chiuso o in sospeso ed è stato selezionato dalla storia del terminale. La distinzione tra un ordine chiuso e un ordine pendente cancellato può essere fatta anche per tipo di ordine.
SELECT_BY_POS - il parametro index contiene il numero di indice della posizione nella lista,
SELECT_BY_TICKET - il parametro indice contiene il numero del biglietto.
MODE_TRADES (predefinito) - l'ordine viene selezionato tra quelli aperti e in sospeso,
MODE_HISTORY - l'ordine è selezionato tra gli ordini chiusi e cancellati.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Questo:
Il parametro pool è ignorato se l'ordine è selezionato dal numero del biglietto. Il numero del biglietto è l'identificatore unico dell'ordine. Per determinare da quale lista viene selezionato un ordine, bisogna analizzare il suo orario di chiusura. Se il tempo di chiusura dell'ordine è 0, allora l'ordine è aperto o in sospeso e viene preso dallalista delle posizioni aperte del terminale.
Tu fai cosa?
Ho mostrato in rosso il parametro pool, che viene ignorato quando si sceglie per ticket e un ordine viene preso da qualsiasi lista (aperta o chiusa) di posizioni del terminale. Ecco perché restituisce la verità. Dopo tutto, un tale biglietto esiste e un ordine è selezionato, ma dalla lista degli ordini chiusi...
Dovremmo fare così:
... oppure:
... ...o:
Credo di essermi spiegato molto bene... :)
artmedia70
Grazie per una risposta così dettagliata e completa. Davvero il più chiaro possibile :) GRAZIE!!!
artmedia70
Grazie per una risposta così dettagliata. Davvero chiaro come possibile :) GRAZIE!!!
:) Grazie. Non c'è di che.
Vorrei mettere in guardia su alcune "insidie" della selezione delle posizioni aperte in base al loro biglietto. Il fatto è che alla fine di un giorno di trading, quando una posizione viene spostata al giorno successivo, la società di brokeraggio riapre l'ordine. Cioè, la posizione corrente viene chiusa e un'altra posizione viene aperta con lo stesso volume, ma con un nuovo biglietto che include lo swap. Pertanto, il tuo Expert Advisor deve tenere traccia degli ordini riaperti e prendere in considerazione i loro nuovi ticker, altrimenti tutto "scorrerà" - l'ordine con il vecchio ticker apparirà nella lista degli ordini chiusi, e non sarai in grado di aprire una posizione esistente spostata al nuovo giorno di trading utilizzando il vecchio ticker. Le posizioni parzialmente chiuse incontreranno lo stesso destino - un nuovo ticket sarà assegnato anche a loro.
Quindi, tenete un registro rigoroso di tutti gli ordini EA e tenete traccia di tutti questi cambiamenti "insidiosi" nel tempo.
Vorrei mettere in guardia su una certa "insidia" della selezione delle posizioni aperte in base al loro biglietto. Il punto è che alla fine del giorno di negoziazione, quando una posizione viene trasferita al giorno successivo, il DC riapre l'ordine.
Non so se questo è vero per alcune società di intermediazione, ma la maggior parte di loro non fa queste stronzate.
Non è una regola di "buona educazione" considerare anche questo comportamento del DC? Dopo tutto... Sì, non importa... Cerco solo di considerare tutto, beh... o quello di cui sono consapevole.
La cautela è prevenuta, eh? ;)