Idées brutes - page 5

 

Stop loss pour EA

Désolé pour le titre ci-dessus, ce dont j'ai besoin est une commande de prise de profit. Je n'ai aucune idée de comment coder mais j'aimerais ajouter un Take Profit à cette EA. Ci-dessous le code, veuillez ajouter le Take Profit si nécessaire. Merci encore

Ray

extern double MaximumRisk =0.02 ; //% solde du compte à risquer par position

extern double DecreaseFactor =3 ; //diviseur (réducteur) de la taille du lot pendant une série de pertes

extern double Lot.Margin =50 ; //Marge pour 1 lot

extern int Magic =69 ;

extern string comment = "m icwr ea" ;

double spread ; spread =Ask-Bid ;

int slip ; slip =spread/Point ;

int RequiredWaveHeight,b,s,cnt,ticket ;

double rsi,SL,ICWR,ICWRv0,awp1,awp2,active.high,active.low,high.c,high.r,low.r,low.c ;

datetime awt1,awt2,a.high.shift,a.low.shift,shift ;

int init(){return(0);}

int deinit(){return(0);}

int start(){

PosCounter() ;

rsi=iRSI(Symbole(),1440,14,PRICE_CLOSE,0) ;

if(Period()==5) {RequiredWaveHeight=40;SL=50*Point;}

if(Period()==240) {RequiredWaveHeight=150;SL=100*Point;}

ICWR=iCustom(Symbol(),Period(), "ICWR",10,5,3,RequiredWaveHeight,0,0) ;

ICWRv0=iCustom(Symbol(),Period(), "ICWR v0", "ZigZag",10,5,3, "ActiveWave",50,RequiredWaveHeight,0,0) ;

awt1=ObjectGet("Activewave",OBJPROP_TIME1) ;

awp1=ObjectGet("Activewave",OBJPROP_PRICE1) ;

awt2=ObjectGet("Activewave",OBJPROP_TIME2) ;

awp2=ObjectGet("Activewave",OBJPROP_PRICE2) ;

if(awp1>awp2) {

active.high=awp1 ;

a.high.shift=iBarShift(Symbol(),Period(),awt1) ;

active.low=awp2 ;

a.low.shift=iBarShift(Symbol(),Period(),awt2);}

else {

active.high=awp2 ;

a.high.shift=iBarShift(Symbol(),Period(),awt2) ;

active.low=awp1 ;

a.low.shift=iBarShift(Symbol(),Period(),awt1);}

si(a.high.shift<a.low.shift) shift=a.high.shift ;

sinon shift=a.low.shift ;

high.c=NormalizeDouble(active.low+((active.highactive.low)*0.75),Digits) ;

high.r=NormalizeDouble(active.low+((active.high-active.low)*0.618),Digits) ;

low.r=NormalizeDouble(active.low+((active.high-active.low)*0.382),Digits) ;

low.c=NormalizeDouble(active.low+((active.high-active.low)*0.25),Digits) ;

if(rsi>50) {

for(int i=0;i<shift;i++) {

if(Closelow.r && Low[1]>high.c && b==0) {

ticket1=OrderSend(Symbol(),OP_SELL,1.0,Bid,0,Bid+20*Point,Bid-30*Point, "commentaire expert",255,0,CLR_NONE) ;

OP_BUY,

LotsOptimisés(),

Demande,

glisser,

Ask-SL,

0,

Période()+commentaire,

Magic,0,Blue) ;

if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{ Print(ticket) ; }

else Print("Erreur lors de l'ouverture d'un ordre BuyStop : ",GetLastError()) ;

return(0);}}}}

if(rsi<50) {

for(int ii=0;ii<shift;ii++) {

if(Closelow.r && High[1]<low.c && s==0) {

ticket=OrderSend(Symbol(),

OP_SELL,

LotsOptimisés(),

Bid,

slip,

Enchère+SL,

0,

Période()+commentaire,

Magic,0,Orange) ;

if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{ Print(ticket) ; }

else Print("Erreur lors de l'ouverture d'un ordre SellStop : ",GetLastError()) ;

return(0);}}}}

if(b>0) {

for(int c=0;c<shift;c++) {

if(High[1]<low.c) {

OrderClose(ticket,OrderLots(),Bid,slip,0);}}}

if(s>0) {

for(int cc=0;cc<shift;cc++) {

if(Low[1]>high.c) {

OrderClose(ticket,OrderLots(),Ask,slip,0);}}}

commentaires() ;

return(0);}

//+---------------------------FUNCTIONS------------------------------+

void PosCounter() {

b=0;s=0;ticket=0 ;

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

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {

if(OrderType()==OP_SELL) {

ticket=OrderTicket() ;

s++;}

si(OrderType()==OP_BUY)) {

ticket=OrderTicket() ;

b++;} }}}

void comments() {

if(MarketInfo(Symbol(),MODE_SWAPLONG)>0) string swap="longs." ;

else swap="shorts." ;

if(MarketInfo(Symbol(),MODE_SWAPLONG)<0 && MarketInfo(Symbol(),MODE_SWAPSHORT)<0) swap="votre courtier. " ;

Comment("Dernier Tick : ",TimeToStr(CurTime(),TIME_DATE|TIME_SECONDS),"\n",

"Le swap favorise ",swap,"\n",

"RSI quotidien= ",rsi,"\n",

"Active High : ",active.high,"\n",

"High shift : ",a.high.shift,"\n",

"Confirmation Haute : ",high.c,"\n",

"High Retrace : ",high.r,"\n",

"Low Retrace : ",low.r,"\n",

"Low Confirm : ",low.c,"\n",

"Active Low : ",active.low,"\n",

"Low shift : ",a.low.shift) ; }

double LotsOptimized() {

double lot ;

int commandes=HistoryTotal() ;

int pertes=0 ;

lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/Lot.Margin,2) ;

if(Facteur de diminution>0) {

for(int i=orders-1;i>=0;i--) {

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Erreur dans l'historique !") ; break ; }

if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue ;

si(OrderProfit()>0) break ;

si(OrderProfit()<0) pertes++ ; }

if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,2) ; }

si(lot<0,01) lot=0,01 ;

return(lot) ; }//end LotsOptimized

 

Jamais de la vie...

Nevermind..en quelque sorte

j'ai téléchargé le TEMPLATE catfx et tout est apparu...

Je ne sais pas.

 

Question rapide... quelles données INDinverse vous donne-t-il ?

J'ai ce graphique mais je n'arrive pas à déchiffrer les informations qu'il me donne...

J'ai fait une recherche mais je n'ai pas trouvé de description.

MERCI POUR VOTRE AIDE

Dossiers :
 

Un nouveau graphique désactive EA ?

Bonjour à tous,

(Ce forum est tellement génial, j'aurai bientôt quelque chose à partager !)

Je suis en train de jouer avec l'exemple de CodersGuru "Your First Expert Advisor" de son cours MQL4...

J'ai remarqué quelque chose qui, je l'espère, a une solution... Après avoir chargé l'EA sur le graphique 30M... il a ouvert un ordre (court)... J'avais modifié son code pour tester ma stratégie de sortie (un simple croisement sur une période de temps inférieure)...

Le croisement est arrivé et reparti (et le statut imprimé, et mon code était correct) MAIS, j'étais sur le graphique 15M à ce moment là... est-ce que cela signifie que j'ai désactivé l'EA (donc mon code/logique n'a pas fonctionné) ?

Si oui, y a-t-il un moyen de contourner ce problème... J'aimerais pouvoir faire des allers-retours vers d'autres horizons temporels... sans désactiver l'EA en cours d'exécution.

Merci d'avance pour les réponses.

-charliev

 

L'efficacité d'un système est-elle proportionnelle à la croissance du nombre de ses utilisateurs ?

Pensez-vous qu'un système gagnerait ou perdrait de son efficacité avec l'augmentation du nombre de personnes qui l'appliquent ?

Il semble que de nombreux traders à succès ne partagent généralement pas leurs stratégies de trading, il doit donc y avoir une raison pour qu'ils le fassent. Quelqu'un veut-il se pencher sur la question ?

 
TheShanghai:
Croyez-vous qu'un système gagnerait ou perdrait son efficacité avec l'augmentation du nombre de personnes qui l'appliquent ? Il semble que de nombreux traders à succès ne partagent généralement pas leurs stratégies de trading, il doit donc y avoir une raison pour qu'ils le fassent. Quelqu'un veut-il se pencher sur la question ?

J'ai entendu parler d'une idée selon laquelle de nombreux traders prospères ne partagent généralement pas leurs stratégies de trading ou partagent surtout de mauvaises stratégies. C'est possible. Je ne sais pas. Parce que le forex est de l'argent. Je pense qu'il n'y a rien à faire avec cette efficacité. C'est parce qu'il n'y a pas beaucoup de traders qui réussissent et c'est quelque chose avec les courtiers.

BTW, je pense que c'est personnel. Un trader peut utiliser une certaine stratégie de trading et moi pas à cause de mon caractère, mes habitudes, mon fuseau horaire, etc. C'est donc personnel. De toute façon, nous pouvons découvrir toutes les stratégies comme nous le faisons déjà ici sur le forum.

 

Merci pour ce commentaire. Je le garderai à l'esprit.

 

Suivre la tendance

Salut,

J'ai un système simple mais stable qui fonctionne pour moi. Je me sers d'une EMA 34 à la clôture. RSI 7 en clôture. CCI 20 en clôture. Placez l'EMA sur un graphique et regardez la tendance. Commencez par le 30M et remontez jusqu'à H4 voire D1. La tendance de l'EMA doit être la même pour tous les horizons temporels. Si la tendance est bonne, vous pouvez entrer dans une transaction si le RSI est supérieur ou inférieur à 50 sur l'échelle de temps D1 et si le CCI est supérieur ou inférieur à 100. Restez sur le graphique H4 lorsque la transaction commence, cela vous évite de voir le bruit du marché et vous permet de clôturer avant l'heure. Mettez un stoploss à 80 pips. Vous pouvez également utiliser la Fib pour voir si le marché a un retracement ou non. J'aime utiliser un canal équidistant (un outil standard de Metatrader) pour trouver la tendance du marché. Je m'en tiens à cette tendance jusqu'à ce que je réalise mes bénéfices. Cette méthode n'est pas infaillible mais une chose est sûre et elle me semble de plus en plus logique chaque jour : je ne trade pas contre une tendance majeure.

S'il vous plaît, expérimentez cette méthode sur la démo et construisons un système à plus long terme qui fonctionne pour les traders plus sérieux.

Roets

 

Valeur par défaut lorsque le tableau est déclaré

Bonjour à tous,

Quelle valeur est placée comme valeur par défaut dans ce tableau :

double ARRAYA[] ;

double ARRAYB[] ;

Je veux effacer tout le contenu de ces Arrays en faisant :

ArrayInitialize(ARRAYA,NULL) ;

ArrayInitialize(ARRAYB,NULL) ;

Cependant, la mise à NULL fait que le tableau est rempli de 0 (zéro).

Avez-vous des suggestions ?

-charliev

 

Indicateur #include dans EA ?

Bonjour à tous,

Existe-t-il un moyen d'inclure un indicateur compilé afin qu'il se charge lors du chargement de l'EA ? (En rendant l'EA autonome comme un seul fichier .EX4) ?

Merci pour votre aide !

-charliev