SOM : méthodes de cuisson - page 3

 

alexeymosc!

> J'ai fait une analyse de la paire GBPUSD sur les barres quotidiennes, de 1989 à 2011.

[...]

> Période d'inactivité (du début 2010 à aujourd'hui).


S'agit-il d'une faute de frappe ou est-ce la période OSS qui a été étirée par inadvertance sur la période d'analyse ?

 
Ha, bonne question.
 
C'est simple. Le réseau a été construit en utilisant des données de 1989 à fin 2009. Et j'ai vérifié la stratégie résultante depuis le début de 2010... Pourquoi tu t'énerves, je ne comprends pas. Répétez l'analyse vous-même et voyez par vous-même.
 
Ils feraient mieux de dire quelque chose de précis, ils ont demandé les données eux-mêmes et ne diront rien.
 
alexeymosc:
Vous feriez mieux d'aller droit au but, vous avez demandé les données et n'avez rien dit.


Bonjour Alexey !

Je pense que beaucoup de gens ici sont intéressés par vos résultats. Je vais essayer d'expliquer "de mon propre point de vue", alors s'il vous plaît, ne tapez pas trop des pieds et des cornes!

Si nous effectuons la transformation suivante : Cycle = Close[]-ma(Close[], 25), nous obtiendrons un signal stationnaire (moyenne = Const, sigma = Const). Et nous allons essayer de construire un système de trading sur ce cycle en utilisant SOM et le même modèle de longueur 40. Nous aurons un bon système, robuste... Et dans une série de prix normale, il existe des tendances stochastiques, qui sont déterminées par l'inflation, la déflation et d'autres facteurs fondamentaux externes. Et ces tendances stochastiques empêchent beaucoup de personnes d'obtenir des systèmes stables. La façon de les traiter en utilisant uniquement les séries de prix d'un instrument n'est pas claire pour moi. Et votre résultat sur une série de prix ordinaires est assez agréablement surprenant !

 

Merci ! Pour la conversion, je comprends. Dans mon cas, je voulais tirer un résultat du "juste prix". Franchement, j'ai été inspiré par certains camarades, qui négocient purement sur le prix et avec succès (il y avait de tels messages sur ce forum).

J'ai également été un peu surpris par le résultat, mais jusqu'à présent, je vois quelques points faibles de cette stratégie, à savoir le drawdown (même sur la période d'entraînement SOM) et la faible fréquence des transactions. Il s'agit d'environ 250 pips par mois. Si vous l'exécutez sur plusieurs instruments, vous obtenez, disons, 1000 pips par mois, mais 1) l'irrégularité et 2) les drawdowns continueront à augmenter.

En pensant de manière abstraite, je considère la tâche de faire du profit (même si c'est sur le papier) sur le marché des changes comme une tâche de dimension presque infinie. Et c'est pourquoi j'essaie de "fouiller" à différents endroits de cet espace, pour ainsi dire. Eh bien - parfois, des solutions locales, imparfaites, au problème se présentent.

 

alexeymosc, si ce n'est pas difficile, veuillez élaborer un peu plus, le sujet est assez intéressant pour moi. Pour commencer, donnez-moi un script avec lequel les données ont été préparées, ou la méthodologie de préparation des données, et dans l'ensemble, je voudrais avoir les résultats finaux en mql, pas en exel, s'il y a des problèmes avec la transition vers l'écriture mql, je pense que nous allons aider, et je vais apprendre la programmation NS - je ne le comprends pas moi-même, merci d'avance.

 

)) Tout est déjà dans excel ( j'ai posté 2 archives). Je suppose que je suis juste très amical avec lui, et je pense que c'est comme ça...

Mais, au fait !

Je n'ai pas le scénario. Mais il n'est pas difficile d'implémenter la formation des entrées dans MQL. Nous calculons le maximum et le minimum pour les 40 dernières barres par les prix d'ouverture, y compris la dernière barre complétée. Ensuite, nous convertissons les prix ouverts en utilisant la formule bien connue : (Open-Min) / (Max - Min), formant ainsi un vecteur de 40 valeurs avec des valeurs dans la plage [0;1].

Ensuite, je préférerais personnellement former SKP dans un neuropackage et faire un fichier dll qui communiquerait avec l'Expert Advisor. C'est juste pratique pour moi, et c'est aussi pratique de faire toutes les analyses dans le même Excel. Vous pourriez vous donner la peine de programmer la formation SOM en MQL, c'est aussi une option, mais je ne suis PAS un programmeur, je ne peux pas vous aider..... Je peux préparer un modèle de conseiller expert pour le testeur, ainsi qu'un fichier dll de la carte auto-organisée, et nous pouvons finaliser ensemble le code lui-même et certaines des nuances.

D'ailleurs, il n'est pas seulement possible de négocier sur le graphique quotidien. J'ai obtenu des profits sur les périodes d'OOS (même sur des périodes de 15 minutes), mais les drawdowns étaient importants...

 
alexeymosc:

Calculez à partir des prix d'ouverture le maximum et le minimum des 40 dernières barres, y compris la dernière barre complétée. Nous transformons ensuite les prix ouverts en utilisant la formule bien connue : (Open-Min) / (Max - Min), formant ainsi un vecteur de 40 valeurs avec des valeurs dans la gamme [0;1].

c'est probablement le script :

//+------------------------------------------------------------------+
//|                                                     SOM_data.mq4 |
//|                               https://www.mql5.com/ru/users/igorm |
//|                               https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "https://www.mql5.com/ru/users/igorm"
#property link      "https://www.mql5.com/ru/users/igorm"

extern int     NumBars = 40;
extern string  FileName = "som_data.csv";

int start(){
   int i,Max,Min,file_handle;
   double _open[];
   double out,max_min;
   ArrayResize(_open,NumBars);
   file_handle = FileOpen(FileName,FILE_CSV|FILE_WRITE);
   if(file_handle<1){
         Print("Файл ",FileName,"не открыт для записи, ошибка №", GetLastError());
         return(0);
    }
    for(i=1;i<=NumBars;i++) _open[i-1] = Open[i];
    Max = ArrayMaximum(_open);
    Min = ArrayMinimum(_open);
    max_min = _open[Max] - _open[Min];
    if (max_min ==0){
         Print("Деление на ноль, невозможно выполнить код");
         return(0);
    }
    for(i=1;i<=NumBars;i++){
        out = (Open[i]-_open[Min]) / max_min;
        FileWrite(file_handle,out);
    }
return(0);
}
//+------------------------------------------------------------------+

le code est un peu long, mais devrait être compréhensible sans commentaires

SZZ : Je suis bon avec Excel, mais très rarement - au niveau de la calculatrice ))))

 

Merci !

Le script fonctionne, les valeurs sont correctes.

Je pense maintenant au fichier SOM, je vais essayer de le joindre à l'EA.