CyberiaTrader..un EA étonnant ! - page 16

 

Déclaration mise à jour.

Le capital a presque doublé en une semaine.

v1.60

Je vais changer la taille du lot à 2 à partir de maintenant.

Dossiers :
statement_2.htm  1653 kb
 

Écran de l'ATR_normalized

Igor, j'ai oublié de joindre l'écran de l'ATR_normalized à la réponse ci-dessus. Le voici.

Dossiers :
atr_norm.gif  50 kb
 
igorad:
Bonjour,

J'ai essayé de créer un ATR normalisé mais je pense que ce n'est pas une tâche si simple.

Vous pouvez donc essayer de jouer avec les entrées.

Igor

PS. Désolé mais le bug était dans le code. Corrigé.

Igor, merci beaucoup pour l'ATR normalisé. Il semble bon, à l'exception qu'il ne descend jamais en dessous de 30 (échelle 0-100). Si vous regardez l'écran ci-joint, vous verrez l'iATR aller à 0 alors que l'ATR_normalisé reste autour de 35. Dans tous les cas où l'iATR atteint zéro, même pour un moment, ATR_normalized reste au-dessus de 30. Pouvez-vous corriger cela, s'il vous plaît ? De plus, ne serait-il pas plus facile de créer en utilisant les iATR et iMA natifs ? Peut-être que ce serait plus facile et je peux juste utiliser le code dans CT comme un filtre.

 

Salut,

essayez celui-ci. Ça doit être bon.

Dossiers :
 
igorad:
Bonjour, essayez celui-ci. Elle doit être correcte.

Ok, je vais essayer celui-là. De plus, j'ai pu faire celui-ci très simplement :

double normATR=0 ;

double maxATR=iATR(Symbol(),Period(),14,0) ;

int i ;

for(i=1;i<14;i++)

{

si(iATR(Symbole(),Période(),14,i)>maxATR)

{

maxATR=iATR(Symbole(),Période(),14,i) ;

}

}

normATR=(iATR(Symbol(),Period(),14,0)/maxATR)*100 ;

Cela semble également fonctionner correctement. Merci pour votre aide !

 
igorad:
Je suis en train de tester la dernière version et j'ai trouvé quelques bugs, alors attendez les mises à jour.

Igor, pouvez-vous poster votre version avec les corrections pour le PIP Timer ? Il ne fonctionne pas correctement dans sa forme actuelle. Il démarre le PIPcounter à l'entrée et il sort après le temps écoulé sans tenir compte du profit réalisé. Veuillez tester sur les ticks au lieu des secondes puisque le compte des secondes est asynchrone avec les ticks qui entrent. Merci pour votre contribution.

Voici à nouveau les spécifications et aussi le code que j'ai jusqu'à présent tel que vous l'avez écrit à l'origine avec quelques modifications :

1. Si EnablePIPTimer=true ;

2. Quand MinPIPProfit >=X activer TakePIPCountdown (SET to Input TakePipTimer). Cela commence à compter jusqu'à 0 en ticks.

3. TakePIPCountDown effectue un compte à rebours : 60, 59, 58...ticks etc.

4. Déclarer la variable globale double BestPIPProfit=0 ; ceci contient le meilleur profit PIP que la position a atteint jusqu'à présent.

5. Faites en sorte que BestPIPProfit=MinPIPProfit initialement ;

6. Obtenir BestPIPProfit=profit PIP actuel.

7. Si BestPIPProfit > MinPIPProfit, faites MinPIPProfit = BestPIPProfit (ce sera le plancher minimum de profit PIP mis à jour à partir de maintenant pour cette position ouverte).

8. Lorsque la condition #7 ci-dessus se produit, redémarrez TakePIPCountDown à sa valeur initiale (TakePipTimer) et activez-le pour le comptage. Il compte à nouveau 60, 59, 58 ticks etc. jusqu'à 0 avec le nouveau plancher MinPIPProfit.

9. Une fois que le TakePIPCountDown atteint 0, FERMEz l'ordre ouvert immédiatement.

10. Si le profit actuel de PIP est inférieur à MinPIPProfit, arrêtez TakePIPCountDown (et réinitialisez la valeur originale de TakePipTimer) jusqu'à ce que le profit actuel soit à nouveau >= MinPIPProfit (le plancher le plus élevé atteint) pendant cette exécution.

CODE :

int CheckTakeProfitTimer()

{

double _point = MarketInfo(OrderSymbol(),MODE_POINT) ;

double PipProfit = 0 ;

si (EnablePipTimer==true)

{

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

int mode=OrderType() ;

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

{

si (mode==OP_BUY)

PipProfit = MathRound((Bid - OrderOpenPrice())/_point) ; // Calculer le profit/la perte à l'ouverture pour BUY

sinon

si (mode==OP_SELL)

PipProfit = MathRound((OrderOpenPrice()-Ask)/_point) ; // Calculer le profit/la perte ouvert(e) pour la vente.

MaxPipProfit = MathMax(PipProfit,MaxPipProfit) ; // Obtenir le bénéfice le plus important, soit actuel, soit maximal pendant la transaction.

if (MaxPipProfit >= BestPipProfit) // Vérifier si le profit PIP plancher est atteint

{

if (!StartCount1 || ( StartCount1 && BestPipProfit > MinPipProfit)) // aucun comptage en cours et profit PIP plancher atteint

{

BestPipProfit=MaxPipProfit ; // réinitialisé au profit maximum actuel atteint jusqu'à présent.

TimerStart1 = CurTime()/1000 ; // fige le temps actuel

TakePipCountDown = TakePipTimer ; // Initialise le compteur à la valeur définie.

StartCount1=true ; // démarre le compteur

}

else

if (TimerType == 0) // compte en cours..compte soit les secondes, soit le tick

{

TakePipCountDown = TakePipTimer - (CurTime()/1000 - TimerStart1) ; // L'option choisie est le comptage en secondes

}

else

{

TakePipCountDown-- ; // L'option choisie est le nombre de tic-tac.

}

} // if (MaxPipProfit..

}// if (Order...

} // for

} // dans EnablePipTimer

 

Correction de l'impossibilité de négocier dans CT 1.85

Désolé gang...il y avait un bug dans la version 1.85 qui empêchait CT 1.85 de trader après les mauvaises heures de trading. Je l'ai corrigé pour le moment jusqu'à ce que la nouvelle version sorte et je l'ai nommé 1.85f (corrigé). Veuillez utiliser cette version avec les presets de la 1.85 postés à l'origine. Cette version est identique à la 1.85 et ne contient que la correction de l'absence de transactions. Nous aurions dû nous en rendre compte plus tôt.

Dossiers :
 
fxspeedster:
Désolé gang...il y avait un bug dans la 1.85 qui empêchait CT 1.85 de trader après les mauvaises heures de trading. Je l'ai corrigé pour le moment jusqu'à ce que la nouvelle version sorte et je l'ai nommé 1.85f (corrigé). Veuillez utiliser cette version avec les presets de la 1.85 postés à l'origine. Cette version est identique à la 1.85 et ne contient que la correction de l'absence de transactions. Nous aurions dû nous en rendre compte plus tôt.

Je n'arrivais pas à comprendre comment tout le monde obtenait des résultats aussi fabuleux alors que je ne recevais pratiquement aucun ordre !

 

Bonjour,

J'ai développé un PipTimerExpert séparé. Cet expert peut gérer le commerce selon la technique décrite par fxspeedster. Cette version comprend un compteur de secondes et de ticks. Vous pouvez l'utiliser pour CyberiaTrader.

Dossiers :
 
igorad:
Bonjour, j'ai développé un PipTimerExpert séparé. Cet expert peut gérer le commerce selon la technique décrite par fxspeedster. Cette version comprend un compteur de secondes et de ticks. Vous pouvez l'utiliser pour CyberiaTrader.

Igor, merci pour votre excellent travail. Je vais inclure ce code et le tester. Vous êtes le meilleur !

Raison: