Gogetter EA - page 2

 
Maji:
Honnêtement, je ne suis pas sûr de pouvoir vous aider. Tout d'abord parce que je dois passer du temps pour le faire, et c'est actuellement une contrainte pour moi. Ensuite parce que jusqu'à présent, j'ai laissé les "indicateurs" faire tous les dessins et je n'ai jamais utilisé d'EA pour le faire. C'est possible et je pense que la théorie est la même.

Je crois que Codersguru a écrit un chapitre sur le dessin de lignes, de flèches, etc. Essayez de le lire

Encore une fois, le copier-coller nécessite quand même de comprendre ce que l'on fait. Rien de tel que l'auto-assistance et vous le prouvez très bien. Continuez à travailler dur.

ok, vous m'avez eu, je vais accepter un peu de crédit pour le travail acharné. TGIF !! J'ai été un homme obcessé avec ça. Je mérite une pause.

Le truc avec le dessin en utilisant des indicateurs... Je ne me soucie pas vraiment de comment c'est accompli (jusqu'à un certain point) juste que c'EST accompli... Si un indicateur peut être fait qui met des flèches sur le graphique pour les ouvertures et les fermetures, je suppose que cela fonctionnerait aussi... Je trouve que mon compte live dessine tout dans le testeur tout seul sans que je lui dise de faire quoi que ce soit... mon compte de démonstration d'autre part... a des problèmes...

Je suis plus préoccupé par le timing des transactions multiples... est-ce que cela s'améliore si j'utilise le 'tick mode' ? Je l'ai regardé en test avancé et il fait un trade par barre, ce qui peut mettre des trades assez éloignés les uns des autres en termes de pip après le signal. Si je dois ouvrir 5 positions sur un signal, je veux que ce soit SUR le signal et non pas étalé sur une demi-heure après le signal...(rolleyes).

 

Build 1.01 -longs

Il s'agit d'un signal que j'ai un peu retravaillé et qui fonctionne. Il y a maintenant quelques différences avec le gogetshorts avec les moyennes mobiles utilisées et une partie de la logique du signal... J'ai tiré le signal du gogetter original qui fonctionnait sur les longs et j'ai joué avec lui un peu plus.

Il préfère le GPB/USD 5mTF. Il se plante sur les autres cadres temporels.

Profitez-en, postez vos résultats/problèmes, etc.

Dossiers :
 
eric79:
Bonjour Félicitations pour cette belle courbe. Je pense qu'une chose qui pourrait être améliorée est la qualité de modélisation du test. 90% serait mieux.

J'en suis très proche sur le GGs 2.11.

Je n'ai pas l'habitude d'utiliser les numéros de version et de build... étant donné qu'il s'agit de ma première aventure... Cela a été ajouté par Graham du forum factoid... c'est une chose de plus à garder à l'œil... .... Ils devraient avoir les numéros de build et de version actuels dans la fenêtre graphique maintenant... Même logique et même code, juste une meilleure apparence.

Je les laisse tous les deux fonctionner en test avant dans la démo pendant que nous travaillons sur les améliorations.

Dossiers :
 

J'aimerais encore développer des signaux d'entrée et des paramètres supplémentaires au sein de ces...

 

Je trouve cela vraiment bizarre quand quelque chose fonctionne un jour et ne fonctionne plus le lendemain et que je n'ai fait aucun changement que je puisse voir...

mon EA dans le testeur de stratégie ne répond PAS quand je change le paramètre 'maxopentrade'... il utilise deux trades quoi qu'il arrive, si je lui dis '0' il utilise toujours deux trades... il fonctionnait bien plus tôt et même aujourd'hui et maintenant soudainement il a décidé qu'il allait autoriser deux trades ouverts tout le temps quoi que je lui dise....

la semaine dernière, si je lui disais d'autoriser 5 transactions en même temps, il autorisait 5 transactions en même temps et quand je lui disais d'autoriser 1 transaction en même temps, il autorisait une seule transaction en même temps..... J'ai vu le système fonctionner !

Maintenant, je n'arrive pas à le faire fonctionner pour me sauver. Que se passe-t-il ?

J'ai pensé que j'avais peut-être perdu une parenthèse ou quelque chose sur la ligne if MaxOpenTrade...

TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0); [/PHP]

so I changed it to this...

[PHP] TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade){

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

aucune amélioration, il ignore toujours le contrôle MaxOpenTrade.

ok ça aide si je garde la trace du signal que je change....lol si j'utilise seulement le signal #2 et que je change le paramètre du signal #1 ça a du sens hein ?

oui, je perds mes billes.

 
for (int o = 0; o <= MaxOpenTrade; o ++)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

return(0);

ce que cela ne fait pas, c'est modifier les ordres en même temps... Je suppose que je dois faire quelque chose de similaire avec la fonction de modification des ordres pour qu'ils soient tous modifiés en même temps...

 

Je ne suis pas sûr, mais je ne pense pas que ce soit la bonne façon de faire ce que vous voulez faire.

Utilisez la fonction suivante :

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);

}

Appelez-la dans votre programme comme suit

if CountTrades<MaxTrades then....

Débarrassez-vous également de cette habitude de compter dans une boucle "for" et utilisez un style de compte à rebours. Cela vous sera utile lorsque vous essayerez de conclure des transactions et, en général, vous obtiendrez un style de codage plus cohérent.

Bonne chance.

 

ok j'ai fait ça, j'ai tout mis à jour dans l'EA GGlongs avec la fonction CountTrades() même la chose précédente CloseAll() que vous avez fait plus tôt qui utilisait les OrdersTotal()... Donc TOUT dans cette construction particulière compte maintenant vers le bas au lieu de compter vers le haut j'appelle cette fonction beaucoup.

EA semble maintenant fonctionner correctement pour ouvrir plusieurs ordres en même temps et pour les ouvrir ou les fermer en même temps....

les modifier par contre.... c'est irrationnel et ne les modifie pas tous en même temps...

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

[/PHP]

something about this doesn't work right...however when I do this although it becomes crazy it ends up being more profitable...

this is the code for the 'altered' version that corresponds to the test reports below...when it's like this basically it doesn't modify anything at all....

//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

this is the code that corresponds to the 'unaltered' reports below... This modifys but not as I imagine it should doing them all at the same time....

[PHP]//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

//for (int t = 0; t < MaxOpenTrade; t ++)

//if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

//return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

bien que je n'aime pas la façon dont cela modifie selon le rapport, c'est néanmoins beaucoup plus profitable....

J'aimerais pouvoir contrôler la modification pour qu'elle se fasse comme je le veux, juste pour savoir que je le peux. Peut-être qu'en fin de compte, il vaut mieux laisser les choses comme ça, mais je veux savoir comment faire pour qu'elle les modifie toutes en même temps, comme elle le fait avec les ouvertures et les fermetures.

 

Maintenant, maintenant, maintenant... vous avez fait tout ce chemin... alors réfléchissez bien... vous avez le code counttrades, alors pourquoi ne pas le modifier pour faire le truc de modification d'ordre... quelque chose comme ça...

int ModifyTrades()

{

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)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Vous avez les bases, et maintenant c'est à vous de trouver le reste.

Bonne chance.

 
Maji:
Maintenant, maintenant, maintenant... vous avez fait tout ce chemin... alors réfléchissez bien... vous avez le code de counttrades, alors pourquoi ne pas le modifier pour faire le truc de modification d'ordre... quelque chose comme ça...

int ModifyTrades()

{

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)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Vous avez les bases, et maintenant c'est à vous de trouver le reste.

Bonne chance.

ça marche...voir ci-joint...

le fichier .htm était trop volumineux pour être téléchargé... il suffit de dire qu'il modifie chaque ordre qui compte en même temps.... il est même raisonnablement rentable pas mal pour ce signal ruddy.

Dossiers :
Raison: