Expert Advisors: FAT PANEL - Seite 2

 
Vigor:
Ich werde ein Handbuch erstellen, aber ein kurzes. ...................

Und ein Handbuch für das Hinzufügen eigener Funktionen (Indikatoren, Log-Elemente, Zustände, etc.).

Ideale (aber nicht einfache) Variante: alle funktionalen Elemente "leicht anfügbar" zu machen, wie Plugins, so dass sie sich in der Codebasis wie Pilze vermehren und vermehren ... :)

--

Coole Sache, die du da gemacht hast, Igor. Danke dafür! Ich habe den ganzen Abend damit gespielt.

Ich bin noch nicht wirklich in den Code eingestiegen, aber ich habe vor, das dieses Wochenende zu tun. Ich bin sehr neugierig darauf, im Detail zu verstehen, wie einige Funktionen implementiert sind.

Bei einem kurzen Blick auf den Code ist der Eindruck sehr angenehm.

 

Blöcke sind auf elementare Weise geschrieben! Hätte MQL einen Mechanismus, der get_declared_classes, class_exists und is_subclass_of ähnelt, wäre die gesamte Installation neuer Funktionalität nur eine Enclode/Add-Datei einer neuen Klasse (ein Abkömmling einer der Basisklassen).

//+------------------------------------------------------------------+
class CAlgoBlockLogicOr: public CAlgoBlockLogic {
        public:
        //+------------------------------------------------------------------+ 
        void CAlgoBlockLogicOr() {              
                setLabel("name",12,20,1,"OR");//--uniq, x, y, Schriftgröße, Titel                
                //---Verbindungen
                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);
        }
        
        //+------------------------------------------------------------------+
};

Und wenn Sie den Code im visuellen Modus einfügen, würde sich der neue Block selbst hinzufügen. Das Neukompilieren von EA im laufenden Betrieb und das Aufnehmen neuer "generierter" Includes wurde bereits gelöst. So ist die Aktualisierung der Eingabeparameter von Blöcken für den Tester jetzt implementiert.

 
Hallo Autor, haben Sie die Möglichkeit, einen Screenshot der zusammengebauten Blöcke zu posten, oder eine gespeicherte Datei, die ein solches Bild auf den Test gab? Das wäre eine gute Anleitung.
 

In der Beschreibung für die Codebasis ist es das gleiche Schema mit 4 Blöcken. Nur der Wert 300 im Operationsblock ist ">". Die Schemadatei befindet sich im Archiv, entpacken Sie sie in den Ordner

C:\Dokumente und Einstellungen\Alle Benutzer\Anwendungsdaten\MetaQuotes\Terminal\Common\.

(der Pfad kann anders lauten, es ist besser, nach der Datei fatpanel.dat zu suchen und sie zu ersetzen)

Dateien:
FATPANEL.rar  1 kb
 

Während die neue Version vorbereitet wird, zeige ich einen Lauf der gleichen Strategie aus dem Jahr 2005. Testmodus "jeder Tick". Experimente mit Trailing-Stop:

Das Diagramm zeigt alle Parameter der Strategie und ihr Prinzip. Keine Reinvestitionen. Eine Version mit zusätzlichen Blöcken wird demnächst veröffentlicht.

Strategie-Tester-Bericht
MetaQuotes-Demo (Build 370)

Einstellungen
Expert Advisor: FatPanel
Symbol: EURUSD
Zeitraum: M1 (2005.01.01 - 2010.12.17)
Eingabe-Parameter:
Makler: MetaQuotes Software Corp.
Währung: USD
Erste Einzahlung: 10 000.00
Hebelwirkung: 1:100

Ergebnisse
Balken: 2095758 Tiki: 39061924
Reingewinn: 468 436.28 Gesamtgewinn: 1 377 840.48 Gesamtverlust: -909 404.20
Rentabilität: 1.52 Erwartung des Gewinns: 84.33
Erholungsfaktor: 16.62 Sharpe-Ratio: 0.05

Bilanzsummenrückgang:
Absolute Bilanzsummenausschöpfung: 4 393.10 Maximale Bilanzsummeninanspruchnahme: 5 593.40 (8.46%) Relative Bilanzsummeninanspruchnahme: 8.46% (5 593.40)
Inanspruchnahme der Mittel:
Absolute Inanspruchnahme der Mittel: 4 622.90 Maximale Inanspruchnahme der Mittel: 6 119.20 (9.21%) Relative Inanspruchnahme der Fonds: 9.21% (6 119.20)

Gesamte Abschlüsse: 5555 Leerverkäufe (% gewonnen): 3237 (56.32%) Long-Trades (% Won): 2318 (60.05%)
Gesamte Abschlüsse: 268659 Gewinnbringende Geschäfte (% von allen): 3215 (57.88%) Verlustgeschäfte (% von allen): 2340 (42.12%)

Größte profitable Trades: 8 040.10 Größter Verlusthandel: -7 181.70

Durchschnittlich profitabler Handel: 428.57 Durchschnittlich verlorener Handel: -388.63

Maximale Anzahl von kontinuierlichen Gewinnen (Gewinn): 75 (9 306.86) Maximale Anzahl von kontinuierlichen Verlusten (Verlust): 24 (-13 829.70)

Maximale Anzahl von kontinuierlichen Gewinnen (Anzahl der Gewinne): 12 396.20 (14) Maximaler kontinuierlicher Verlust (Anzahl der Verluste): -13 829.70 (24)

Durchschnittlicher kontinuierlicher Gewinn: 3 Durchschnittlicher kontinuierlicher Verlust: 2

 
Die Beschränkung der Anzahl von Geschäften wird tatsächlich sein, denn es öffnet Geschäfte auf jedem Tick mit der angegebenen Menge und was ist gut?
Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
Auf diese Weise wird das Volumen der Position gewonnen. Ständig aufgefüllte Portionen "nach Gefühl" finden schließlich ein lokales Extremum auf Bid. Und wenn Sie die Eröffnung von nicht mehr als 1 Position in einer Richtung begrenzen, dann werden günstigere Eröffnungsmomente verpasst und die Strategie scheitert. Es ist nicht schwer, diese Einschränkung hinzuzufügen: +3 Blöcke für jede Richtung. AND und IS_BUY(oder IS_SELL) + NOT
 
Vigor:
Auf diese Weise wird das Volumen der Position gewonnen. Ständig aufgefüllte Portionen "nach Gefühl" finden schließlich ein lokales Extremum auf Bid. Und wenn Sie die Eröffnung von nicht mehr als 1 Position in einer Richtung begrenzen, dann werden günstigere Eröffnungsmomente verpasst und die Strategie scheitert. Es ist nicht schwer, diese Einschränkung hinzuzufügen: +3 Blöcke für jede Richtung. AND und IS_BUY(oder IS_SELL) + NOT
Danke, ich verstehe, dass das endgültige Volumen unbekannt sein wird, es ist schlecht....
 

Die Version 0.2 will nicht funktionieren. Wie bringe ich sie zum Laufen?

 

Dieses Problem trat in einem der letzten Builds des Terminals auf.

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

Wenn das Terminal auf die neueste Version aktualisiert wurde (in der das Problem behoben ist), müssen Sie den Indikator (im Ordner mql5/indicators/fatpanel/ ) und den Expert Advisor (mql5/experts/fatpanel/) neu kompilieren.