Se viene da un altro grafico, lascia che usi una variante di funzione con un identificatore di grafico.
Nessun problema.
Assolutamente giusto, ma non ho ancora avuto bisogno di usare un identificatore di grafico e sono solo teoricamente familiare con esso, ecco perché ho suggerito l'opzione di mappare gli oggetti al grafico corrente.
chart_id = 0 non è il TF, è il grafico corrente. Dovete trovare il chart_id del grafico che ha l'oggetto desiderato. Questo è quello che non ho fatto perché era temporaneamente non necessario.
cosa hanno a che fare i periodi TF con l'ID del grafico?
Non ho idea di come. Ecco perché sto cercando di farlo da solo e di chiedere, visto che ho fallito.
sergeev: Descrivi il tuo compito, non diventare oscuro e brancolare nel buio. cosa ti serve esattamente? ottenere dati da un oggetto? - ObjectGet Cosa c'è che non va?
Lo stai chiedendo seriamente? Ho già scritto 3 volte che ho bisogno di ottenere i dati dei rettangoli (2 coordinate di prezzo e due coordinate temporali utilizzate per costruire i rettangoli) da altri due timeframe (H4 e D), pur essendo sul terzo (H1).
ObjectGet non è adatto perché non può ricevere nulla da un altro lasso di tempo.
L'indicatore disegna rettangoli su tutti i timeframes e ho aggiunto del codice ad esso, trasmetterà le coordinate dei rettangoli di altri timeframes senza passare ad essi. Non so come spiegarlo in altro modo.
Non ho idea di come. Ecco perché sto cercando di farlo con l'istinto e chiedendo, perché non ha funzionato.
Lo stai chiedendo seriamente? Ho già scritto 3 volte che ho bisogno di ottenere i dati dei rettangoli (2 coordinate di prezzo e due coordinate temporali su cui costruire i rettangoli) da altri due timeframes (H4 e D), pur essendo sul terzo (H1).
ObjectGet non è adatto perché non posso ottenere nulla da un altro lasso di tempo con esso.
Disegna rettangoli su tutti i timeframes e sto aggiungendo del codice con il quale passerà le coordinate dei rettangoli di altri timeframes senza passare a questi. Non so come spiegarlo in altro modo.
Basta capire che un altro timeframe e un altro grafico o diagramma sono concetti diversi e, di conseguenza, approcci diversi alla soluzione dei problemi.
Grazie! Ricevuto. Tranne che con l'errore OrderSelect, non è chiaro come fermarsi se non percontinuare.
Cancellato il messaggio in ritardo, ha fatto quasi lo stesso come descritto.
A volte è possibile combinare il valore di ritorno e il segno di errore. Quando ha senso prendere qualche valore come segno di errore. Per esempio, un prezzo medio pari a 0.
Quindi, non appena OrderSelect() restituisce un segno di errore, la nostra funzione restituirà un segno di errore:
#property strict/******************************************************************************/double CenaUsrednenija(constint type,constint Magic){
double nn = 0, bb = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderType() == type && OrderMagicNumber() == Magic)
{
double op = OrderOpenPrice();
double llot = OrderLots();
bb += op * llot;
nn += llot;
Print(" type = ", type, " Цена открытия = ", op, " Лот = ", llot, " itog = op * llot = ", op * llot, " factb = bb / nn = ", bb / nn);
}
} else {
return0; // Цена == 0 - признак ошибки (OrderSelect() не смогла выбрать ордер)
}
}
return nn != 0 ? NormalizeDouble(bb / nn, _Digits) : 0; // Делить на 0 не следует
}
/******************************************************************************/voidOnStart() {
Print("CenaUsrednenija(OP_BUY, 536525) = ", CenaUsrednenija(OP_BUY, 536525));
}
Se lo gestisco da solo, ce l'ho:
23:32:03 Script 1 EURUSD,H1: loaded successfully
23:32:031 EURUSD,H1: initialized
23:32:031 EURUSD,H1: type = 0 Цена открытия = 1.36626 Лот = 0.1 itog = op * llot = 0.136626 factb = bb / nn = 1.3662623:32:031 EURUSD,H1: type = 0 Цена открытия = 1.36931 Лот = 0.1 itog = op * llot = 0.136931 factb = bb / nn = 1.36778523:32:031 EURUSD,H1: CenaUsrednenija(OP_BUY, 536525) = 1.3677923:32:031 EURUSD,H1: uninit reason 023:32:03 Script 1 EURUSD,H1: removed
Sembra essere vero...
Sì, non ho usato un'espressione condizionale in Print() per evitare un'ipotetica divisione per 0, perché questa Print() è un debug...
La mia comprensione è che ha bisogno di ottenere i parametri dell'oggetto da un altro grafico.
Se da un altro grafico, fategli usare la variante di funzione con l'identificatore del grafico.
nessun problema.
Se viene da un altro grafico, lascia che usi una variante di funzione con un identificatore di grafico.
Nessun problema.
È fantastico! Questo era esattamente il punto. Grazie, caro compagno!
Se viene da un altro grafico, lascia che usi una variante di funzione con un identificatore di grafico.
nessun problema.
Da quanto ho capito, le uniche opzioni sono ObjectGetDouble() per il prezzo e ObjectGetInteger() per la data nel mio caso.
Cerco di ottenere il prezzo nel TF corrente con chart_id = 0
- valore come dovrebbe essere. Ho provato entrambi gli ID e i valori da qui https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes invece di 0, ma restituisce 0. Come dovrebbe essere un chart_id "corretto"?
Da quanto ho capito, le uniche opzioni sono ObjectGetDouble() per il prezzo e ObjectGetInteger() per la data nel mio caso.
Sto cercando di ottenere il prezzo nel TF corrente con chart_id = 0
- valore come dovrebbe essere. Ho provato entrambi gli ID e i valori da qui https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes invece di 0, ma restituisce 0. Come dovrebbe essere un chart_id "corretto"?
Da quanto ho capito, le uniche opzioni sono ObjectGetDouble() per il prezzo e ObjectGetInteger() per la data nel mio caso.
Cercando di ottenere il prezzo nel TF corrente con chart_id = 0
cos'è il 3?
- Il valore è come dovrebbe essere. Ho provato entrambi gli ID e i valori da qui https://docs.mql4.com/ru/constants/chartconstants/enum_timeframes invece di 0, ma restituisce 0. Come dovrebbe essere un chart_id "corretto"?
hai un buco irrealistico nella tua comprensione di cosa usare
Descriva il suo problema, non sia troppo oscuro e si aggiri intorno alla pancia.
Di cosa ho bisogno per recuperare dati da un oggetto?
- ObjectGet Perché non ti è piaciuto?
cos'è il 3?
Il valore del prezzo del limite inferiore del rettangolo. https://docs.mql4.com/constants/objectconstants/enum_object_property
Non ho idea di come. Ecco perché sto cercando di farlo da solo e di chiedere, visto che ho fallito.
Descrivi il tuo compito, non diventare oscuro e brancolare nel buio. cosa ti serve esattamente? ottenere dati da un oggetto? - ObjectGet Cosa c'è che non va?
Lo stai chiedendo seriamente? Ho già scritto 3 volte che ho bisogno di ottenere i dati dei rettangoli (2 coordinate di prezzo e due coordinate temporali utilizzate per costruire i rettangoli) da altri due timeframe (H4 e D), pur essendo sul terzo (H1).
ObjectGet non è adatto perché non può ricevere nulla da un altro lasso di tempo.
L'indicatore disegna rettangoli su tutti i timeframes e ho aggiunto del codice ad esso, trasmetterà le coordinate dei rettangoli di altri timeframes senza passare ad essi. Non so come spiegarlo in altro modo.
Il valore del prezzo del limite inferiore del rettangolo. https://docs.mql4.com/constants/objectconstants/enum_object_property
Non ho idea di come. Ecco perché sto cercando di farlo con l'istinto e chiedendo, perché non ha funzionato.
Lo stai chiedendo seriamente? Ho già scritto 3 volte che ho bisogno di ottenere i dati dei rettangoli (2 coordinate di prezzo e due coordinate temporali su cui costruire i rettangoli) da altri due timeframes (H4 e D), pur essendo sul terzo (H1).
ObjectGet non è adatto perché non posso ottenere nulla da un altro lasso di tempo con esso.
Disegna rettangoli su tutti i timeframes e sto aggiungendo del codice con il quale passerà le coordinate dei rettangoli di altri timeframes senza passare a questi. Non so come spiegarlo in altro modo.
Capire che un TF diverso e un grafico o un diagramma diverso sono concetti diversi e quindi approcci diversi alla soluzione dei problemi.
Grazie! Ricevuto. Tranne che con l'errore OrderSelect, non è chiaro come fermarsi se non percontinuare.
Cancellato il messaggio in ritardo, ha fatto quasi lo stesso come descritto.
A volte è possibile combinare il valore di ritorno e il segno di errore. Quando ha senso prendere qualche valore come segno di errore. Per esempio, un prezzo medio pari a 0.
Quindi, non appena OrderSelect() restituisce un segno di errore, la nostra funzione restituirà un segno di errore:
Se lo gestisco da solo, ce l'ho:
Sembra essere vero...
Sì, non ho usato un'espressione condizionale in Print() per evitare un'ipotetica divisione per 0, perché questa Print() è un debug...