Experts: PANNEAU GRAS - page 2

 
Vigor:
Je ferai un manuel, mais un manuel court. ...................

Et un manuel pour ajouter vos propres fonctionnalités (indicateurs, éléments de journal, états, etc.).

Variante idéale (mais pas facile) : rendre tous les éléments fonctionnels "facilement attachables", comme des plugins, de sorte qu'ils se multiplient et se multiplient dans la base de code comme des champignons ... :)

--

C'est génial ce que tu as fait, Igor. Merci à toi ! J'ai joué avec toute la soirée.

Je ne suis pas encore entré dans le code, mais j'ai l'intention de le faire ce week-end. Je suis très curieux de comprendre en détail comment certaines fonctionnalités sont mises en œuvre.

En jetant un coup d'œil rapide au code, l'impression est très agréable.

 

Les blocs sont écrits de manière élémentaire ! Si MQL disposait d'un mécanisme similaire à get_declared_classes, class_exists et is_subclass_of, l'installation complète d'une nouvelle fonctionnalité se résumerait à un fichier enclode/add d'une nouvelle classe (un descendant de l'une des classes de base).

//+------------------------------------------------------------------+
class CAlgoBlockLogicOr: public CAlgoBlockLogic {
        public:
        //+------------------------------------------------------------------+ 
        void CAlgoBlockLogicOr() {              
                setLabel("name",12,20,1,"OR");//--uniq, x, y, fontsize, title                
                //--connecteurs
                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);
        }
        
        //+------------------------------------------------------------------+
};

Et si vous insérez du code en mode visuel, le nouveau bloc s'ajoutera de lui-même. La recompilation d'EA à la volée et la récupération des nouveaux includes "générés" ont déjà été résolus. C'est ainsi que la mise à jour des paramètres d'entrée des blocs pour le testeur est maintenant implémentée.

 
Bonjour l'auteur, avez-vous la possibilité de poster une capture d'écran des blocs assemblés, ou un fichier sauvegardé qui donne une telle image sur le test ? Ce serait un bon manuel.
 

Dans la description de la base de code, il s'agit du même schéma de 4 blocs. Seule la valeur 300 dans le bloc opération est ">". Le fichier schématique se trouve dans l'archive, décompressez-le dans le dossier

C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\.

(le chemin peut être différent, il est préférable de rechercher le fichier fatpanel.dat et de le remplacer).

Dossiers :
FATPANEL.rar  1 kb
 

Pendant que la nouvelle version est en cours de préparation, je vais montrer une exécution de la même stratégie depuis 2005. Mode de test "every tick". Expériences avec le stop suiveur :

Le diagramme montre tous les paramètres de la stratégie et son principe. Pas de réinvestissement. Une version avec des blocs supplémentaires sera publiée prochainement.

Rapport de test de la stratégie
MetaQuotes-Demo (Build 370)

Paramètres
Expert Advisor : FatPanel
Symbole : EURUSD
Période : M1 (2005.01.01 - 2010.12.17)
Paramètres d'entrée :
Courtier : MetaQuotes Software Corp.
Devise : USD USD
Dépôt initial : 10 000.00
Effet de levier : 1:100

Résultats
Barres : 2095758 Tiki : 39061924
Bénéfice net : 468 436.28 Bénéfice total : 1 377 840.48 Perte totale : -909 404.20 -909 404.20
Rentabilité : 1.52 Espérance de gain : 84.33
Facteur de récupération : 16.62 Ratio de Sharpe : 0.05

Baisse du bilan :
Baisse absolue du bilan : 4 393.10 Diminution maximale du bilan : 5 593.40 (8.46%) Baisse du solde relatif : 8.46% (5 593.40)
Prélèvement sur les fonds :
Réduction absolue sur les fonds : 4 622.90 Réduction maximale sur les fonds : 6 119.20 (9.21%) Réduction relative sur les fonds : 9.21% (6 119.20)

Total des transactions : 5555 Transactions à découvert (% gagnés) : 3237 (56.32%) Transactions longues (% gagnés) : 2318 (60.05%)
Total des transactions : 268659 Transactions rentables (% de toutes) : 3215 (57.88%) Transactions perdantes (% de toutes) : 2340 (42.12%)

Plus gros trades rentables : 8 040.10 Plus grosse perte : -7 181.70

Moyenne des transactions rentables : 428.57 Moyenne des transactions perdantes : -388.63

Nombre maximum de gains continus (profit) : 75 (9 306.86) Nombre maximum de pertes continues (perte) : 24 (-13 829.70)

Nombre maximum de gains continus (nombre de victoires) : 12 396.20 (14) Nombre maximum de pertes continues (nombre de pertes) : -13 829.70 (24)

Gain continu moyen : 3 Perte moyenne continue : 2

 
La restriction sur le nombre de transactions sera réelle, parce qu'il ouvre des transactions à chaque tic-tac avec le lot spécifié et ce qui est bon ?
Документация по MQL5: Торговые функции / HistoryDealsTotal
Документация по MQL5: Торговые функции / HistoryDealsTotal
  • www.mql5.com
Торговые функции / HistoryDealsTotal - Документация по MQL5
 
De cette manière, le volume de la position est gagné. Des portions constamment remplies "au feeling" finissent par trouver un extremum local sur l'offre. Et si vous limitez l'ouverture d'une seule position dans une direction, vous manquerez des moments d'ouverture plus favorables et la stratégie échouera. Il n'est pas difficile d'ajouter cette restriction : +3 blocs pour chaque direction. AND et IS_BUY(ou IS_SELL) + NOT
 
Vigor:
De cette manière, le volume de la position est gagné. Des portions constamment remplies "au feeling" finissent par trouver un extremum local sur l'offre. Et si vous limitez l'ouverture d'une seule position dans une direction, vous manquerez des moments d'ouverture plus favorables et la stratégie échouera. Il n'est pas difficile d'ajouter cette restriction : +3 blocs pour chaque direction. AND et IS_BUY(ou IS_SELL) + NOT
Merci, je comprends que le volume final sera inconnu, c'est mauvais....
 

La version 0.2 ne veut pas fonctionner. Comment faire pour qu'elle fonctionne ?

 

Ce problème est apparu dans l'une des versions récentes du terminal.

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

Si le terminal est mis à jour vers la dernière version (où le problème est résolu), vous devez recompiler l'indicateur (dans le dossier mql5/indicators/fatpanel/ ) et l'Expert Advisor (mql5/experts/fatpanel/).