[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 913

 
Dimka-novitsek:

Ho letto il post di ivandurak e mi sono subito reso conto che dopo ogni tick viene attivato solo l'inizio, quindi se si apre la variabile globalmente, sembra salvare il valore.

Quindi deve essere così.

Così, il compilatore non accetta categoricamente la linea int KolBars=Bars; dice 'Bars' - inizializzazione attesa C:\Program Files (x86)\Alpari ÌÒ4\experts\Áëù.mq4 (8, 13)

Amazing!!!!! Normale dichiarazione di variabile, ma non importa.

Chiederò la cosa principale - come fare il debug di un EA nel fine settimana, se i tick non vanno?????


//| Бред.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
int KolBars=Bars;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
KolBars=Bars;

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{int r;
r=Bars- KolBars
//----
for( r>0 )
int k;

KolBars=Bars;

//----
return(0);
}
//+------------------------------------------------------------------+ 
A cosa serve il tester?
 

SULL'ALGORITMO GENETICO!!!

Nel mio caso, i pesi per la rete neurale sono selezionati. Se si esegue l'ottimizzazione senza algoritmo genetico, ci vorrà MOLTO tempo.

Non ci sono pseudo-casualità nel codice.

Anche se l'algoritmo genico prova molte varianti, agisce anche secondo un certo programma (in uno stesso intervallo e in una stessa condizione). Perché poi si ottengono risultati diversi non lo capisco.

A proposito, nessuno ha fatto la domanda per testare il lavoro dell'ALGORITMO GEN. Esattamente: eseguire due volte l'ottimizzazione e confrontare i risultati.... Prova.

 
Stepan241:

SULL'ALGORITMO GENETICO!!!

Nel mio caso, i pesi per la rete neurale sono selezionati. Se si esegue l'ottimizzazione senza algoritmo genetico, ci vorrà MOLTO tempo.

Non ci sono pseudo-casualità nel codice.

Anche se l'algoritmo genico prova molte varianti, agisce anche secondo un certo programma (in uno stesso intervallo e in una stessa condizione). Perché poi si ottengono risultati diversi non lo capisco.

A proposito, nessuno ha fatto la domanda per testare il lavoro dell'ALGORITMO GEN. Esattamente: esegui l'ottimizzazione due volte e confronta i risultati....A prova.


Aiuta te stesso.

https://www.mql5.com/ru/articles/1409https://www.mql5.com/ru/articles/1408 https://www.mql5.com/ru/articles/1511

 

Cari esperti! Per favore, ditemi la funzione che cambia il lotto e il numero di ordini a seconda del valore del saldo.

 
Stepan241:

SULL'ALGORITMO GENETICO!!!

A proposito, nessuno ha posto la domanda per PROVARE il lavoro dell'ALGORITMO DEL GENIO. Esattamente: esegui l'ottimizzazione due volte e confronta i risultati....A prova.

Hai lavorato con mql per molto tempo, da quanto ho capito, gen. alg. usa numeri pseudo casuali per tracciare i pacchetti di setup iniziali, e solo dopo inizia a considerare con definizioni date dove e cosa cercare.

https://www.mql5.com/ru/articles/1408

Lo schema di funzionamento dell'algoritmo genetico

1. Iniziare il momento iniziale t=0. Formare casualmente una popolazione iniziale, composta da k individui. B0 = {A1,A2,...,Ak)

2. ...

 
fanat:

Cari esperti! Per favore, ditemi la funzione che cambia il lotto e il numero di ordini a seconda del valore del saldo.


https://www.mql5.com/ru/code/8192

L'autore usa il lotto dinamico e il numero massimo di opzioni.

MaxOrders_Desc = "se 0 il numero di posizioni aperte simultaneamente non è limitato a 1-3";
MaxOrders = 1;

Lots_Desc = "Se 0 Applica lotto dinamico";

Lotti = 1;

 

Si prega di consigliare se è possibile aprire ordini di diverse coppie di valute in un ciclo mentre dopo aver controllato la condizione di entrata, un errore 4051 continua a spuntare

mentre(vero)

{
if (Total==0 && Opn_B==true && Total1==0 && Opn_S1==true) // nessun ordine aperto per la prima e la seconda coppia di valute più i criteri di apertura
{

RefreshRates(); // Aggiorna i dati
double bid = MarketInfo(Symb2,MODE_BID);
Alert("Trying to open Buy and Sell. Waiting for reply.");
Ticket=OrderSend(Symb1,OP_BUY,Lts,Ask,2,0,0); //open Buy
Ticket1=OrderSend(Symb2,OP_SELL,Lts,bid,2,0,0);
if (Ticket > 0 && Ticket1 > 0) // It worked :)
{
Alert ("Buy and Sell order opened ",Ticket,Ticket1);
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue; // Retry
return; // Exit start()
}

 
Dimka-novitsek:

Così, il compilatore non accetta categoricamente la linea int KolBars=Bars; dice 'Bars' - inizializzazione attesa C:\Program Files (x86)\Alpari ÌÒ4\experts\Áåë.mq4 (8, 13)

Chiederò la cosa principale - come fare il debug di un EA nel fine settimana, se i tick non vanno?????

1.
//| Бред.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
int KolBars;//=барс нельзя переменную присвоить вне функций




//| expert initialization function 
|

int init()
{
KolBars=Bars; //один раз при инициализ.

return(0);
}
...
2. Sul test di strategia ;).
 

Buon pomeriggio!!! LOL!!!!!! ''per'' - espressione troppo complessa C:\Program Files (x86)\Alpari MT4\experts\bred.mq4 (34, 1)

''for'' - espressione troppo complessa C:\Program Files (x86)\Alpari ??4\experts\???????.mq4 (34, 1)

È possibile eseguire il debug di un EA durante un fine settimana in modalità test nello stesso modo in cui si ricevono i tick sulla piattaforma, ottenendo risposte dalle funzioni Comment,Alert?

 
xxxslavaxxx:

Si prega di consigliare se è possibile aprire ordini di diverse coppie di valute in un ciclo mentre dopo aver controllato la condizione di entrata, un errore 4051 continua a spuntare

mentre(vero)

{
if (Total==0 && Opn_B==true && Total1==0 && Opn_S1==true) // nessun ordine aperto per la prima e la seconda coppia di valute + ci sono criteri aperti
{

RefreshRates(); // Aggiorna i dati
double bid = MarketInfo(Symb2,MODE_BID);
Alert("Cercando di aprire Buy and Sell. In attesa di risposta...");
Ticket=OrderSend(Symb1,OP_BUY,Lts,Ask,2,0,0);//aprire Buy
if(GetLastError()==4051)Alert("Symb1"+Symb1+" Lts "+Lts+" Ask "+Ask);
//if(Ticket>0)Sleep(50);altrimenti continuare;

Ticket1=OrderSend(Symb2,OP_SELL,Lts,bid,2,0,0);
if(GetLastError()==4051)Alert("Symb2"+Symb2+" Lts "+Lts+" bid "+bid);


if (Ticket > 0 && Ticket1 > 0) // Ha funzionato :)
{
Alert ("Aperto ordine di acquisto o vendita ",Ticket,Ticket1);
return; // uscire
}
if (Fun_Error(GetLastError())==1) // Gestione degli errori
continuare; // riprovare
return; // Esci da start()
}

Motivazione: