Ci sono errori, quindi il codice non funzionerà come l'autore intendeva. Devi capirlo. Avete il codice, avete le carte a portata di mano.
Da quello che hai mostrato, vedo che o le candele sono meno di 60, o l'handle di uno degli indicatori è INVALIDO, il che significa che i parametri gli vengono inviati in modo errato. Oppure c'è un errore in un'altra parte del codice che non vedo.
Sono riuscito a scoprire da solo dove si trova il problema, ma la domanda riguardava qualcos'altro: cosa può essere affetto da questi errori e cosa dovrei cambiare nel codice per eliminarli?
Sinceramente, Vladimir.
Se si verifica un errore, l'Expert Advisor non sarà collegato al grafico.
Non dovete fare nulla. Cosa è già stato fatto - in caso di errore, l'Expert Advisor viene staccato dal grafico
e informa l'utente.
Questo errore non si verifica praticamente, tranne quando il computer è in disordine.
==
Tuttavia, se succede sempre durante il processo di sviluppo...
Significa che l'indicatore non è chiamato correttamente - fissa i parametri dell'indicatore.
qui funziona - forse non stai impostando correttamente il periodo
Grazie per la dritta!!! Infatti, il problema era che non potevo impostare i periodi per entrambi gli indicatori da "zero" in su nelle impostazioni del tester. Avrei dovuto impostarli almeno da "uno" in su.
Vladimir Baskakov #: Ho deciso di imparare la lingua, ma non molte persone hanno iniziato ad impararla. Per quale motivo?
Vladimir, è molto semplice. Ho imparato quello che dovevo imparare. Ora prendo diversi EA e li faccio per me. La cosa più importante è che ora non guardo più MQL5 come i caratteri cinesi, ma come un normale pezzo di software. Molte grazie a tutti i professionisti che mi hanno aiutato nel mio autoapprendimento!
Continuare l'autoapprendimento del linguaggio di programmazione MQL5. Arrivò il momento in cui dovetti avere a che fare con gli array. Ho deciso di calcolare la dimensione del lotto in base al rischio specificato nei parametri di input. Non ho errori o avvertimenti dopo la compilazione, ma il codice della funzione non funziona. Potete dirmi, per favore, dov'è l'errore?
Saluti, Vladimir.
inputdouble Risk0=1.0; //Риск (% от баланса)
.
.
.
.
inputdouble Risk9=1.0; //Риск (% от баланса)//+------------------------------------------------------------------+//| Функция Money_Management рассчитывает размер лота в зависимости |//| от риска, заданного во входных параметрах советника. |//+------------------------------------------------------------------+double Money_Management()
{
staticint Risk[];
int Number=0;
//----+ Объвляем переменную для хранения размеров массивов переменныхstaticint Size_ = 0;
//----+ Изменяем размер массивов переменныхif(Number + 1 > Size_)
{
uint size = Number + 1;
//---- Предварительно обнуляем ячейки массива
Risk[Number] = false;
}
if(Risk[0] != Risk[Number])
{
Risk[Number] = Risk[0];
}
double Lots=AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk[Number]/100000*10;
Lots=MathMin(5,MathMax(0.1,Lots));
if(Lots<0.1)
Lots=NormalizeDouble(Lots,2);
else
{
if(Lots<1)
Lots=NormalizeDouble(Lots,1);
else
Lots=NormalizeDouble(Lots,0);
}
return(Lots);
}
//+------------------------------------------------------------------+
MrBrooklin del linguaggio di programmazione MQL5. Arrivò il momento in cui dovetti avere a che fare con gli array. Ho deciso di calcolare la dimensione del lotto in funzione del rischio specificato nei parametri di input. Non ho errori o avvertimenti dopo la compilazione, ma il codice della funzione non funziona. Potete dirmi, per favore, dov'è l'errore?
Sinceramente, Vladimir.
Spero vivamente che non l'abbiate scritto voi...
Ecco una funzione funzionante
/********************************************************************\
| Calculate optimal lot size Расчет объема лота |
/********************************************************************/double contractSize(double Lot)
{
double volume = Lot > 0.0 ? Lot : AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,
v = volume,
volumeStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP),
minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN),
maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
v = round(volume/volumeStep)*volumeStep;
return(fmin(maxLot, fmax(minLot, v)));
}/******************************************************************/
Tutto quello che devi fare è inserire la quantità di rischio, in modo che non conti dal margine libero completo...
Ci sono errori, quindi il codice non funzionerà come l'autore intendeva. Devi capirlo. Avete il codice, avete le carte a portata di mano.
Da quello che hai mostrato, vedo che o le candele sono meno di 60, o l'handle di uno degli indicatori è INVALIDO, il che significa che i parametri gli vengono inviati in modo errato. Oppure c'è un errore in un'altra parte del codice che non vedo.
Saluti, Vladimir.
Ops, Alexey;)
Sono riuscito a scoprire da solo dove si trova il problema, ma la domanda riguardava qualcos'altro: cosa può essere affetto da questi errori e cosa dovrei cambiare nel codice per eliminarli?
Sinceramente, Vladimir.
Se si verifica un errore, l'Expert Advisor non sarà collegato al grafico.
Non dovete fare nulla. Cosa è già stato fatto - in caso di errore, l'Expert Advisor viene staccato dal grafico
e informa l'utente.
Questo errore non si verifica praticamente, tranne quando il computer è in disordine.
==
Tuttavia, se succede sempre durante il processo di sviluppo...
Significa che l'indicatore non è chiamato correttamente - fissa i parametri dell'indicatore.
Se si verifica l'errore, l'EA non si attaccherà al grafico.
Non avete bisogno di fare nulla. Cosa è già stato fatto - in caso di errore, l'Expert Advisor si stacca dal grafico
e informa l'utente.
Questo errore non si verifica praticamente, tranne quando il computer è in disordine.
==
Tuttavia, se succede sempre durante il processo di sviluppo...
Significa che l'indicatore è chiamato in modo errato - correggi i parametri dell'indicatore.
Grazie, Dmitry per la tua risposta completa e comprensibile!
Saluti, Vladimir.
qui funziona - forse non stai impostando correttamente il periodo
Grazie per la dritta!!! Infatti, il problema era che non potevo impostare i periodi per entrambi gli indicatori da "zero" in su nelle impostazioni del tester. Avrei dovuto impostarli almeno da "uno" in su.
Grazie a tutti per la vostra partecipazione!
Saluti, Vladimir.
P.S. Dovresti rimuovere il codice EA "spoils", perché questi "spoils" infastidiscono molte persone. Ho già rimosso il mio.
Quelli che sono molto fastidiosi lasciano andare i boschi periodicamente prendendo motherwort o tintura di agarico della mosca.
Anche a me non piacciono quei lacci, ma non li guardo e basta.
Ho deciso di imparare la lingua, ma non molte persone hanno iniziato ad impararla. Per quale motivo?
Vladimir, è molto semplice. Ho imparato quello che dovevo imparare. Ora prendo diversi EA e li faccio per me. La cosa più importante è che ora non guardo più MQL5 come i caratteri cinesi, ma come un normale pezzo di software. Molte grazie a tutti i professionisti che mi hanno aiutato nel mio autoapprendimento!
Saluti, Vladimir.
Preferisco avere uno spoiler che scaricare un file e metterlo nella mia sandbox. )
Buongiorno a tutti e buon umore!
Continuare l'autoapprendimento del linguaggio di programmazione MQL5. Arrivò il momento in cui dovetti avere a che fare con gli array. Ho deciso di calcolare la dimensione del lotto in base al rischio specificato nei parametri di input. Non ho errori o avvertimenti dopo la compilazione, ma il codice della funzione non funziona. Potete dirmi, per favore, dov'è l'errore?
Saluti, Vladimir.
Sinceramente, Vladimir.
Spero vivamente che non l'abbiate scritto voi...
Ecco una funzione funzionante
Tutto quello che devi fare è inserire la quantità di rischio, in modo che non conti dal margine libero completo...