avventure di un principiante - pagina 5

 

Ciao Tim,

Sono stato sveglio fino alle 2 del mattino ieri per trasformare il PSC in C (pseudocodice in codice). Ho iniziato subito dopo essere tornato a casa dal lavoro.

Finendo la prima bozza mi sono reso conto che i) mancano alcune cose, ii) dobbiamo rendere tutto specifico per la 'coppia'.

Solo per controllare se sono sulle linee giuste, potresti condividere un po' di saggezza su questo:

1. Non possiamo usare 3 ema senza specificare il simbolo quando dichiariamo ogni iMA o l'EA non funzionerà correttamente. quindi dobbiamo dichiarare 15 ema (5 simboli con 3 Ma per simbolo)?

2. Abbiamo perso la funzione CountOrders. Di nuovo, a causa di 5 coppie. Abbiamo bisogno di 10 funzioni. es: EUR_USD_BuyCount, EUR_USD_SellCount; ecc. ?

3. Ho capito che c'è un modo efficiente di scrivere il codice e un modo "newbie". Farò il modo newbie e poi apprezzerei se tu potessi mostrarmi come renderlo efficiente.

4. Numeri magici. Aspiro a quello che stai facendo tu e quindi vorrei eseguire più EA contemporaneamente. Ho dato un'occhiata a Magic Numbers ma per quanto mi riguarda non riesco a capirlo, nemmeno da altri codici. Potresti indirizzarmi da qualche parte dove posso imparare di più su come fare in modo che il computer differenzi tra i diversi EA.

Grazie

Nick

 

Ciao Nick

Mi dispiace ma mi stai perdendo qui. Sembra che stiamo di nuovo mettendo il carro davanti ai buoi e di conseguenza stiamo andando indietro. Nel mio precedente intervento ti ho suggerito di impostare una struttura di base per il tuo programma utilizzando la procedura guidata MetaTrader EA e lo pseudo codice che avevamo già scritto. Puoi tornare indietro e completare quel passo e postare i risultati (il file mq4) su questo forum perché io possa darci un'occhiata? Poi possiamo passare al passo successivo. Certamente non hai bisogno di 15 ema, 10 funzioni o numeri magici per quella materia e nel caso improbabile che abbiamo problemi con i requisiti specifici del broker possiamo trattare con loro se e quando ci arriviamo.


Probabilmente posso guidarti attraverso il processo di scrittura del tuo primo EA, ma solo se sei disposto a fare un passo alla volta e a postare i risultati su questo forum ogni volta perché io possa rivederli. Altrimenti penso che questo piccolo progetto andrà fuori strada, sprecando il mio e il tuo tempo.

Hai detto - Farò il modo newbie e poi apprezzerei se tu potessi mostrarmi come renderlo efficiente.

Nick, è un esercizio frustrante e dispendioso in termini di tempo cercare di risolvere il cattivo codice di qualcuno. Di solito non ne vale la pena.


Saluti

Tim

 

Ciao Tim,

Mi dispiace di averti frustrato, ti ho frainteso. Hai detto che dovrei codificare ora anche se non funzionerà e così ho pensato che dovrei andare avanti e codificarlo. Così ho passato un bel po' di tempo a codificarlo, cercando di alleviare il lavoro a te - ma si è rivelato il contrario.

Ma non preoccuparti, posterò il PseudoCodice nel framework EA, se è questo che intendi. Poi potresti guidarmi attraverso ogni blocco, se non hai perso la pazienza per allora :)

 

Ciao Tim,


Ho allegato il codice Pseudo in un formato EA con le parentesi che lo modificano. Fammi sapere se ancora non ho capito quello che volevi dire e lo cambierò come necessario. Ho dichiarato solo le bandiere e i filtri per farti risparmiare tempo. Non ho toccato nient'altro. Non ho creato nomi per le funzioni perché non ho ancora capito cosa saranno, come hai chiaramente capito dal mio ultimo messaggio. Qual è il prossimo passo da qui, capo?

File:
 
niko:

Ciao Tim,


Ho allegato il codice Pseudo in un formato EA con le parentesi che lo modificano. Fammi sapere se non ho ancora capito cosa intendevi e lo modificherò come necessario. Ho dichiarato solo le bandiere e i filtri per farti risparmiare tempo. Non ho toccato nient'altro. Non ho creato nomi per le funzioni perché non ho ancora capito cosa saranno, come hai chiaramente capito dal mio ultimo messaggio. Qual è il prossimo passo da qui, capo?

Ciao a tutti. Sono diventato impaziente - mentre sono d'accordo con la necessità dello pseudocodice, penso che voi ragazzi stavate andando un po' troppo oltre (scusa Tim).

Ho appena buttato giù questo. Ci ho passato solo mezz'ora, non ho controllato gli errori, la sintassi, ecc. ecc.

Ma se ci fate un giro, dovrebbe essere abbastanza vicino a quello che vi serve. L'ho volutamente lasciato come un'ossatura per farvi vedere la struttura, ma in modo che abbiate ancora del lavoro da fare. Come esempio, ho volutamente lasciato fuori tutto il controllo degli errori nella funzione fnTrade e un errore nella gestione di TakeProfit.


CB


AGGIORNAMENTO: A causa del successivo post di Tim, ho cancellato l'EA che ho creato per te e farò marcia indietro per lasciarlo fare a Tim.


TIM: In riferimento al tuo post sulla logica delle valute multiple, avevo strutturato quell'EA per essere indipendente dai simboli, poiché era quello che Nick mi aveva detto di volere mentre lavoravo con lui prima che tu arrivassi per sostituirlo.

 

Ciao Nick. Cloudbreaker

Cloudbreaker, noto la tua frustrazione per la lentezza dei progressi. Pensavo che lo scopo di questo esercizio fosse di insegnare a Nick come programmare usando MT4. A giudicare da molto del codice e delle discussioni relative alla codifica che ho visto su questo forum, rimango della mia affermazione che un approccio sistemico è il modo più affidabile e spesso il più veloce per produrre codice di buona qualità.


Prendo atto che questo è un progetto abbastanza banale e che qualsiasi programmatore esperto potrebbe fare qualcosa del genere molto rapidamente con un minimo di formalità. Cercherò di portare avanti le cose il più velocemente possibile per ridurre al minimo la frustrazione di tutti, ma per favore tenete a mente che l'apprendimento spesso richiede tempo ed è facile per coloro che sanno fare diventare frustrati quelli che stanno cercando di imparare.

Nick,

Il codice che hai postato non era proprio quello che stavo cercando. Ho messo un po' in ordine le cose e ho fatto alcune note per te nel codice con alcune cose da fare.

Il prossimo compito è quello di fornire un modo per gestire le diverse coppie di valute senza scrivere procedure separate per ogni coppia.


Un modo per farlo sarebbe dichiarare le coppie di valute come un ARRAY di STRINGS nell'area di dichiarazione globale.

Poi nel blocco principale del programma - (funzione di avvio) usa un ciclo FOR per indicizzare l'array

Nick prova a programmare questo codice e poi riportalo sul forum


Dobbiamo anche iniziare a pensare alla gestione degli errori, ai test e al debug. Un modo comune per farlo in MetaTrader è usare i file di log. Ho aggiunto alcune righe nell'EA per provare a iniziare.

Per favore dai un'occhiata e cerca di capire cosa ho fatto. Puoi eseguire il codice e dare un'occhiata al file di log su un conto attivo o nel tester della strategia.


Saluti

Tim

File:
 

Ciao ragazzi,

Grazie ad entrambi per il vostro supporto in questo viaggio! Sono d'accordo che un approccio sistematico è essenziale per un principiante, ma altrettanto importante è approfondire il codice. Queste due componenti si aiutano a vicenda a crescere e incoraggiano il processo di apprendimento. Questo è ciò di cui mi sono reso conto e quindi ho speso tempo su entrambi. Meglio uno capisce il processo di codifica, migliore sarà il suo pseudocodice e il programma successivo.

Procederò con questo sforzo, lavorando con entrambi i documenti in parallelo - penso che questo accelererebbe il processo di apprendimento come niente altro, poiché avrei un punto di riferimento specifico.

L'attenzione principale sarà sulla trasformazione dello pseudocodice in codice, ma userò il documento di CB per idee su come e quali parti aggiungere, così come lo userò in parallelo per imparare, naturalmente anche con la guida di Tim lungo la strada.

Nick

 
niko:

Ciao ragazzi,

Grazie ad entrambi per il vostro supporto in questo viaggio! Sono d'accordo che un approccio sistematico è essenziale per un principiante, ma altrettanto importante è approfondire il codice. Queste due componenti si aiutano a vicenda a crescere e incoraggiano il processo di apprendimento. Questo è ciò di cui mi sono reso conto e quindi ho speso tempo su entrambi. Meglio uno capisce il processo di codifica, migliore sarà il suo pseudocodice e il programma successivo.

Procederò con questo sforzo, lavorando con entrambi i documenti in parallelo - penso che questo accelererebbe il processo di apprendimento come niente altro, poiché avrei un punto di riferimento specifico.

L'attenzione principale sarà sulla trasformazione dello pseudocodice in codice, ma userò il documento di CB per idee su come e quali parti aggiungere, così come lo userò in parallelo per imparare, naturalmente anche con la guida di Tim lungo la strada.

Nick

Ciao Nick, ora mi tiro indietro. Vedi la modifica al mio post sopra.


CB

 
cloudbreaker:

Ciao Nick, ora mi tiro indietro. Vedi la modifica al mio post sopra.


CB

Ciao CB, ho pensato che l'avresti fatto, quindi sono stato abbastanza veloce a scaricarlo. Come ho detto prima, tutto ciò che riguarda l'idea che ho mi sta aiutando ad imparare, il tuo codice non scoraggerà il mio apprendimento poiché non lo copierò nel template di Tim, cercherò invece di capirlo per vedere come le cose possono essere fatte in modo diverso :)


Qualsiasi cosa aiuta, come si dice!

 
niko:

Ehi CB, ho pensato che l'avresti fatto, quindi sono stato abbastanza veloce a scaricarlo. Come ho detto prima, tutto ciò che riguarda l'idea che ho mi sta aiutando ad imparare, il tuo codice non scoraggerà il mio apprendimento in quanto non lo copierò nel template di Tim, cercherò invece di capirlo per vedere come le cose possono essere fatte in modo diverso :)


Tutto aiuta, come si dice!

Non ti preoccupare. Con solo alcune modifiche, dovrebbe effettivamente fare il lavoro per te.

Dovresti iniziare modificando l'"errore" TakeProfit che ho costruito per te. Dai un'occhiata a come viene fatto lo StopLoss per un indizio.

Una volta che l'avrai fatto funzionare, spero che comincerai ad aggiungere la gestione degli errori, e qualche cosa di facile per l'operatore come le istruzioni Print() in modo da poter vedere facilmente nei log quello che sta facendo.

Lo pseudocodice è importante prima di impegnarsi nel codice (anche per i programmatori esperti), ma non cucinarlo troppo.

Sembra che tu attiri l'aiuto grazie al tuo modo bonario. La mia ipotesi è che tu lavori nelle risorse umane o sei interessato alla psicologia umana?


CB