75 000 options - 4 Go de RAM et 4 Go de cache disque ne suffisent pas ??? - page 5

 
Nous n'avons pas de visualisation, nous n'en avons pas encore eu besoin.
Mais nous le ferons probablement dans la prochaine version.

Je vais vous montrer ce que je peux.
Il est impossible de transférer le conseiller expert à 100%,
Je vais faire une approximation, il ne s'agit pas du conseiller expert, n'est-ce pas ?
Il s'agit des capacités de l'optimiseur, n'est-ce pas ?
 
Mak:
Nous n'avons pas de visualisation, nous n'en avons pas encore eu besoin.
Mais nous le ferons probablement dans la prochaine version.

Je vais vous montrer ce que je peux.
Il est impossible de transférer le conseiller expert à 100%,
Je vais faire une approximation, il ne s'agit pas du conseiller expert, n'est-ce pas ?
Il s'agit des capacités de l'optimiseur, n'est-ce pas ?
Pas du tout. Tout le complexe de la cartographie et de la convivialité en est l'essence, ce qui implique une grande dépense de ressources.

C'est une chose d'obliger les programmeurs à labourer tout leur code pour intégrer la communication avec un optimiseur externe, puis d'exécuter l'optimiseur qui y calcule quelque chose. Et tout cela a un coût. Et c'est une autre affaire que de cocher la case "Optimisation génétique" de n'importe quel expert, de sélectionner une plage normale (pas des dizaines de milliards), d'obtenir les résultats et de regarder immédiatement les résultats pendant que l'optimiseur travaille, sans aucun programme supplémentaire. Et c'est gratuit.

Nous faisons en sorte que nos systèmes soient aussi simples, pratiques et intégraux que possible. Quelqu'un prétend que "mon testeur est 10 à 100 fois plus rapide", mais ne le prouve pas. Quelqu'un parle de tâches fictives avec "un cheval dans un vide sphérique". Alors que nous fabriquons des systèmes qui fonctionnent massivement pour des centaines de milliers de traders utilisant MetaTrader. Et nous avons une longueur d'avance sur tous nos concurrents, notamment grâce à notre idéologie des systèmes de construction.

ps : A propos, pourquoi le paquet de distribution de votre optimiseur génétique est plus grand que celui de MetaTrader ? N'est-il pas économique de l'écrire ?
 
Eh bien, voici une course.

Je n'ai pas de devises dans Omega, j'ai fonctionné sur ce qui est dans la distribution
- IBM (D1) pendant 31 ans (> 11 mille barres).

1000 exécutions ont pris ~10 min sur Athlon XP 1500+

J'ai élargi les plages de paramètres, car la volatilité est plus élevée sur les actions

TakeProfit = (10, 10000, 1)
TralingStop = (10, 10000, 1)
Lots = (1, 1000, 1) - mon nombre d'actions est
MACDOpenLevel = (1, 100, 1)
MACDCloseLevel = (1, 100, 1)
MATrendPeriod = (2, 100, 1)

L'espace total des paramètres est ~ 10^14 états.

Vous trouverez ci-dessous le code en EasyLanguage et ScreenShot.
J'ai également joint le code de signal et les rapports d'Omega dans le fichier Zip.

(le collage du code n'a pas fonctionné)
========================================================================
Inputs : Gen(1) ;
Vars : TakeProfit(50),
TralingStop(30),
Lots(0.1),
MACDOpenLevel(3),
MACDCloseLevel(2),
MATrendPeriod(26) ;

Vars : R(0),K(0) ;
If CurrentBar = 1 Then Begin
R = TS.GO.Start("MACD") ;
If Gen = 1 Then Begin
R = TS.GO.Mode(0) ;
R = TS.GO.Popul(100) ;
R = TS.GO.Var("Gen") ;
R = TS.GO.Var("Trades") ;

R = TS.GO.Method(1) ;
R = TS.GO.Criterion("NetProfit",1) ;
R = TS.GO.Criterion("MaxDD",1) ;
R = TS.GO.Criterion("PF",1) ;

K = TS.GO.Chrom("Stops") ;
R = TS.GO.Gen("TakeProfit", K, 10, 10000, 1) ;
R = TS.GO.Gen("TralingStop", K, 10, 10000, 1) ;

K = TS.GO.Chrom("Lots") ;
R = TS.GO.Gen("Lots", K, 1, 1000, 1) ;

K = TS.GO.Chrom("MACD") ;
R = TS.GO.Gen("MACDOpenLevel", K, 1, 100, 1) ;
R = TS.GO.Gen("MACDCloseLevel", K, 1, 100, 1) ;
R = TS.GO.Gen("MATrendPeriod", K, 2, 100, 1) ;
End ;

R = TS.GO.Next(Gen) ;
R = TS.GO.Set("Gen",Gen) ;
R = TS.GO.ShowViewer ;

TakeProfit = TS.GO.Get("TakeProfit", 0) ;
TralingStop = TS.GO.Get("TralingStop", 0) ;
Lots = TS.GO. Get("Lots", 0) ;
MACDOpenLevel = TS.GO.Get("MACDOpenLevel",0) ;
MACDCloseLevel = TS.GO.Get("MACDCloseLevel",0) ;
MATrendPeriod = TS.GO.Get("MATrendPeriod",0) ;
End ;

Vars : MacdCurrent(0), MacdPrevious(0), SignalCurrent(0),
SignalPrevious(0), MaCurrent(0), MaPrevious(0) ;

MacdCurrent = MACD(Close,12,26) ;
MacdPrevious = MACD(Close,12,26)[1] ;
SignalCurrent = XAverage(MacdCurrent,9) ;
SignalPrevious = XAverage(MacdCurrent,9)[1] ;
MaCurrent = XAverage(Close,MATrendPeriod) ;
MaPrevious = XAverage(Close,MATrendPeriod)[1] ;

Vars : StopLoss(0) ;
If MarketPosition = 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent > MaPrevious
Then Begin
Buy Lots shares this bar on close ;
end ;

If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDOpenLevel Point)
and MaCurrent < MaPrevious
Then Begin
Sell Lots shares this bar on close ;
end ;
end ;

If MarketPosition > 0 Then Begin
If MacdCurrent > 0
and MacdCurrent < SignalCurrent
and MacdPrevious > SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitLong ("CloseLong") this bar on close ;
end ;

Si StopLoss = 0 Then StopLoss = EntryPrice - TralingStop Points ;
StopLoss = MaxList(StopLoss,High - TralingStop Points) ;

ExitLong ("TakeLong") Next Bar at EntryPrice + TakeProfit Points Limit ;
ExitLong ("StopLong") Next Bar at StopLoss Stop ;
end ;

If MarketPosition < 0 Then Begin
If MacdCurrent < 0
and MacdCurrent > SignalCurrent
and MacdPrevious < SignalPrevious
and AbsValue(MacdCurrent) > (MACDCloseLevel Point)
Then Begin
ExitShort ("CloseShort") this bar on close ;
end ;

If StopLoss = 0 Then StopLoss = EntryPrice + TralingStop Points ;
StopLoss = MinList(StopLoss,Low + TralingStop Points) ;

ExitLong ("TakeShort") Next Bar at EntryPrice - TakeProfit Points Limit ;
ExitLong ("StopShort") Next Bar at StopLoss Stop ;
end ;


IF LastBarOnChart Then Begin
R = TS.GO.Set("Trades",TotalTrades) ;
R = TS.GO.Set("NetProfit",NetProfit) ;
R = TS.GO.Set("MaxDD",MaxIDDrawDown) ;
R = TS.GO.Set("PF",GrossProfit/(0.001-GrossLoss)) ;
R = TS.GO.Fitness(0) ;
End ;
========================================================================


Dossiers :
macd_test.zip  32 kb
 
Renat:
Mak:
Nous n'avons pas de visualisation, nous n'en avons pas encore eu besoin.
Mais nous le ferons probablement dans la prochaine version.

Je vais vous montrer ce que je peux.
Il est impossible de transférer le conseiller expert à 100%,
Je vais faire quelque chose d'approximatif, il ne s'agit pas du Conseiller Expert, il s'agit des capacités de l'optimiseur ?
Il s'agit des capacités de l'optimiseur, n'est-ce pas ?
Absolument pas. L'enjeu réside dans tout le complexe de la cartographie et de la convivialité, qui implique une grande dépense de ressources.

C'est une chose d'obliger les programmeurs à labourer tout leur code pour intégrer la communication avec un optimiseur externe, puis d'exécuter l'optimiseur qui y calcule quelque chose. Et tout cela a un coût. Et c'est une autre affaire que de cocher la case "Optimisation génétique" de n'importe quel expert, de sélectionner une plage normale (pas des dizaines de milliards), d'obtenir les résultats et de regarder immédiatement les résultats pendant que l'optimiseur travaille, sans aucun programme supplémentaire. Et c'est gratuit.

Nous faisons en sorte que nos systèmes soient aussi simples, pratiques et intégraux que possible. Quelqu'un prétend que "mon testeur est 10 à 100 fois plus rapide", mais ne le prouve pas. Quelqu'un parle de tâches fictives avec "un cheval dans un vide sphérique". Alors que nous fabriquons des systèmes qui fonctionnent massivement pour des centaines de milliers de traders utilisant MetaTrader. Et nous avons une longueur d'avance sur tous nos concurrents, notamment grâce à notre idéologie des systèmes de construction.

ps : A propos, pourquoi le paquet de distribution de votre optimiseur génétique est plus grand que celui de MetaTrader ? N'est-il pas économique de l'écrire ?

Renat, vous avez vous-même exigé que je vous montre ceci.
Je t'ai demandé à plusieurs reprises ce que CECI représente ....
Si tu avais écrit un post précédent quand je t'ai posé la question,
la conversation se serait déroulée différemment, et je n'aurais pas eu besoin de réécrire ce MACD pour Omega.
J'ai dû mettre de côté d'autres choses pour m'occuper de prouver que "je ne suis pas un chameau".

En résumé.
Tu dis que tu as fait une bonne chose et gratuitement...
Est-ce que je me suis disputé avec vous à ce sujet (je ne me suis pas disputé avec vous sur quoi que ce soit) ?

J'ai juste fait remarquer que votre optimiseur consomme trop de mémoire.
Je pense que c'est un héritage d'une ancienne version de votre optimiseur, lorsque vous n'aviez pas encore CS.
Ce problème est facile à résoudre et rendra votre optimiseur encore meilleur.

Remarque, aucune critique de ma part.
Je voulais juste t'aider.
 
C'est tout à fait différent lorsque vous défendez votre position avec des détails. Vraiment, pourquoi n'y a-t-il que 1 000 dépassements dans un espace aussi vaste ? C'est une façon très grossière de voir les choses. J'ai exécuté cet EA dans MT4 sur 1,5 B de valeurs et il a donné lieu à 4400 rebonds nets en 4 minutes sur 18000 barres de l'historique EURUSD H1.

Cette tâche est bien sûr du domaine du cheval sphérique dans le vide et nous, dans MT4, essayons en fait à tort de réserver une certaine quantité de mémoire en raison de l'énorme zone de valeurs possibles (l'héritage des mécanismes de force brute). Ce point sera corrigé.

Merci pour votre persistance - vous nous avez obligés à creuser plus profondément dans le testeur.
 
Renat писал (а):

.... Mais pourquoi n'y a-t-il que 1000 rebonds dans un si grand espace ? C'est très grossier. J'ai utilisé ce conseiller expert dans MT4 sur une zone de 1,5 milliard de valeurs et j'ai obtenu 4400 dépassements nets en 4 minutes sur 18000 barres EURUSD H1 de l'historique. ....
La vitesse de recherche en génétique est indépendante de la taille de l'espace des paramètres.
Elle dépend de la qualité de la fonction cible (fitness).

En outre, nous utilisons l'algorithme original qui est un ordre de grandeur plus rapide que les autres algorithmes connus.
1000 exécutions, c'est un peu beaucoup, j'utilise généralement 100-200 exécutions (pour n'importe quel nombre de paramètres) pour évaluer une solution.
 
Renat писал (а):
Oui, en fait cet EA dans le test consomme trop de mémoire et tombe en panne. Nous allons nous en occuper.
Merci pour le code fourni.


Renat, pas encore de nouvelles ?
 

sain d'esprit, il y a des nouvelles. Ils ont trouvé une fuite de mémoire. Le compilateur n'a pas inséré la commande de libération de ligne au bon endroit.

 
stringo писал (а):

sain d'esprit, il y a des nouvelles. Ils ont trouvé une fuite de mémoire. Le compilateur n'a pas inséré la commande de libération de ligne au bon endroit.


ok, nous attendons la nouvelle construction.
 
sane:
stringo:

sain d'esprit, il y a des nouvelles. Ils ont trouvé une fuite de mémoire. Le compilateur n'a pas inséré la commande de libération de ligne au bon endroit.


Ok, j'attends la nouvelle version.

J'ai exécuté votre exemple avec la nouvelle version de 198 EA :







Plus de consommation excessive de mémoire, avec l'optimisation génétique activée, il y a eu 1088 recherches sur 21600 et le calcul a pris 8 minutes et 31 secondes.

En ce qui concerne le conseiller expert lui-même, il ne doit en aucun cas être utilisé en raison de graves erreurs :
  • Des niveaux d'arrêt incorrects et tous les journaux sont inondés de messages à ce sujet.
  • pour la fonction SetOrder, vous pouvez obtenir de votre courtier une interdiction sévère de négocier avec des conseillers experts.

    Cette fonction essaie de négocier à des prix périmés cinq fois, l'auteur du conseiller expert ne comprend pas ce qu'il fait (il essaie d'utiliser RefreshRates, mais donne toujours un prix périmé). Et il n'y a pas du tout de gestion d'erreur significative.
Raison: