Sistemi Esperti: PANNELLO GRASSO - pagina 2

 
Vigor:
Farò un manuale, ma breve. ...................

E un manuale per aggiungere le proprie funzionalità (indicatori, elementi di log, stati, ecc.).

Variante ideale (ma non facile): rendere tutti gli elementi funzionali "facilmente collegabili", come i plugin, in modo che si moltiplichino e si moltiplichino nel codice base come funghi ... :)

--

Bella cosa che hai fatto, Igor. Grazie! Ci ho giocato tutta la sera.

Non sono ancora entrato nel codice, ma ho intenzione di farlo questo fine settimana. Sono molto curioso di capire in dettaglio come sono implementate alcune funzionalità.

Da una rapida occhiata al codice, l'impressione è molto piacevole.

 

I blocchi sono scritti in modo elementare! Se MQL avesse un meccanismo simile a get_declared_classes, class_exists e is_subclass_of, l'intera installazione di nuove funzionalità sarebbe solo un file di enclode/add di una nuova classe (un discendente di una delle classi base).

//+------------------------------------------------------------------+
class CAlgoBlockLogicOr: public CAlgoBlockLogic {
        public:
        //+------------------------------------------------------------------+ 
        void CAlgoBlockLogicOr() {              
                setLabel("name",12,20,1,"OR");//--uniq, x, y, fontsize, titolo                
                //--connettori
                CConnectPointer* pointer1 = new CConnectPointer();
                pointer1.connectType = ALGO_BOOL;
                pointer1.connectDirection = ALGO_DIRECTION_IN;
                pointer1.x = 0;
                pointer1.y = 0.11;
                connectPointers.Add(pointer1);
                
                CConnectPointer* pointer2 = new CConnectPointer();
                pointer2.connectType = ALGO_BOOL;
                pointer2.connectDirection = ALGO_DIRECTION_IN;
                pointer2.x = 0;
                pointer2.y = 0.89;
                connectPointers.Add(pointer2);
                
                CConnectPointer* pointer3 = new CConnectPointer();
                pointer3.connectType = ALGO_BOOL;
                pointer3.connectDirection = ALGO_DIRECTION_OUT;
                pointer3.x = 1;
                pointer3.y = 0.5;
                connectPointers.Add(pointer3);
        }
        
        bool operate(CAlgoBlockLogic* s1, CAlgoBlockLogic* s2) {
                bool S1 = s1.process();
                bool S2 = s2.process();
                if ( S2 || S1 ) {  
                        return (true);
                }
                return (false);
        }
        
        //+------------------------------------------------------------------+
};

E se si esegue l'inserimento del codice in modalità visuale, il nuovo blocco si aggiunge da solo. La ricompilazione di EA al volo e il prelievo di nuovi include "generati" sono già stati risolti. Questo è il modo in cui è implementato l'aggiornamento dei parametri di ingresso dei blocchi per il tester.

 
Ciao autore, hai la possibilità di postare uno screenshot dei blocchi assemblati, o un file salvato che ha dato tale immagine sul test? Sarebbe un buon manuale.
 

Nella descrizione della codebase è presente lo stesso schema di 4 blocchi. Solo il valore 300 nel blocco delle operazioni è ">". Il file schematico si trova nell'archivio, decomprimerlo nella cartella

C:´Documents and Settings'Tutti gli utenti´Dati applicazione´MetaQuotes'Terminal'Common´.

(il percorso potrebbe essere diverso, è meglio cercare il file fatpanel.dat e sostituirlo).

File:
FATPANEL.rar  1 kb
 

Mentre la nuova versione è in preparazione, mostrerò un'esecuzione della stessa strategia del 2005. Modalità di test "ogni tick". Esperimenti con il trailing stop:

Il diagramma mostra tutti i parametri della strategia e il suo principio. Nessun reinvestimento. Una versione con blocchi aggiuntivi sarà pubblicata a breve.

Rapporto del tester della strategia
MetaQuotes-Demo (Build 370)

Impostazioni
Consulente esperto: FatPanel
Simbolo: EURUSD
Periodo: M1 (2005.01.01 - 2010.12.17)
Parametri di ingresso:
Broker: MetaQuotes Software Corp.
Valuta: USD
Deposito iniziale: 10 000.00
Leva finanziaria: 1:100

Risultati
Barre: 2095758 Tiki: 39061924
Utile netto: 468 436.28 Profitto totale: 1 377 840.48 Perdita totale: -909 404.20
Redditività: 1.52 Aspettativa di vincita: 84.33
Fattore di recupero: 16.62 Rapporto di Sharpe: 0.05

Disavanzo di bilancio:
Disavanzo di bilancio assoluto: 4 393.10 Massimo drawdown del bilancio: 5 593.40 (8.46%) Estrazione relativa del saldo: 8.46% (5 593.40)
Prelievo sui fondi:
Prelievo assoluto sui fondi: 4 622.90 Prelievo massimo sui fondi: 6 119.20 (9.21%) Prelievo relativo sui fondi: 9.21% (6 119.20)

Totale scambi: 5555 Operazioni corte (% vinte): 3237 (56.32%) Operazioni lunghe (% vinte): 2318 (60.05%)
Totale scambi: 268659 Operazioni redditizie (% di tutte): 3215 (57.88%) Operazioni in perdita (% di tutte): 2340 (42.12%)

Le operazioni più redditizie: 8 040.10 Operazioni in perdita più consistenti: -7 181.70

Media delle operazioni redditizie: 428.57 Media degli scambi perdenti: -388.63

Numero massimo di vincite continue (profitto): 75 (9 306.86) Numero massimo di perdite continue (perdita): 24 (-13 829.70)

Massimo profitto continuo (numero di vittorie): 12 396.20 (14) Massima perdita continua (numero di perdite): -13 829.70 (24)

Guadagno medio continuo: 3 Perdita media continua: 2

 
La restrizione sul numero di operazioni sarà effettiva, perché apre operazioni su ogni tick con il lotto specificato e ciò che è buono?
Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
In questo modo si guadagna il volume della posizione. Le porzioni costantemente riempite "a sentimento" finiscono per trovare un estremo locale in offerta. E se si limita l'apertura di non più di 1 posizione in una direzione, si perdono momenti di apertura più favorevoli e la strategia fallisce. Non è difficile aggiungere questa restrizione: +3 blocchi per ogni direzione. AND e IS_BUY(o IS_SELL) + NOT
 
Vigor:
In questo modo si guadagna il volume della posizione. Le porzioni costantemente riempite "a sentimento" finiscono per trovare un estremo locale in offerta. E se si limita l'apertura di non più di 1 posizione in una direzione, si perdono momenti di apertura più favorevoli e la strategia fallisce. Non è difficile aggiungere questa restrizione: +3 blocchi per ogni direzione. AND e IS_BUY(o IS_SELL) + NOT
Grazie, mi sembra di capire che il volume finale sarà sconosciuto, è brutto....
 

La versione 0.2 non vuole funzionare. Come faccio a farla funzionare?

 

Questo problema si è verificato in una delle recenti versioni del terminale.

https://www.mql5.com/ru/forum/1111/page232

Se il terminale viene aggiornato all'ultima versione (dove il problema è stato risolto), è necessario ricompilare l'indicatore (nella cartella mql5/indicators/fatpanel/ ) e l'Expert Advisor (mql5/experts/fatpanel/).