Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1434

 
jeremy10p100 # :
Ciao e grazie per la tua risposta. Sono riuscito a fare uno script che soddisfa le mie aspettative, ma purtroppo ci sono ancora due errori che non riesco a capire o a correggere. Sapresti chi contattare per un piccolo aiuto? Sono solo due righe di codice che registrano come errori dopo la compilazione...

Puoi creare un lavoro da freelance e scegliere tra gli sviluppatori che si candidano per il tuo lavoro

https://www.mql5.com/fr/job

Applications de trading pour MetaTrader 5 à commander
Applications de trading pour MetaTrader 5 à commander
  • 2023.01.08
  • www.mql5.com
Le plus grand service de freelance avec des développeurs d'applications MQL5
 
#include <JAson.mqh>
CJAVal jv;

jv["type"] = "BTCUSD";
jv["title"] = "test";

int result;
char res_data[],post[];
ArrayResize(post,StringToCharArray(jv.Serialize(),post,0,WHOLE_ARRAY)-1);
string headers="Content-Type: application/json\r\nAccept: text/plain";
result=WebRequest("POST",url,headers,3000,post,res_data,res_headers);

Cercando di inviare json tramite WebRequest, il server restituisce:"\u0022BTCUSD\u0022 non è un tipo di bundle valido per la denormalizzazione".

Cioè non gli piace la codifica delle virgolette \u0022 .
Ho provato a specificare tutte le varianti di codifica nelle intestazioni e in
StringToCharArray, ma niente aiuta.

Da python tutto funziona senza problemi:
response = requests.post(url, data=json.dumps(data), headers=headers)
cioè tutto è ok con il server.

Come risolvere il problema?

 

Permettetemi di riformulare la domanda in modo un po' diverso. È possibile dare all'ottimizzatore un comando nel blocco OnInit per saltare la variante di test/ottimizzazione in determinate condizioni.

input group "Входные настройки Стохастик"
input bool Stoch = false; // Стохастик включен/выключен
input int in_StochK = 14; // период основной линии K
input int in_StochD = 3; // период первичного сглаживания D
input int in_StochSlow = 3; // период окончательного сглаживания

int OnInit() {
if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
   {
   // Некая команда, которая говорит, что такой вариант даже не стоит пробовать оптимизировать  
   }
}

Ho provato a farlo, ma questo porta a varianti di ottimizzazione non corrette.

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0))) 
   {
   
Print("Такой вариант тестирования не имеет смысла");
   return(INIT_FAILED);
   }

L'obiettivo è di poter abilitare l'enumerazione delle varianti di 4 parametri stocastici (Stoch, in_StochK, int in_StochD, int in_StochSlow) durante l'ottimizzazione.

  • Quando lo stocastico è abilitato (Stoch = true), l'ottimizzatore enumera le variabili in_StochK, in_StochD, in_StochSlow. Tutto funziona correttamente in questa parte.
  • Quando lo stocastico è disattivato (Stoch = false), l'ottimizzatore cerca ancora le variabili in_StochK, in_StochD, in_StochSlow. Ho bisogno di inserire una sorta di stop nel codice in modo che non le ricerchi se Stoch = false.
 

Ciao @taramortom.

Probabilmente sarebbe utile se sostituissi

return(INIT_FAILED)

a

return(INIT_PARAMETERS_INCORRECT)
 
Yuriy Bykov #:

Ciao, @taramortom.

Probabilmente sarebbe utile sostituire

a

Ho provato. Non funziona. L'ottimizzatore continua a non funzionare correttamente con questo comando.
 

Forse il motivo per cui l'ottimizzatore non funziona correttamente è dovuto a questa imprecisione nel codice:

if ((Stoch = false) && ((StochK != 0) || (StochK != 0) || (StochSlow != 0)))
 
Yuriy Bykov #:

Forse il motivo per cui l'ottimizzatore non funziona correttamente è dovuto a questa imprecisione nel codice:


Non è questo il motivo. Ho realizzato il codice come esempio della logica di funzionamento. La versione completa del codice è troppo grande: ci sono molti oscillatori diversi. Quando si ottimizza, voglio che l'ottimizzatore provi diverse combinazioni (un oscillatore attivo, due oscillatori attivi, tre oscillatori attivi, ecc.)

- Utilizzando questa limitazione, l'ottimizzatore completa rapidamente il lavoro con un numero ridotto di passaggi, anche se dovrebbero essere numerosissimi.

- Senza questa limitazione, l'ottimizzatore funziona meglio, ma produce molte varianti vuote (per l'esempio precedente - cerca ancora i suoi parametri quando Stochastic è disattivato). È un bene che ci siano varianti vuote, ma si tratta di tempo in più per l'ottimizzazione e di passaggi vuoti al posto di quelli utili.

 
State usando l'ottimizzazione genetica o quella completa?
Ho utilizzato questo approccio per escludere combinazioni di parametri evidentemente inutili e non ho notato prestazioni errate dell'ottimizzatore. Al contrario, l'ottimizzatore ha funzionato esattamente come previsto.
Si può provare ad aggiungere il salvataggio delle combinazioni di parametri mancanti al database o a un file comune per verificare quante e quali sono realmente mancate e per capirne le ragioni.
 

Sto scrivendo un indicatore basato sulla MA - ExtJawsHandle=iMA(NULL,0,Period,0,Method,AppliedPrice);

come posso raggiungere programmaticamente i livelli della MA, come mostrato nella figura sottostante.

Un costrutto del tipo

IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

non funziona.


 
Tango_X IndicatorSetInteger(INDICATOR_LEVELS,1);

IndicatorSetDouble(INDICATOR_LEVELVALUE,0,10);

non funziona.


Nessuna opzione?)