[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 478

 

Per prima cosa, provate a collegare il quarto buffer non visualizzabile ExtMapBuffer4 al buffer dell'indicatore

SetIndexBuffer(3,ExtMapBuffer4);

perché tu scrivi

   IndicatorBuffers(4);                                                 //устанавливаем общее количество всех индикаторов, участвующих в расчете всех индикаторных линий

all'inizio descrivi 3 linee/buffer

a proposito, allora non avrete bisogno di dichiararla come una serie temporale e controllarla

 

e il tuo principale errore qui

      ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer4,0,МА_ТЛ,0,Вид_МА_ТЛ,0); //рассчет значения для расчета Третьей Линии (ТЛ)

devi fare così.

      ExtMapBuffer3[i]=iMAOnArray(ExtMapBuffer4,0,МА_ТЛ,0,Вид_МА_ТЛ,i); //рассчет значения для расчета Третьей Линии (ТЛ)
 
midorum:

Per prima cosa, provate a collegare il quarto buffer non visualizzabile ExtMapBuffer4 al buffer dell'indicatore

perché tu scrivi

all'inizio descrivi 3 linee/buffer

a proposito, allora non avrete bisogno di dichiararla come una serie temporale e controllarla

Grazie per la risposta... Per mettere finalmente i puntini sulle i, vorrei saperne di più:

1. Hai scritto: "prima prova ad associare il quarto buffer non mappato ExtMapBuffer4 al buffer indicatore". Ho pensato che solo gli array dovrebbero essere legati, che dovrebbero essere visualizzati in un modo o nell'altro sullo schermo del terminale client, e il numero totale di tutti gli array che partecipano al calcolo dell'indicatore personalizzato dovrebbe essere specificato utilizzando la funzione IndicatorBuffers. Quindi devo essermi sbagliato?

2. Se non ti dispiace, perché non dichiari questo array come una serie temporale? È in qualche modo auto-organizzato come una serie temporale?

 
7777877:

Grazie per la vostra risposta... Per concludere, vorrei scoprire un'altra cosa:

1. Tu scrivi: "prima, prova a collegare il quarto buffer non mappato ExtMapBuffer4 al buffer indicatore". Ho pensato che solo gli array dovrebbero essere legati, che dovrebbero essere visualizzati in un modo o nell'altro sullo schermo del terminale client, e il numero totale di tutti gli array che partecipano al calcolo dell'indicatore personalizzato dovrebbe essere specificato utilizzando la funzione IndicatorBuffers. Quindi mi sono sbagliato?

2. Se non è difficile per te, per favore spiega perché non dovremmo dichiarare questo array come una serie temporale? È in qualche modo auto-organizzato come una serie temporale?

esattamente così, è organizzato automaticamente come una serie temporale

si descrivono buffer di indicatori visibili all'inizio

usandoIndicatorBuffers() potete aumentare il numero di serie temporali organizzate automaticamente a 8 e collegarle ai vostri array

 
Duplicare di nuovo la domanda, cancellando quella vecchia, aiuti chi può!


Ok. Cercherò di dare il succo del problema, forse qualcuno lo suggerirà o aiuterà ad implementarlo più facilmente.

Stiamo lavorando sul grafico a 1 minuto. Prendiamo la barra dei minuti (alto+basso/2 - valore medio della barra) sul grafico del 29/10/12 alle 00:00 - sarà un punto di riferimento.

Poi controlliamo la deviazione da questo prezzo verso l'alto di 10 pip (ogni deviazione corretta è +1).

Quando raggiungiamo la deviazione di 10 punti dal punto di partenza - il contatore +1; e cominciamo a controllare ulteriori deviazioni, ma dal punto, dove abbiamo raggiunto la deviazione di 10 punti, e aspettiamo il prossimo aumento di 10 punti nel prezzo.

Per esempio, otteniamo:

Se (punto di partenza) + 10 pips <= prezzo (usiamo tutti i prezzi successivi delle barre dal punto di partenza.) Otteniamo un contatore = contatore +1; e facciamo partire il punto di partenza già da questo punto - (punto di partenza + 10 pips).

Se (punto di partenza + 10 pips) + 10 pips <= prezzo (tutti i prezzi successivi delle barre dal punto di riferimento sono utilizzati) si ottiene counter=Counter +1; e si parte da questo punto - (punto di partenza + 10 pips) + 10 pips.

Se (punto di partenza + 10 pips + 10 pips) + 10 pips <= prezzo (usiamo tutti i prezzi successivi delle barre dal punto di riferimento.) si ottiene counter=Counter +1; e si parte da questo punto - (punto di partenza + 10 pips + 10 pips) + 10 pips.

e così via...

Fino a raggiungere un contatore di 10 (contatore == 10).

E ogni nuova barra di 1 minuto formata (high+low/2 - valore medio della barra) controlliamo questa condizione e aspettiamo che il contatore raggiunga 10 (contatore == 10). Supponiamo che siano passati due giorni, ogni nuova barra formata abbiamo controllato e spostato se le condizioni erano corrette .....

E quando abbiamo raggiunto il contatore =10 - emettiamo il messaggio che "Contatore == 10". Spostiamo il punto di partenza 2 giorni prima del punto iniziale definito dall'utente, cioè dal 29/10/12 alle 00:00 al 31/10/12 alle 00:00 e ripetiamo il ciclo.

Ripetere il ciclo e quindi muoversi attraverso il programma.

Cioè dovremmo prendere le barre appena formate e disegnare (high+low/2 - valore medio della barra). Controllate le condizioni e, se sono corrette, spostatele come descritto sopra.

Ho provato a implementarlo attraverso un array, è molto confuso e dà valori sbagliati! Aiutatemi a implementare questo algoritmo!
File:
qawer.mq4  3 kb
 
merkulov.artem:

Ho provato a implementarlo attraverso un array, diventa molto confuso e dà valori sbagliati!!! Aiuto come implementare questo algoritmo!

Sarebbe molto bello se tu potessi commentare il tuo algoritmo in dettaglio (ogni comando e i dati utilizzati), perché è molto difficile capire cosa viene fatto e per quale scopo

allora, forse, potrai ricevere aiuto, o forse troverai il problema da solo

 

Secondo l'aiuto, la funzioneSetIndexDrawBegin indica da quale barra iniziare a disegnare. Ho preso un indicatore AC standard per il test e ho cambiato i parametri

SetIndexDrawBegin(0,8);
   SetIndexDrawBegin(1,38);
   SetIndexDrawBegin(2,38);

a

   SetIndexDrawBegin(0,8);
   SetIndexDrawBegin(1,8);
   SetIndexDrawBegin(2,8);

Non è cambiato nulla; inizia a disegnare da... non da 8 bar a 0 bar, ma da quale bar non è chiaro.

Potete vedere che non sono 8...


 
hoz:

Secondo l'aiuto, la funzioneSetIndexDrawBegin indica da quale barra iniziare a disegnare. Ho preso un indicatore AC standard per il test e ho cambiato i parametri

a

Non è cambiato nulla; inizia a disegnare da... non da 8 bar a 0 bar, ma da quale bar non è chiaro.

Potete vedere che non sono 8...


Il numero di serie della barra dall'inizio dei dati (leggi "dall'inizio del grafico" "dal lato sinistro"), da cui la linea selezionata dell'indicatore dovrebbe essere disegnata. Il disegno dell'indicatore viene eseguito da sinistra a destra.
 
midorum:
Imposta il numero di serie della barra dall'inizio dei dati (leggi "dall'inizio del grafico" "dal lato sinistro del grafico"), da cui deve partire la linea dell'indicatore indicata. L'indicatore è disegnato da sinistra a destra.

E se ho bisogno di disegnare le ultime 30 barre per esempio, come devo fare?

 
hoz:

E se voglio che vengano disegnate le ultime 30 barre, come faccio?

prova Bars-30