Manuale completo per principianti di MQL - pagina 3

 
8284 wrote >>

Oh CB, Oh CB!

Sei un duro. Non vuoi davvero tenermi la mano in tutto questo. Questo è lo stesso libro scritto in greco, latino e marziano da cui sono fuggito. Certo, non c'è modo di diventare abile in una professione senza imparare la terminologia ma.....

Mi ricordi il mio professore di logica Dr Otakpor (per logica intendo sotto filosofia). È meglio non fargli mai una domanda se non si ha idea di quello che si stava chiedendo. CB, il libro sulle matrici è abbastanza tecnico per me (è stato il mio primo sforzo di codifica). Ho una vaga idea di cosa sia, ma non una piena comprensione. Comunque la prendo come una sfida!

Cercherò quella piccola "..a" che trasformerà il mio "ah.." in "aha".

Leggerò, scriverò e poi vi darò quello che so sugli array (in realtà sono le loro applicazioni che devo conoscere meglio).

L'unica cosa è che questo risulterebbe in un post molto lungo. Ci sono pezzi di codice che vedo usare gli array [] ma non capisco bene la logica. Speravo che se mi fosse stato spiegato, non avrei avuto così tante domande (un po' come un pezzo mancante del puzzle).

Mi avete sfidato e penso che sia un bene per il mio sviluppo, tuttavia vi prego di essere un po' più morbidi con me perché sono scientificamente disabile. Il mio background è nelle arti. Quando parlo con le signore, dicono che parlo come un poeta. Spero solo di non scrivere in codice come un poeta!

Seriamente, niente sonno per me oggi, entro 24 ore, tornerò con la mia comprensione degli array. Spero che mi correggerete dove ho sbagliato e mi aiuterete a capire l'applicazione delle matrici alla programmazione.

Oh CB, Oh CB!

A proposito, i miei tre migliori docenti di sempre sono stati il Dr Otakpor, il Barr Richard Idubor e il Barr Bob Osamor!

Il Dr Otakpor (insegnava Logica e Filosofia) tirava fuori il meglio dai suoi studenti rispondendo alle loro domande con le sue stesse domande per farli rispondere alle loro stesse domande.

Questo rendeva il tutto interattivo. Se eri bloccato, ti pungolava dolcemente, ti suggeriva, insinuava fino a quando non avevi la risposta!

Se non ne avevi idea, hmm... un gioco diverso!

 

La tua domanda è più sul PERCHE' useresti un array piuttosto che sul COME?

Se è così, allora, dal mio punto di vista un array è un modo più ordinato di memorizzare un insieme di istanze della stessa variabile, ogni istanza può essere trovata descrivendo la sua posizione.

Per esempio, se scrivete un'applicazione che implementa un cifrario molto semplice dove A=1, B=2, C=3 ecc, potreste memorizzare le lettere dell'alfabeto in un array di stringhe 1-dimensionale (1x26) e localizzare ogni lettera sostituendo il numero. Se (come esempio) hai scritto un EA che memorizza i prezzi Ask e Bid a partire dal primo tick successivo a 3 minuti dopo ogni nuova ora e memorizza questi valori a rotazione per le ultime 5 ore, allora potresti usare un array doppio 2-dimensionale (2x5) per realizzare.


CB

 
cloudbreaker wrote >>

La tua domanda è più sul PERCHE' useresti un array piuttosto che sul COME?

Se è così, allora, dal mio punto di vista un array è un modo più ordinato di memorizzare un insieme di istanze della stessa variabile, ogni istanza può essere trovata descrivendo la sua posizione.

Per esempio, se scrivete un'applicazione che implementa un cifrario molto semplice dove A=1, B=2, C=3 ecc, potreste memorizzare le lettere dell'alfabeto in un array di stringhe 1-dimensionale (1x26) e localizzare ogni lettera sostituendo il numero. Se (come esempio) hai scritto un EA che memorizza i prezzi Ask e Bid a partire dal primo tick successivo a 3 minuti dopo ogni nuova ora e memorizza questi valori a rotazione per le ultime 5 ore, allora potresti usare un array doppio 2-dimensionale (2x5) per realizzare.

CB

Ok CB, la mia domanda è più focalizzata sul COME che sul PERCHE'. So perché; per comodità. Ho capito la maggior parte di quello che hai scritto sopra, ma non tutto!

Sei andato di nuovo sul tecnico, vedi per portarci avanti hai bisogno di chiacchiere e pazienza. Ti renderemo sicuramente orgoglioso ma ci vorrà un po' di tempo. Tenendo presente che solo circa 3 giorni fa il tuo post sopra non avrebbe avuto senso per me, ti chiedo rispettosamente, cosa intendi per "base di rotolamento"!

Sono sicuro che quando mi spiegherai, avrò voglia di picchiarmi, ma ora sono confuso!

Comunque, capisco il perché, ma non il come.

Sto lavorando ad un saggio sugli array che presenterò qui nelle prossime 24 ore, e se mi manca qualcosa, mi aspetto una correzione. In caso contrario, chiederò i come e i quando degli array!

Grazie mille,

Apprezzo la vostra assistenza!

 

Ok CB, sono pronto con il mio saggio. Sono sicuro di aver fatto un errore o due e sarò felice di farmelo notare. Per quello che vale, penso che in qualche modo, sono sembrato un po' tecnico (parlando di inizializzare e dichiarare e altre cose). Scrivere questo mi ha fatto vedere le cose un po' diversamente, ma poi ho anche imparato a scriverlo comunque.

Ho intenzione di leggere sugli array multidimensionali.

Vorrei la vostra critica onesta (e quella di tutti gli altri) su questo.

Se c'è qualche principiante che ha beneficiato di questo, mi piacerebbe sentire anche voi.

Forse farò anche un saggio sulle funzioni, perché scrivere di queste cose me le fa radicare ulteriormente!

 

Cos'è un array?

Definire un array può sconfiggere la causa dei principianti, quindi sarebbe meglio descriverlo. Dopodiché chiunque può cercare la sua definizione tecnica!

Un array può essere pensato come un gruppo di dati simili.
Un esempio.
La popolazione cambia ogni anno.

2004 popolazione = 4
2005 popolazione = 5
2006 popolazione = 6
2007 popolazione = 7
2008 popolazione = 8
2009 popolazione = 9 e così via.

Se stessimo programmando in mql4, per utilizzare questi dati, potremmo dichiararli come variabili ad esempio
int 2004pop = 4;
int 2005pop = 5;;
int 2006pop = 6;
int 2007pop = 7; e così via fino ad arrivare al 2009 o all'infinito

Questo può funzionare ma è piuttosto ingombrante. È qui che entrano in gioco gli array.
L'intera popolazione di dati è un array.
Per usare gli array, dovete prima dichiararli.
Sono dichiarati usando questi "[ ]"
La prima cosa che devi fare è dire al programma il tipo di array, se è un intero, un doppio, ecc Nel nostro esempio è un intero.
Poi date all'array un nome descrittivo, noi lo chiameremo yearpop (abbreviazione di year population)
Dopo il nome descrittivo vengono le parentesi [ ], e dentro le parentesi riveliamo con cosa stiamo lavorando. Nel nostro caso abbiamo 6 dati, quindi dentro la parentesi mettiamo 6. Così [6]
Finora la nostra dichiarazione di array si presenta così
int yearpop [6];
possiamo andare oltre per inizializzare l'array mostrando i valori dei singoli anni come questo

int yearpop [6] = {4,5,6,7,8,9};

Ora mql4 inizia il suo conteggio da 0 invece che da uno. Qui abbiamo sei valori quindi invece di numerare da 1 a 6, mql4 numera da 0 a 5. Per ottenere il valore del primo anno dovete usare 0. Per il secondo anno, dovete usare 1 e così via.

Guardate di nuovo questo
int yearpop [6] = {4,5,6,7,8,9} ;
I numeri 4,5,6,7,8,9 sono chiamati elementi
Il modo in cui si ottiene il valore dei loro elementi è attraverso i loro indici (spero di non confondere le cose qui).
Gli indici iniziano da 0 a qualunque cosa (nel nostro caso 5)

Quindi, se volete ottenere il valore del primo anno, usate il suo indice che è 0 come questo

yearpop [0] // questo vi darebbe la popolazione del primo anno
yearpop [1]// popolazione del secondo anno.
In questo modo si potrebbero fare molti calcoli comodamente (credo)
per esempio
int overpopulation ;
sovrappopolazione = yearpop[0] +yearpop [3] / yearpop [2];

Come si applica questo a mql4?
Tutto quello che so finora è che in mql4, la barra o il timeframe o il simbolo o il grafico corrente è sempre 0 o NULL.
In secondo luogo mql4 conta all'indietro in questo modo
543210 (da destra a sinistra).
Per esempio, su qualsiasi grafico (scusate, non posso fare grafici)
la barra attuale, ancora da formare, ha il valore 0.
La barra immediatamente a sinistra di essa ha il valore di uno, e la prossima a sinistra di questa ha il valore di 2, e così via.
Immediatamente la barra che ha il valore 0 è completa, quindi assume il valore 1, mentre la nuova barra che si forma prende come valore 0 e tutte le altre si spostano di conseguenza.
Ora supponiamo di avere un array dei livelli di prezzo più alti per le barre (cosa che effettivamente facciamo), potremmo fare qualcosa del genere
double highlevels [200];// significa che abbiamo 200 barre //degni di dati nel nostro array
In realtà c'è una funzione in mql4 che può dirci i massimi e i minimi di tutte le barre.
Supponiamo di voler conoscere la differenza tra la 150esima barra e la prima barra.
Se gli array non fossero disponibili, dovreste dichiarare ed eventualmente inizializzare almeno 150 barre, il che richiederebbe molto tempo (CB, questo è il motivo degli array).
Ma dato che abbiamo gli array, tutto quello che dobbiamo fare è riferirci ad essi per i loro numeri di indice e fare il calcolo, così
doppia differenza;

differenza = highlevels [0] - highlevels[149] // ricordate che stiamo //contando da 0
lo 0 è la barra attualmente in formazione. Se vogliamo usare una barra completata per il calcolo, usiamo invece highlevel [1].

Finora ho parlato solo di array monodimensionali. È come una tabella con una sola riga.

Mql4 permette fino a 4 dimensioni di array, che è qualcosa che non ho ancora capito.

 
Qualcuno ha già visto questo?
 

Ciao ragazzi!

È bello vedere che ci sono stati post in questo thread dopo che sono scomparso. Sono andato in secondo piano lavorando su una strategia con il coaching di qualcuno abbastanza eccezionale da questo forum. Quindi realisticamente parlando temo che non contribuirò molto a questo thread nel prossimo futuro, almeno non così "in profondità" come ho fatto prima :)

Nel frattempo a tutti i neofiti là fuori: mantenete la passione per il trading e ricordate che se aiutate qualcuno, l'aiuto vi troverà quando ne avrete bisogno :)

 
ciao,

essendo un principiante vorrei chiedere se la funzione metastock integrata : ref() e stochmomentum() sono implementate da alcune funzioni in metatrader

thnx
 
Huckleberry:

Ehi Niko,

E' il 4 luglio. Sei tornato dalla Turchia?

Saluti

Huckleberry


Per coloro che hanno bisogno di cercare in un documento per trovare qualcosa in esso, ecco una versione PDF dell'intera documentazione...

È stato convertito in PDF da un file di aiuto HTML compilato...

 
cloudbreaker:

8284 - I buoni programmatori si sforzano per la modularità - cioè la creazione di blocchi di costruzione riutilizzabili che possono essere ripetutamente piombati insieme lasciando il minimo indispensabile di codice nuovo da scrivere con ogni nuovo programma. Dovete capire che questo approccio è adatto anche per i materiali di formazione. Ci sono molte risorse disponibili per raccogliere i fondamenti della programmazione che menzionate, poiché sono comuni a tutte le tecnologie. Non è efficiente duplicare questi materiali di apprendimento in ogni linguaggio di programmazione.


CB

Ciao CB,

sono successe molte cose da quando ho scritto sopra. Sono diventato molto più abile di quanto abbia mai pensato di poter essere nella scrittura del codice (anche se c'è ancora molto da lucidare). Trovo che la tua citazione di cui sopra sia così perspicace (qualcosa che non ho apprezzato al momento).

Voglio ringraziarti per il tuo aiuto (ho anche imparato dal tuo aiuto agli altri) e congratularmi per la tua nomina a moderatore (molto meritata, credo)!

Congratulazioni anche a Gordon e BB!