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

 

rigonich

Di nuovo venticinque. Ho chiesto molto specificamente se avevo fatto la prima mossa giusta. Non hai risposto a una domanda diretta, non hai detto una parola in sostanza.

Sì, certo, ho letto un libro di testo, ma siccome ho una professione che non ha niente a che vedere con la programmazione, è chiaro che sto chiedendo un algoritmo chiaro, semplice e concreto. Quanto è difficile da capire? Se trovate difficile rispondere nel merito, allora perché preoccuparsi? Andatevene via.

E come commento - non avete idea di quante persone incontro che io, come medico generico, posso chiamare stupide. È difficile immaginare che gli adulti non capiscano le domande di base sulla propria salute. Se reagisco a tutti come fai tu, sarò inutile come specialista. Dormire bene.

_______________

Per favore - qualcuno mi mandi un'email a neroy(dog)mail.ru che può prendere il codice EA e incollare quello che ti serve nel posto giusto.

 
xant:

rigonich

Di nuovo venticinque. Ho chiesto molto specificamente se avevo fatto la prima mossa giusta. Non hai risposto a una domanda diretta, non hai detto una parola in sostanza.

Sì, certo che ho letto un libro di testo, ma siccome ho una professione che non ha niente a che vedere con la programmazione, è chiaro che sto chiedendo un algoritmo chiaro, semplice e concreto. Quanto è difficile da capire? Se trovate difficile rispondere nel merito, allora perché preoccuparsi? Andatevene via.

E come commento - non avete idea di quante persone incontro che io, come medico generico, posso definire stupide. È difficile immaginare che gli adulti non capiscano le domande di base sulla propria salute. Se reagisco a tutti come fai tu, sarò inutile come specialista. Dormire bene.

_______________

Per favore - qualcuno mi mandi un'email a neroy(dog)mail.ru che può prendere il codice EA e incollare quello che ti serve nel posto giusto.


Non hai chiesto di prendere il tuo EA e incollarci il codice richiesto, non hai postato il codice dell'EA, prima hai chiesto aiuto per risolvere il problema della perdita di dati quando si spegne l'EA, quando l'hai fatto hai insultato chi ti ha aiutato, poi hai chiesto se hai fatto il "primo passo" giusto, e quando ti è stato detto che era sbagliato e hai sottolineato gli errori specifici, insulti di nuovo chi ti sta aiutando, quindi immagino che nessun altro vorrebbe farlo.

P.S. Non riesco nemmeno a pensare a un algoritmo più semplice e chiaro che prendere due funzioni già pronte, copiarle nel mio EA e mettere una chiamata di una all'inizio dell'init e l'altra alla fine dell'inizio.

 
rigonich:

In realtà è il tuo codice, parzialmente corretto da qualcun altro.


il mio codice non ha dato alcun errore. Ma non ha dato alcun risultato.

E il suo codice non ha nemmeno funzionato, perché 24 errori....

ma ho avuto l'idea... e ora funziona.

 

Il compilatore, ovviamente, è disumano. Ora il mio cervello è quasi rotto sul perché l'errore è mostrato

'(' - definizione di funzione inaspettata G:\Program_Files_2\MT4-demo\experts\3.mq4 (139, 14)

mentre questo Expert Advisor ha funzionato come un fascino ieri, ma oggi ho appena aperto un IF lungo in diversi short if....

Si scopre che mi è sfuggita una virgola invertita su un KILLOMETRE da dove il compilatore ha mostrato l'errore! Inoltre, ha taciuto sulla virgola invertita, non era soddisfatto della FUNZIONE, vedi....:((((((((

 

rigonich

Potrei risponderti punto per punto ad ogni tua parola, ma non ne vedo più il motivo. Se qualcuno è testardo, è inutile spiegare qualcosa. La questione era come organizzarsi. Poi, quando hai dato un suggerimento che le variabili globali sono meglio che scrivere su un file, è sorta la domanda su come farlo correttamente. Poi il tuo nervoso cofirmatario ha dato un pezzo di codice, non perdendo l'occasione di fare una battuta. È semplice - parte del codice va nel blocco di inizializzazione, parte del blocco va nel blocco principale EA.

Questo è ciò che va nel blocco di inizializzazione:

 void fGet_MineGV (string fs_PrefName = "") // префикс имени переменной
     {
        string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
        if (GlobalVariableCheck (ls_Name)) SUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
        if (GlobalVariableCheck (ls_Name)) SUA1 = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
        if (GlobalVariableCheck (ls_Name)) BUA = GlobalVariableGet (ls_Name);
        ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
        if (GlobalVariableCheck (ls_Name)) BUA1 = GlobalVariableGet (ls_Name);
     }

Questo è ciò che va nel blocco principale

 void fSave_MineGV (string fs_PrefName = "") // префикс имени переменной
{
 static datetime ldt_NewBar;
 datetime ldaTBeginBar = iTime (Symbol(), 1, 0)
 //---- Сохраняемся в начале каждой минуты
 if (ldt_NewBar == ldaTBeginBar) return;
 ldt_NewBar = ldaTBeginBar;
 //---- Сохраняем поочереди значения каждой переменной
 string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
 GlobalVariableSet (ls_Name, SUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
 GlobalVariableSet (ls_Name, SUA1);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
 GlobalVariableSet (ls_Name, BUA);
 ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
  GlobalVariableSet (ls_Name, BUA1);
}

Come potete vedere, ho rinominato le variabili.

Così, ho inserito sequenzialmente la seconda parte del codice, iniziando subito dopo il calcolo delle variabili e fino alla fine del blocco iniziale, finendo con un tentativo di inserimento prima dell'ultima parentesi graffa.

A giudicare dalla tua spiegazione altamente professionale, è quello che avrei dovuto fare, perché è chiaro a qualsiasi principiante. Secondo voi, dovrebbe funzionare. Ma non è così. Ecco il meglio che sono riuscito ad ottenere:

8 error(s), 0 warning(s)        
 

non ha trovato la funzione giusta nella libreria

Dimensione del TakeProfit dell'ultima posizione chiusa.

Forse qualcuno ne ha uno?

 

Queste catene sono permesse?

if ( (A==1 && B==2) && (C==2 || D==3) && E==4)

cioè sia AND che OR in una linea?

 
 lottamer:

Queste catene sono permesse?

if ( (A==1 && B==2) && (C==2 || D==3) && E==4)

cioè sia AND che OR in una linea?


La risposta è sì. Alcune lingue non sono ammesse? Cosa, devono ridurre tutto a forme congiuntive e disgiuntive-normali?
 
lottamer:

non ha trovato la funzione giusta nella libreria

Dimensione del TakeProfit dell'ultima posizione chiusa.

Forse qualcuno ne ha uno?


Scrivetelo voi stessi - c'è 1 solo ciclo. Prova solo a farlo. E se fallite, mostrateci il codice del vostro ciclo - vi aiuteremo.
 
xant:

rigonich

Potrei risponderti punto per punto ad ogni tua parola, ma non ne vedo più il motivo. Se qualcuno è testardo, è inutile spiegare qualcosa. La questione era come organizzarsi. Poi, quando hai dato un suggerimento che le variabili globali sono meglio che scrivere su un file, è sorta la domanda su come farlo correttamente. Poi il tuo nervoso cofirmatario ha dato un pezzo di codice, non perdendo l'occasione di fare una battuta. È semplice - parte del codice va nel blocco di inizializzazione, parte del blocco va nel blocco principale EA.

Questo è ciò che va nel blocco di inizializzazione:

Questo è ciò che va nel blocco principale

Come potete vedere, ho rinominato le variabili.

Così, ho inserito sequenzialmente la seconda parte del codice, iniziando subito dopo il calcolo delle variabili e fino alla fine del blocco iniziale, finendo con un tentativo di inserimento prima dell'ultima parentesi graffa.

A giudicare dalla tua spiegazione altamente professionale, è quello che avrei dovuto fare, perché è chiaro a qualsiasi principiante. Secondo voi, dovrebbe funzionare. Ma non è così. Ecco il meglio che sono riuscito ad ottenere:


Leggere attentamente. Questi due blocchi sono chiamati descrizioni di funzioni, e non possono essere messi dentro altre descrizioni di funzioni. Nell'init dovrebbe essere messo

{
fGet_MineGV();
}

e in start una chiamata simile alla seconda funzione. le funzioni stesse devono essere messe separatamente nel tuo EA, né in init né in start in nessuna funzione personalizzata.

E iltuo nervoso cofirmatario non ti ha dato parte del codice, ma due funzioni già pronte che ha scritto per te.

Motivazione: