Errori, bug, domande - pagina 553

 
Urain:

Poi fai un suggerimento nel thread del profilo (non c'è errore, però).

bene... Penso che questo sia un errore. secondo la mia comprensione, se nel calendario posso selezionare la fine del periodo per essere la data di oggi,
allora ci si aspetta che il tester e l'ottimizzatore lavorino fino al tempo corrente, ma questo non accade ((
gli sviluppatori sono consapevoli di questo ed è in loro potere fare una buona piattaforma. se non, allora no. penseremo ulteriormente...

 

Ho letto questo articolo "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 in cui ho trovato le seguenti righe:


Per le quotazioni a 3 e 5 cifre moltiplichiamo i valori di Stop Loss e Take Profit per 10.

L'esempio MACD incluso nel terminale contiene le stesse informazioni:

//--- tuning per 3 o 5 cifre
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_adjusted_point=m_symbol.Point()*digits_adjust;

Cos'è questa azione? Perché moltiplicare le variabili per 10 con 3 e 5 cifre decimali?

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
progeon:

Ho letto questo articolo "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 in cui ho trovato le seguenti righe:

Per le quotazioni a 3 e 5 cifre moltiplichiamo i valori di Stop Loss e Take Profit per 10.

L'esempio MACD incluso nel terminale contiene le stesse informazioni:

//--- tuning per 3 o 5 cifre
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_adjusted_point=m_symbol.Point()*digits_adjust;

Cos'è questa azione? Perché moltiplicare le variabili per 10 con 3 e 5 cifre decimali?

È per quegli amici che sono abituati a contare tutto in quattro cifre e non vogliono cambiare idea.

Così, se impostiamo 100 punti di Stop Loss nei parametri, otteniamo 1000 punti nei calcoli a cinque cifre, e 100 punti nei calcoli a quattro cifre, che è lo stesso.

Il numero a quattro cifre ha dei vantaggi, è facile ricalcolare il profitto, 1 pip fa 1% dei fondi investiti.

 
progeon:

Ho letto questo articolo "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 in cui ho trovato le seguenti righe:

Per le quotazioni a 3 e 5 cifre moltiplichiamo i valori di Stop Loss e Take Profit per 10.

L'esempio MACD incluso nel terminale contiene le stesse informazioni:

//--- tuning per 3 o 5 cifre
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_adjusted_point=m_symbol.Point()*digits_adjust;

Che tipo di azione è questa? Perché dovresti moltiplicare una variabile per 10 con 3 e 5 cifre decimali?


Per una migliore compatibilità con diversi broker (che forniscono quotazioni a 4 o 5 cifre), cioè senza la necessità di cambiare i parametri dell'Expert Advisor.

Questo algoritmo si basa sul fatto che nei broker che offrono quotazioni a 4 cifre _Le cifrepossono essere 4 o 2 (di solito nelle coppie con JPY),

e in 5 cifre 5 e 3 di conseguenza.

Anche se io stesso sono interessato alla sicurezza di questo metodo, perché ci sono strumenti con diversivalori di _Digits.

Personalmente sto controllando con "EURUSD". Ma almeno ci sono broker in MT4 dove l'eurodollaro ha un nome leggermente diverso, per esempioEURUSD_fx

o qualcosa del genere.

 
crOss:
пункты 1 и 2 уходят, если фиксировать правое время на момент начала теста/оптимизации.
никто не просит актуальность до секунды... но один торговый день - это, извините, ни в какие ворота.

Urain:

Poi dovrete inserire non solo l'anno mese data, ma anche l'ora e i minuti della fine.

Non necessariamente, il tempo può essere fissato in modo puramente programmatico quando il test/ottimizzazione viene eseguito.

Onestamente, trovo il suggerimento abbastanza sensato. Sono d'accordo.

È irrilevante per me al momento, ma potrebbe essere molto desiderabile presto.

 
Urain:

Questo è per quelle persone che sono abituate a contare tutto in punti a quattro cifre, e non vogliono ricostruire.

Così, impostando stoploss per 100 punti nei parametri, otteniamo il ricalcolo di 1000 punti in cinque cifre, e 100 punti in quattro cifre, che è la stessa cosa.

Il numero a quattro cifre ha dei vantaggi, la facilità di ricalcolo del profitto, 1 pip 1% dei fondi investiti.

Capisco, continuiamo) Un'altra domanda - lo stesso articolo usa la funzione NormalizeDouble quando forma Stop Loss e Take Profit per quale motivo? Sembra senza senso.

mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
progeon:

Capisco, continuiamo) Una domanda - nello stesso articolo la funzione NormalizeDouble è usata quando si formano Stop Loss e Take Profit per quale motivo? Sembra che non abbia senso.

Non c'è nessuna inutilità. Durante il calcolo del livello, vengono eseguite operazioni con raddoppiamenti e il risultato non sarà normalizzato e si otterranno requotes se passate al server così come sono. Ecco perché il risultato del calcolo è normalizzato.
 
Urain:
Non c'è nessuna inutilità, quando si calcola il livello, si eseguono operazioni con i doppi e il risultato non sarà normalizzato, se lo si passa al server così com'è, si otterrà un requote. Ecco perché il risultato del calcolo è normalizzato.
Supponiamo che lo stoploss sia 100, il punto è 0,00001. Cosa può succedere quando li si moltiplica? I 9 spunteranno da qualche parte? Per esempio 0,0009999?
 
progeon:
Stoploss diciamo 100, punto 0,00001. che cosa potrebbe sorgere quando si moltiplicano? I 9 spunteranno da qualche parte? Per esempio 0,0009999?
   double a=1.45861+32*_Point;
   Print(DoubleToString(a,16));

Sembra che un numero normale dovrebbe uscire come 1,45893 ma otteniamo 1,4589300000000002

 
Renat:

Abbiamo pianificato di fare una scheda "Sicurezza" nelle informazioni EA, che mostra il livello di sicurezza e una lista di funzioni DLL chiamate.

Giusto in tempo per il lancio del negozio, lavoreremo sui file EX5.

Renat, ci sono altre due domande sulle chiamate DLL nel nuovo formato EX5.

1. Come si comporterà il codice quando le chiamate sono disabilitate? Come adesso - non funzionerà nemmeno?

2. Se non parte, a cosa serve MQL5_DLLS_ALLOWED /TERMINAL_DLLS_ALLOWED?