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

 
Diger:

È successo a qualcuno?

Nessuna perdita nel log dello strategy tester e la curva del grafico va costantemente verso il basso.

Che cosa significherebbe?

La forza di gravità... :)) Non sei su Giove? :)) Scusa - stavo solo scherzando...
 
Diger: È successo a qualcuno? Nessuna perdita nel log dello strategy tester e la curva del grafico va costantemente verso il basso. Che cosa significherebbe?
Lo spread è in calo. Troppi scambi. Aprire il grafico del tester.
 
artmedia70:
Il potere della gravità... :)) Non sei su Giove? :)) Scusa - stavo solo scherzando...

Anch'io sono un po' strambo. Forse lo sono davvero. ....
 
Richie:
Sgocciolare sulla diffusione. Troppi scambi. Aprire il grafico del tester.


Avevi ragione!

Contro i soliti 2p abbiamo ora 26...

Grazie!

 
Diger:


Si è rivelato essere giusto!

Contro i soliti 2p abbiamo ora 26...

Grazie!

Aggiungere una condizione per lo spread massimo al di sopra del quale i trade non vengono aperti (ma quelli già aperti continuano ad essere controllati dall'EA).

 
chief2000:

Aggiungere una condizione per lo spread massimo al di sopra del quale i trade non vengono aperti (ma quelli già aperti continuano ad essere controllati dall'EA).


Non pensavo fosse necessario prima.

Ma il tester di oggi mi ha mostrato questa necessità.

 

A proposito, è anche interessante e poco chiaro per me. Ho aggiunto al mio Expert Advisor un lotto in perdita secondo un principio: trovare la perdita più grande e aprire una posizione opposta con il lotto di quella perdita moltiplicato per il coefficiente calcolato dallo stato attuale del mercato a tutti i TF e la posizione relativa alla perdita aperta e il prezzo attuale e il grafico del prezzo stesso (tipo - vale davvero la pena aprire un lotto, se il prezzo si è mosso nella giusta direzione...). Rispettivamente, quando il profitto totale di queste due posizioni è di circa 50-60 punti - le chiudiamo entrambe, quella redditizia all'inizio.

Così, ho notato quel sistema di trading redditizio, che dà profitti stabili per due anni nel tester, ma ha nel suo arsenale dei drawdown selvaggi, che non possono essere accettati, se uso i loop, fallisce entro due mesi... Quale potrebbe essere la ragione? Solo un'ipotesi veloce. Non ho salvato le statistiche di drenaggio perché "perché dovrei?".

 

Domanda:

Devo fare riferimento alla stessa sequenza di codici molte volte, su ogni tick in quasi tutte le strategie implementate nell'EA, per ottenere dati sullo stato attuale del mercato.

   CurAsk   =MarketInfo(Symbol(),MODE_ASK);
   CurBid   =MarketInfo(Symbol(),MODE_BID);
   OpnPrice =iOpen(NULL,PERIOD_M5,0);
   OpnPrice1=iOpen(NULL,PERIOD_M5,1);
   ClsPrice1=iClose(NULL,PERIOD_M5,1);
Posso indirizzarli solo una volta all'inizio della funzione di avvio, e poi indirizzare solo le variabili globali, che memorizzeranno i dati? È un po' una rottura di palle...
 
artmedia70:

Domanda:

Devo fare riferimento alla stessa sequenza di codici molte volte, su ogni tick in quasi tutte le strategie implementate nell'EA, per ottenere dati sullo stato attuale del mercato.

Posso indirizzarli solo una volta all'inizio della funzione di avvio, e poi indirizzare solo le variabili globali che memorizzeranno questi dati? Sto diventando un po' oleoso qui...


OpnPrice =iOpen(NULL,PERIOD_M5,0);

Ho capito che il calcolo viene fatto sulla barra zero, cioè ogni tick cambierà i dati

Se vuoi logicamente scrivere uno script e metterlo in loop e ti alimenterà con questo calcolo in variabili globali, ma in questo caso devi sincronizzare i nuovi dati ad ogni tick. Penso che sia meglio lasciarlo com'è, ma consegnarlo in una funzione separata e chiamare questa funzione solo nei casi necessari, cioè se il calcolo è importante per gli ordini di apertura, allora appena prima di aprirli e rispettivamente chiuderli

 
IgorM:


OpnPrice =iOpen(NULL,PERIOD_M5,0);

Qui capisco che il calcolo è fatto su una barra zero, cioè ogni tick cambierà i dati

logicamente - dovresti scrivere uno script e mandarlo in loop e invierà questo calcolo alle variabili globali, ma in questo caso dovrai sincronizzare i nuovi dati ad ogni tick. Penso che sia meglio lasciarlo così com'è, ma consegnarlo in una funzione separata e chiamare questa funzione solo quando necessario, cioè se il calcolo è importante per gli ordini di apertura, allora appena prima di aprire e rispettivamente prima di chiuderli

Igor, lo sto facendo finora, ma ho paura che rallenti il sistema già lento composto da tutte queste strategie mescolate insieme e collegate da condizioni, e a volte lavorando in coppia. Immaginate che ognuno di loro chiami lo stesso codice in una funzione separata.

Penso che non importa se alcuni dati sono presi dalla barra zero, dato che apro già a zero... Ricevo solo i dati della prima, seconda o terza barra...
OpnPrice =iOpen(NULL,PERIOD_M5,0); ottengo il prezzo aperto della barra attuale e non cambia - questo è un fatto compiuto . Quando si confronta il prezzo di chiusura precedente e il prezzo aperto della barra corrente, alcune funzioni danno o lasciare o rifiutare di aprire una posizione...

Quindi lasciamo che questi dati vengano letti tutti una volta con l' arrivo del tick, e poi verranno utilizzati dall'Expert Advisor. Saranno invariati e attuali fino al prossimo tick, quando l'Expert Advisor li aggiornerà per il prossimo ciclo di calcolo.

Qual è la probabilità che un nuovo tick arrivi prima della fine di tutti i calcoli attuali? Mi sembra che solo in questo caso i dati diventeranno vecchi e irrilevanti.