Non riesco a capire dal tuo codice cosa stai cercando di fare, ma in 2 punti non dai un valore alla variabile i. Dovete risolvere questo problema.
int start() // Special function start() { if (Crosses()) count++; int i, n, // Bar index Counted_bars; Buf_1[i]= count; // Number of counted bars double Sum_H; //-------------------------------------------------------------------- Counted_bars=IndicatorCounted(); // Number of counted bars i=Bars-Counted_bars-1; // Index of the first uncounted while(i>=0) // Loop for uncounted bars { Sum_H=0; // Nulling at loop beginning for(n=i;n<=i+Aver_Bars-1;n++) // Loop of summing values { Buf_0[i]=Buf_1[n]; // Value of 0 buffer on i bar i--; // Calculating index of the next bar } } //-------------------------------------------------------------------- return(0); // Exit the special funct. start() } //-------------------------------------------------------------------- bool Crosses() { int i; double H=iHigh(NULL,PERIOD_M1,i); double L=iLow(NULL,PERIOD_M1,i); double O=iOpen(NULL,PERIOD_D1,i); if (O > L && O < H) return(true); else return(EMPTY_VALUE); }
Mi dispiace essere schietto, ma il tuo codice mostra che stai cercando di ottenere qualcosa che va ben oltre le tue capacità
Esempio
bool Crosses() { int i; double H=iHigh(NULL,PERIOD_M1,i); double L=iLow(NULL,PERIOD_M1,i); double O=iOpen(NULL,PERIOD_D1,i); if (O > L && O < H) return(true); else return(EMPTY_VALUE);
Diciamo che i = 1 per esempio
double O=iOpen(NULL,PERIOD_D1,1);
Questo restituirà il prezzo aperto di ieri
double H=iHigh(NULL,PERIOD_M1,1); double L=iLow(NULL,PERIOD_M1,1);
Questi 2 restituiranno i valori dell'ultima barra chiusa da 1 minuto.
Quindi stai confrontando i valori di 1 minuto fa con l'open di ieri.
Se i = 2, confronterai i valori di 2 minuti fa con l'apertura di 2 giorni fa
Devi capire che questo non può essere ciò che vuoi.
Mi dispiace essere schietto, ma il tuo codice mostra che stai cercando di ottenere qualcosa che va ben oltre le tue capacità
Esempio
Diciamo che i = 1 per esempio
Questo restituirà il prezzo aperto di ieri
Questi 2 restituiranno i valori dell'ultima barra chiusa da 1 minuto.
Quindi stai confrontando i valori di 1 minuto fa con l'open di ieri.
Se i = 2, confronterai i valori di 2 minuti fa con l'apertura di 2 giorni fa
Devi capire che questo non può essere ciò che vuoi.
Ciao GumRai,
Grazie per aver dedicato del tempo ad aiutarmi. Hai ragione, sono solo un principiante e sto cercando di imparare a codificare EA. Ecco cosa sto cercando di fare:
1. 1. Confrontare PERIOD_D1 Open con ogni minuto PERIOD_M1 bar sulla propria barra D1, quindi ci sono 1440 barre M1 da confrontare con la barra D1. Poi contare le barre M1 che soddisfano la condizione if (O > L && O < H) .
2. Memorizza le barre contate in un array, poi procedi di nuovo alla prossima barra D1 e ripeti il ciclo di nuovo.
3. Le barre contate saranno tracciate dall'indicatore su un grafico giornaliero. Quindi, se diciamo che le barre M1 che soddisfano le dichiarazioni sono 5, questo 5 sarà tracciato come valore della Bar1 giornaliera. Poi diciamo che per la prossima barra giornaliera la barra M1 contata è 10 allora sarà tracciata di nuovo su Bar1 come la barra precedente spostata su Bar2.
Gentilmente mostratemi come codificare al meglio questa dichiarazione che sembra semplice e con la quale faccio fatica. Fatemi sapere se avete bisogno di ulteriori spiegazioni e grazie.
Ciao GumRai,
Grazie per aver dedicato del tempo ad aiutarmi. Hai ragione, sono solo un principiante e sto cercando duramente di imparare la codifica di EA. Ecco cosa sto cercando di fare:
1. 1. Confrontare PERIOD_D1 Open con ogni minuto della barra PERIOD_M1 sulla propria barra D1, quindi ci sono 1440 barre M1 da confrontare con la barra D1. Poi contare le barre M1 che soddisfano la condizione if (O > L && O < H) .
2. Memorizza le barre contate in un array, poi procedi di nuovo alla prossima barra D1 e ripeti il ciclo di nuovo.
3. Le barre contate saranno tracciate dall'indicatore su un grafico giornaliero. Quindi, se diciamo che le barre M1 che soddisfano le dichiarazioni sono 5, questo 5 sarà tracciato come valore della Bar1 giornaliera. Poi diciamo che per la prossima barra giornaliera la barra M1 contata è 10 allora sarà tracciata di nuovo su Bar1 come la barra precedente spostata su Bar2.
Gentilmente mostratemi come codificare al meglio questa dichiarazione che sembra semplice e con la quale faccio fatica. Fatemi sapere se avete bisogno di ulteriori spiegazioni e grazie mille.
Sarò felice di aiutarvi, ma non scriverò il codice perché questo non vi aiuterebbe a learmare.
Per prima cosa, devi capire che 1440 barre M1 non corrispondono sempre a un periodo di 1 giorno. Se non ci sono tick durante una barra, quella barra mancherà dalla storia e potrebbe essercene meno di quanto ti aspetti.
Quindi hai bisogno del valore datetime per l'apertura della candela D1. Puoi fare questo? Prova e pubblica il tuo codice
non così veloce
so cosa stai cercando di fare e il tuo codice(if (O > L && O < H)) non ti darà quello che vuoi
guarda il grafico allegato
la freccia rivolta verso l'alto è l'apertura di oggi
e la freccia rivoltaa destra è la prima barra che corrisponde al tuo codice (if (O > L && O < H)) quindi conta = 1
ma se fai attenzione la barra ha chiuso sopra l'apertura di oggi quindi, in realtà il conteggio dovrebbe essere = 2 (almeno (potrebbe esserci qualche altro incrocio che non puoi vedere solo nel grafico in tick))
ma nel tuo codice conta = solo 1
non così veloce
so cosa stai cercando di fare e il tuo codice(if (O > L && O < H)) non ti darà quello che vuoi
guarda il grafico allegato
la freccia rivolta verso l'alto è l'apertura di oggi
e la freccia rivoltaa destra è la prima barra che corrisponde al tuo codice (if (O > L && O < H)) quindi conta = 1
ma se fai attenzione la barra ha chiuso sopra l'apertura di oggi quindi, in realtà il conteggio dovrebbe essere = 2 (almeno (potrebbe esserci qualche altro incrocio che non puoi vedere solo nel grafico in tick))
ma nel tuo codice conta = solo 1
Da quanto ho capito, vuole contare le barre che sono a cavallo del prezzo di apertura - potrei sbagliarmi però :)
- Zaldy: PER FAVORE AIUTATE CHIUNQUE! È POSSIBILE?Non gridare contro di noi. Certo che è possibile.
- Gli interi e i booleani sono convertibili. Falso == 0, vero = non zero.
return(true); else return(EMPTY_VALUE); return(true); else return(2147483647); return(true); else return(true);
- Avete anche a che fare con tre timeframes, D1, chart, M1. Dovete convertire.Non compilato o testato.
Counted_bars=IndicatorCounted(); // Number of counted bars for(iCht = Bars - 1 - Counted_bars; iCht >= 0; iCht--){ // Chart bars int iD1 = iBarShift(NULL, PERIOD_D1, Time[iCht]; double openD1 = iOpen(NULL, PERIOD_D1, iD1); int iM1Beg = iBarShift(NULL, PERIOD_M1, Time[iCht], iM1End = -1; if(iCht > 0) iM1End = iBarShift(NULL, PERIOD_M1, Time[iCht-1]; for(Buf_0[i] = 0; iM1Beg > iM1End; iM1Beg--){ double hM1 = iHigh(NULL, PERIOD_M1, iM1Beg), lM1 = iLow(NULL, PERIOD_M1, iM1Beg); // count Bars of M1 Period that crisscross Open price of D1 Period if( hM1 >= openD1 && openD1 >= lM1) Buf_0[iCht]++; } }
Non compilato o testato.
non così veloce
so cosa stai cercando di fare e il tuo codice(if (O > L && O < H)) non ti darà quello che vuoi
guarda il grafico allegato
la freccia rivolta verso l'alto è l'apertura di oggi
e la freccia rivoltaa destra è la prima barra che corrisponde al tuo codice (if (O > L && O < H)) quindi conta = 1
ma se fai attenzione la barra ha chiuso sopra l'apertura di oggi quindi, in realtà il conteggio dovrebbe essere = 2 (almeno (potrebbe esserci qualche altro incrocio che non puoi vedere solo nel grafico in tick))
ma nel tuo codice conta = solo 1
Ciao Qjol, Sì la freccia rivolta a destra è il primo conteggio che voglio. Quelli che attraversano il D1 Open solo è contato. Grazie ancora per i tuoi sforzi.
- Zaldy: PER FAVORE AIUTATE QUALCUNO! È POSSIBILE?Non gridare con noi. Naturalmente è possibile.
- Gli interi e i booleani sono convertibili. Falso == 0, vero = non zero.
- Avete anche a che fare con tre timeframes, D1, chart, M1. Dovete convertire.Non compilato o testato.
Non compilato o testato.
Grazie WHRoeder e scusa se ho usato le maiuscole qui! Proverò i tuoi suggerimenti e tornerò qui per il risultato.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Saluti! Ho bisogno di aiuto per questo indicatore. Ho provato diversi metodi per contare il numero di barre nel periodo M1 che si sono imbattuti nel livello di prezzo aperto nel periodo D1. Ho allegato il mio tentativo di codificarlo ma non riesco a farlo funzionare con successo. Sto provando duramente su questo ma ho colpito il muro così ora chiedo l'aiuto dei gentili signori qui per aiuto!
Ecco cosa mi serve per questo indicatore:
1. 1. Quando una barra del prezzo del periodo M1 incontra il prezzo dell'apertura del periodo D1, questo viene contato. Ci sono 1440 barre in M1 Period per ogni D1 Period quindi ogni 1440 barre saranno testate.
2. Per ogni D1 Bar il conteggio totale/D1 Bar sarà sommato e mediato per un certo valore. Diciamo che la media è 30, questo 30 è il numero di barre D1.
3. Poi il valore medio sarà tracciato come indicatore.