Gogetter EA - page 9

 

J'espère que quelqu'un pourra trouver la réponse au mystère ici...

Ce post contient tout ce qui est nécessaire pour exécuter GGL3 si vous mettez ce code dans un fichier .mqh. J'ai zippé les rapports .htm parce qu'ils sont tous les deux supérieurs à 4mb à cause de tous les ordres modifiés...

il semble que ma nouvelle conception de la fonction de trailing stop ait amélioré les performances de 1,2 million à 1,3 million... OU cela résulte du fait que j'ai commencé avec un dépôt initial de 1000 au lieu de 500. Je ne sais pas lequel des deux car GGL3 ne démarre pas avec un dépôt initial de 500 et n'ouvre aucune transaction.

C'est triste à dire, mais malgré ce qui semble être un progrès dans ce domaine, il y a quelque chose qui n'a pas encore été révélé et qui l'empêche de gagner beaucoup d'argent de façon constante. Le plus souvent, il échoue et fait faillite. Si ce n'est pas le trailing stop qui le fait, alors ce doit être quelque chose d'autre... Je ne sais pas quoi...

Il semble qu'il y ait beaucoup de récompenses et de grosses sommes d'argent à la clé pour celui qui trouvera la cause d'une si grande variance dans les résultats des mêmes paramètres de la même ea sur la même période de temps et qui la corrigera. Je suis actuellement dans l'impasse.

Je prends une semaine de vacances... J'espère que quelqu'un aura posté une idée ou une solution à mon retour. J'espère que quelqu'un aura posté une idée ou une solution à mon retour. Je ne vois pas comment je peux vraiment passer à un développement plus poussé tant que le mystère n'est pas révélé.

//+------------------------------------------------------------------+

//| GGLrewrite.mqh |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

//+------------------------------------------------------------------+

#property copyright "Aaragorn and Eaglehawk & Maji & Robert C."

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

#property link "http://forex.factoid.ca/forums/showthread.php?t=104"

#property link "https://www.forex-tsd.com/expert-advisors-metatrader-4/2840-gogetter-ea.html"

// many thanks goes to all those on the tsdforex forum and factoid forum who have encouraged us this far

//+------------------------------------------------------------------+

//| defines |

//+------------------------------------------------------------------+

//+-----------Store HIGH, LOW matching data------+

#define SLSIZE 15

static int SLIndex = 0;

static double sLocatorLows[ SLSIZE ] = { 0 };

static double sLocatorHighs[ SLSIZE ] = { 0 };

//+-----------Stored equity data-----------------+

#define StoredEquitySIZE 5

static int EquityIndex = 0;

static double EQUITY[ StoredEquitySIZE ] = { 0 };

static int EquityValuesStored = 0;

//+-----------close based on time----------------+

extern string Time_Settings="Time In Trade Settings";

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 1; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 75; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

//+------------------------------------------------------------------+

//| Commonly used GoGetter Functions | |

//+------------------------------------------------------------------+

//+-------------StoreHighsAndLows Function----support and resistance arrays------thanks to Robert C for assistance on this-------+

//+-------creates array of each trade series support and resistance for signal profile matching-------------------+

void StoreHighsAndLows(double HIGH, double LOW)

{

if ( SLIndex >= SLSIZE )

{

SLIndex = 0;

}

sLocatorLows[ SLIndex ] = LOW;

sLocatorHighs[ SLIndex ] = HIGH;

SLIndex++;

}

//+-----------------------end of StoreHighsAndLows------------------------------------+

//+--------------- Get past equity function---------Thanks Robert C.-----------+

// This returns past equity from the global equity array. The howFarBack parameter is a positive integer that indicates how far back into the array to go

// 1 would be the previous equity, 2 would be the equity before that, etc.

// the HowFarBack should not be greater than the arraysize

double GetPastEquity(int HowFarBack)

{

if ( HowFarBack > EquityValuesStored )

{

Print("Error getting past equity, Looking back farther than what we have stored");

return (-1);

}

else

{

int PastIndex = EquityIndex - HowFarBack;

if ( PastIndex < 0 )

{

PastIndex += StoredEquitySIZE;

}

return (EQUITY[PastIndex]);

}

}

//+--end of get past equity function-----------+

//+---Stores account Equity value in an array for future comparisions up to as many previous trades as the declared size of the array----thanks Robert C.----+

void StoreAccountEquity(double equity)

{

if ( EquityIndex >= StoredEquitySIZE )

{

EquityIndex = 0;

}

EQUITY[EquityIndex] = equity;

EquityIndex++;

if ( EquityValuesStored < StoredEquitySIZE )

{

EquityValuesStored++;

}

}

//+-------end of Store Equity function-------------------+

//+---------count open trades function-------ty Maji--------------------------+

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()&&OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

//+-----------end of count trades-------------------------------------+

//+---------------------Close Based on Time function------------Thanks to 'Maji' for this-------------------+

void CloseOrder()

{

double Profit=ThresholdMove*Point;

int total = CountTrades();

for (int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if ((CurTime()-OrderOpenTime())>MonitorInMinutes*60*MinsMultiplier)

{

LowTrailingStopTrigger = False;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-Profit<OrderOpenPrice() )

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && Bid+Profit>OrderOpenPrice())

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

//+---------------------------end of close on time code---------------+

//+------------------------increase lots function-------------------------+

//+----------------increases lots based on account equity-----------------+

//double IncreaseLots()

//{

// Lots = NormalizeDouble(AccountFreeMargin()/(LotIncreaseFactor*1000/0.1),2);

// if(Lots > 99) Lots = 99;

// Print("account free margin = ",AccountFreeMargin()," Lots = ",Lots);

// return(Lots)

//}
Dossiers :
ggl3.zip  353 kb
ggl3fail.zip  335 kb
ggl3.gif  6 kb
ggl3fail.gif  8 kb
ggl3.mq4  21 kb
 

voici le fichier include zippé si c'est plus facile à gérer.

Dossiers :
 

les questions que je me pose maintenant sont : ....

Le flux de données est-il stable ? Je suppose qu'il l'est parce qu'il utilise les fichiers du centre d'historique.... peut-être faut-il remettre en question cette hypothèse ?

La façon dont la plate-forme traite le flux de données est-elle stable et peut-on compter sur elle pour traiter les mêmes données exactement de la même façon à chaque fois ? Si ce n'est pas le cas, qui a créé cette plateforme ? comment puis-je la contacter ? qu'est-ce qui doit être corrigé pour la rendre fiable ?

il semble peu probable que je puisse un jour stabiliser le code de l'EA si l'une ou l'autre de ces deux inconnues reste potentiellement variable et en fait non fiable. Comment vérifier leur fiabilité ?

J'ai posté une demande d'attention à cette question sur cette page...

http://www.metaquotes.net/index.php?bugtrack/

Espérons que quelqu'un aura une idée et répondra bientôt.

 
Aaragorn:
Les questions que je pose maintenant sont : ....

Le flux de données est-il stable ? Je suppose qu'il l'est parce qu'il utilise les fichiers du centre d'historique..... Peut-être cette hypothèse devrait-elle être remise en question ?

La façon dont la plateforme traite le flux de données est-elle stable et peut-on compter sur elle pour traiter les mêmes données exactement de la même façon à chaque fois ? Si ce n'est pas le cas, qui a créé cette plateforme ? comment puis-je la contacter ? qu'est-ce qui doit être corrigé pour la rendre fiable ?

il semble peu probable que je puisse un jour stabiliser le code de l'EA si l'une ou l'autre de ces deux inconnues reste potentiellement variable et en fait non fiable. Comment vérifier leur fiabilité ?

J'ai posté une demande d'attention à cette question sur cette page...

http://www.metaquotes.net/index.php?bugtrack/

Espérons que quelqu'un ait une idée et réponde rapidement.

.... avez-vous essayé de faire des tests sur plusieurs plateformes ? je teste actuellement le même EA sur deux plateformes BD différentes pour voir quels résultats je vais obtenir. je voulais m'assurer que les résultats auraient une quantité raisonnable de données fixes avant d'en prendre un en direct. c'est peut-être une idée stupide, mais je ne veux pas risquer un capital réel avant d'avoir une idée assez sûre que l'EA aura une performance constante.

 

Je ne l'ai testé que sur metatrader 4 en utilisant le 30tf pour le GPBUSD. Non pas parce que ce n'est pas une bonne idée de le faire, mais parce que je ne suis qu'un être humain et que je ne suis pas une femme, je ne suis pas non plus très polyvalente. Je n'ai donc pas encore pris le temps de le faire. Je n'ai pas encore effectué d'autres tests. Je suis resté concentré sur les problèmes de développement. Mon objectif était de le rendre stable dans ce cas précis avant d'essayer de l'étendre à d'autres paires ou à d'autres plates-formes.

N'hésitez pas à faire preuve de bon sens. Je vais permettre à ce système de fonctionner sur mon compte de démonstration pendant mon absence la semaine prochaine. Comme nous partons demain et serons absents pour la semaine, je ne serai pas de retour sur le fil de discussion avant mardi prochain.

Je ne pense pas qu'il soit encore prêt à risquer de l'argent réel, je veux juste voir les instabilités résolues et ensuite tester en démo. Ensuite, je verrai où les données me disent d'aller avec elle à partir de là. J'aimerais vraiment inviter les développeurs à l'examiner pendant mon absence et voir si les irrégularités du traitement des données ou des fichiers de données peuvent être vérifiées.

Je ne vois rien de manifestement erroné dans le code qui pourrait expliquer l'écart. Je me suis déjà trompé auparavant, je pourrais aussi me tromper sur ce point. Je suis d'accord pour me tromper si quelqu'un peut me montrer comment ou où le corriger.

Je ne vous mentirai pas, je serai heureux de m'éloigner de tout cela pendant un certain temps. Il a consommé trop de mon attention et je mérite de chercher un certain équilibre dans la vie pendant que je travaille sur ce sujet.

Je vais vous laisser les mains libres pour un moment et voir ce que vous pouvez en faire. Je vous demande simplement, si vous faites des recherches sur le sujet, de faire un rapport sur ce fil de discussion avec vos résultats afin que tout le monde puisse en bénéficier.

 

...........

pourriez-vous mettre les postions courtes et longues dans un seul fichier mp4 ?

 

Pourquoi un rapport si différent avec les mêmes paramètres ?

J'utilise l'EA ci-joint avec le fichier include.mqh ci-joint. J'exécute un test de stratégie en utilisant les paramètres suivants....

Bouton Propriétés de l'expert....

Onglet Testng...

Dépôt initial de 1000 USD..

Positions : Long et Short

Paramètres optimisés : Balance

La case Algorithme génétique n'est pas cochée

Onglet Entrées...

Toutes les entrées de l'utilisateur sont utilisées exactement comme elles sont sauvegardées dans l'EA, sans aucune modification manuelle de cet onglet.

Onglet Optimisation...

Rien n'est coché dans cet onglet

Paramètres.....

Conseiller expert : GGL3, Aaragorn et Eaglehawk & Maji & Robert C.

Symbole : GBPUSD, Livre sterling contre Dollar US

Période : M30

Modèle : Chaque tick (basé sur toutes les échéances inférieures disponibles avec interpolation fractale de chaque tick)

J'utilise le fichier de données d'une minute également joint.

La case Utiliser la date est cochée ; De : 2005.09.09 à : Aujourd'hui (2006.08.22)

Je coche la case pour Recalculer

Je ne coche pas la case Optimisation

J'obtiens ce rapport lorsque le test est terminé...

**************************************************

Barres dans le test 17735

Ticks modélisés 702859

Qualité de la modélisation 89.82

Dépôt initial 1000.00

Bénéfice net total 1375788.66

Bénéfice brut 3678568.71

Perte brute -2302780.05

Facteur de profit 1,60

Gain attendu 472.62

Pertes absolues 240.00

Pertes maximales 231662.10 (15.07%)

Pertes relatives 55.32% (18074.74)

Total des transactions 2911

Positions courtes (% won) 0 (0.00%)

Positions longues (% gagnées) 2911 (42.05%)

Transactions gagnantes (% du total) 1224 (42.05%)

Transactions perdantes (% du total) 1687 (57.95%)

Le plus grand

transaction à profit 89100.00

transaction perdante -15840.00

Moyenne

transaction bénéficiaire 3005.37

perte de transaction -1365.01

Maximum

gains consécutifs (profit en argent) 9 (106921.10)

pertes consécutives (perte en argent) 18 (-163.10)

Maximal

gains consécutifs (nombre de gains) 225720.50 (7)

Perte consécutive (nombre de pertes) -15845.70 (5)

Moyenne

gains consécutifs 2

pertes consécutives 2

****************************************************

Maintenant, je pense que c'est un très bon EA et je veux le tester à nouveau pour m'assurer qu'il fait la même chose.....

Je n'apporte aucune modification aux paramètres d'aucune sorte....

Je sélectionne la case Recalculer dans l'onglet Paramètres et clique sur Démarrer.... J'obtiens ce rapport maintenant...

******************************************************

Barres dans le test 18015

Ticks modélisés 739231

Qualité de la modélisation 89,83%.

Dépôt initial 1000.00

Bénéfice net total -731.75

Bénéfice brut 31897.83

Perte brute -32629.58

Facteur de profit 0.98

Gain attendu -0.24

Pertes absolues 780.40

Pertes maximales 4912.15 (94.91%)

Abattement relatif 94.91% (4912.15)

Total des transactions 2990

Positions courtes (% won) 0 (0.00%)

Positions longues (% gagnées) 2990 (34.88%)

Transactions gagnantes (% du total) 1043 (34.88%)

Transactions perdantes (% du total) 1947 (65.12%)

Le plus grand

transaction à profit 1170.00

transaction perdante -360.00

Moyenne

transaction à profit 30.58

perte de transaction -16.76

Maximum

gains consécutifs (profit en argent) 8 (124.50)

pertes consécutives (perte en argent) 20 (-45.50)

Maximal

gains consécutifs (nombre de gains) 2606.30 (7)

Perte consécutive (nombre de pertes) -360.00 (1)

Moyenne

gains consécutifs 2

pertes consécutives 3

******************************************************

pourquoi les deux tests sont-ils si différents ?

qu'est-ce que le testeur fait de différent lorsqu'il teste l'EA pour la deuxième fois ?

comment faire pour que le test soit le même à chaque fois que je recalcule ?

Merci de votre aide pour obtenir le même rapport à chaque fois que je teste cet EA.

Aaragorn

***********************include .mqh file below *******************************

//+------------------------------------------------------------------+

//| GoGetterfunctions.mqh |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

//+------------------------------------------------------------------+

#property copyright "Aaragorn and Eaglehawk & Maji & Robert C."

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

#property link "http://forex.factoid.ca/forums/showthread.php?t=104"

#property link "https://www.forex-tsd.com/expert-advisors-metatrader-4/2840-gogetter-ea.html"

// many thanks goes to all those on the tsdforex forum and factoid forum who have encouraged us this far

//+------------------------------------------------------------------+

//| defines |

//+------------------------------------------------------------------+

//+-----------Store HIGH, LOW matching data------+

#define SLSIZE 15

static int SLIndex = 0;

static double sLocatorLows[ SLSIZE ] = { 0 };

static double sLocatorHighs[ SLSIZE ] = { 0 };

//+-----------Stored equity data-----------------+

#define StoredEquitySIZE 5

static int EquityIndex = 0;

static double EQUITY[ StoredEquitySIZE ] = { 0 };

static int EquityValuesStored = 0;

//+-----------close based on time----------------+

extern string Time_Settings="Time In Trade Settings";

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 1; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 75; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

//+------------------------------------------------------------------+

//| Commonly used GoGetter Functions | |

//+------------------------------------------------------------------+

//+-------------StoreHighsAndLows Function----support and resistance arrays------thanks to Robert C for assistance on this-------+

//+-------creates array of each trade series support and resistance for signal profile matching-------------------+

void StoreHighsAndLows(double HIGH, double LOW)

{

if ( SLIndex >= SLSIZE )

{

SLIndex = 0;

}

sLocatorLows[ SLIndex ] = LOW;

sLocatorHighs[ SLIndex ] = HIGH;

SLIndex++;

}

//+-----------------------end of StoreHighsAndLows------------------------------------+

//+--------------- Get past equity function---------Thanks Robert C.-----------+

// This returns past equity from the global equity array. The howFarBack parameter is a positive integer that indicates how far back into the array to go

// 1 would be the previous equity, 2 would be the equity before that, etc.

// the HowFarBack should not be greater than the arraysize

double GetPastEquity(int HowFarBack)

{

if ( HowFarBack > EquityValuesStored )

{

Print("Error getting past equity, Looking back farther than what we have stored");

return (-1);

}

else

{

int PastIndex = EquityIndex - HowFarBack;

if ( PastIndex < 0 )

{

PastIndex += StoredEquitySIZE;

}

return (EQUITY[PastIndex]);

}

}

//+--end of get past equity function-----------+

//+---Stores account Equity value in an array for future comparisions up to as many previous trades as the declared size of the array----thanks Robert C.----+

void StoreAccountEquity(double equity)

{

if ( EquityIndex >= StoredEquitySIZE )

{

EquityIndex = 0;

}

EQUITY[EquityIndex] = equity;

EquityIndex++;

if ( EquityValuesStored < StoredEquitySIZE )

{

EquityValuesStored++;

}

}

//+-------end of Store Equity function-------------------+

//+---------count open trades function-------ty Maji--------------------------+

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()&&OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

//+-----------end of count trades-------------------------------------+

//+---------------------Close Based on Time function------------Thanks to 'Maji' for this-------------------+

void CloseOrder()

{

double Profit=ThresholdMove*Point;

int total = CountTrades();

for (int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if ((CurTime()-OrderOpenTime())>MonitorInMinutes*60*MinsMultiplier)

{

LowTrailingStopTrigger = False;

if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-Profit<OrderOpenPrice() )

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

}

if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && Bid+Profit>OrderOpenPrice())

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

}

}

}

}

//+---------------------------end of close on time code---------------+

//+------------------------increase lots function-------------------------+

//+----------------increases lots based on account equity-----------------+

//double IncreaseLots()

//{

// Lots = NormalizeDouble(AccountFreeMargin()/(LotIncreaseFactor*1000/0.1),2);

// if(Lots > 99) Lots = 99;

// Print("account free margin = ",AccountFreeMargin()," Lots = ",Lots);

// return(Lots)

//}

***************************end of include .mqh file******************************
Dossiers :
ggl3.mq4  21 kb
 

. j'aimerais vous aider à tester cela, mais pour une raison quelconque, je ne peux pas l'attacher à un graphique ... je ne comprends pas pourquoi ...

 
furious_angel:
J'aimerais vous aider à le tester, mais pour une raison quelconque, je ne peux pas l'attacher à un graphique. Je ne comprends pas pourquoi.

Essayez de le compiler. Vous devez également avoir le fichier mqh dans le dossier experts pour qu'il fonctionne.

 
forextrades:
Essayez de le compiler. Vous devez également avoir le fichier mqh dans le dossier "experts" pour que cela fonctionne.

En fait, le fichier mqh doit être placé dans le dossier "include", qui est un sous-dossier du dossier "experts". En tout cas, c'est comme ça que ça fonctionne pour moi.

Je n'ai pas de problèmes pour le joindre> J'ai juste des problèmes pour que le testeur de stratégie soit cohérent avec lui.

Raison: