Comment coder ? - page 22

 

Vous pouvez toujours écrire int crossTime = Time[0] lorsque vous avez eu un cross, puis utiliser la fonction iBarShift en utilisant la variable crossTime pour vérifier le nombre de barres écoulées.

 

Salut Kalenzo,

Kalenzo:
Vous pouvez toujours écrire int crossTime = Time[0] lorsque vous avez eu un cross, puis utiliser la fonction iBarShift en utilisant la variable crossTime pour vérifier combien de barres se sont écoulées.

Comment écrivez-vous ce code pour inclure uniquement les "Bear Bars" dans le compte ?

Je comprends l'ibarshift mais cela inclurait toutes les barres depuis la croix. Vous auriez encore besoin d'utiliser un système de comptage comme je l'ai fait pour compter les "Bear Bars" et je crois que c'est là que réside mon problème.

J'ai initialement testé mon code avec ce code .... Ce qui a bien fonctionné.... mais ne s'est pas traduit par le code ci-dessus qui serait réellement listé dans mon EA.

int start()

{

//----

double f=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,0);

double s=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,0);

double fp=iMA(NULL,0,3,0,MODE_SMA,PRICE_CLOSE,1);

double sp=iMA(NULL,0,7,0,MODE_SMA,PRICE_CLOSE,1);

static bool CrossedUP,CrossedDn;

static int Count=0;

if(f>s && fp<=sp)

{

CrossedUP=true;

CrossedDn=false;

Alert(Symbol()," Crossed UP");

Count=0;

}

else

if(f=sp)

{

CrossedUP=false;

CrossedDn=true;

Alert(Symbol()," Crossed Down");

Count=0;

}

if(NewBar()==true && f>s || f<s) Count++;

Comment("Crossed UP: ",CrossedUP," Crossed Down: ",CrossedDn," Bars since Cross: ",Count);

//----

return(0);

}

Toute autre réflexion serait appréciée.

Merci,

SaxMan

 

Désolé Omelette,

Cela ne fonctionne pas non plus.

Merci,

SaxMan

omelette:
Bonjour, essayez ceci.
bool LongClose()

{

if(MAFastC=MASlowP)

{

CrossedUp=false;

CrossedDn=true;

BarCount=0;

}

else

if(MAFastC>MASlowC && MAFastP<=MASlowP)

{

CrossedUp=true;

CrossedDn=false;

BarCount=0;

Alert("Crossed Down");

}

if(CrossedDn==true && NewBar()==true && Candle3mP=="Bear")

BarCount++;

if(BarCount>=2 && Candle3mC=="Bear")

{

Alert("Close Long Position");

return(true);

}

else return(false);
 

limite de temps avec le code EA

Je ne parviens pas à placer une limite de temps sur mon EA.

La ligne de code est la suivante

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

J'ai essayé de changer ce ZERO en 1 ou en 12 et je n'arrive pas à arrêter la transaction... Je voudrais que la transaction expire dans 12 heures, comment puis-je faire ?

J'utilise un backtesting pour m'assurer que cela fonctionne. La fonction d'expiration fonctionne bien avec cela, n'est-ce pas ?

 

Essayez ceci....

{

string expire_date = "2007.10.22" ;

datetime expirevar = StrToTime(expire_date) ;

si ( CurTime() >= expirevar )

{

Alert ("Version expirée") ;

retour(0) ;

}

// code

return(0) ;

}

Dave

 
islandrock:
Je ne parviens pas à placer une limite de temps sur mon EA.

La ligne de code est la suivante :

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

J'ai essayé de changer le ZERO en 1 ou en 12 et je n'arrive pas à arrêter la transaction... Je voudrais que la transaction expire dans 12 heures, comment puis-je faire ?

J'utilise un backtesting pour m'assurer qu'il fonctionne. La fonction expire fonctionne bien avec cela, n'est-ce pas ?

Vérifiez le canal d'erreur ;

L'application du délai d'expiration des ordres en attente peut être désactivée dans certains serveurs commerciaux. Dans ce cas, lorsqu'une valeur non nulle est spécifiée dans le paramètre d'expiration, l'erreur 147 (ERR_TRADE_EXPIRATION_DENIED) sera générée.

Le paramètre est une variable 'datetime'. Je ne pense pas que la valeur 12 soit comprise dans la déclaration de cette variable.

 
islandrock:
Je ne parviens pas à placer une limite de temps sur mon EA.

La ligne de code est la suivante :

OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point, "timetest",16384,0,Green)

J'ai essayé de changer ce ZERO en 1 ou en 12 et je n'arrive pas à arrêter la transaction... Je voudrais que la transaction expire dans 12 heures, comment faire ?

Je suis en train d'utiliser un backtesting pour m'assurer qu'il fonctionne. la fonction expire fonctionne avec cela, n'est-ce pas ?

Les délais d'expiration fonctionnent bien avec MT, le seul problème étant que certains courtiers ne les autorisent pas - FXDD en est un. L'heure d'expiration doit être au format date pour que cela fonctionne.

datetime ExpirationTime = StrToTime(TimeYear(Time[0]) + "." + TimeMonth(Time[0])+ "." + TimeDay(Time[0])+" "+23+":"+55); OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"timetest",16384,ExpirationTime,Green);
 

J'ai essayé ceci.

extern int TradeLifeHour=12 ;

extern int TradeLifeMin=00 ;

datetime expirationtime ; (je ne sais pas ce qui va ici)

alors dans start()

expirationtime = CurTime()+TradeLifeHour*60*60+TradeLifeMin*60 ;

et utiliser expirationtime dans la zone 0.

J'ai le dernier code mais je ne sais pas comment le configurer pour que la transaction expire dans 12 heures.

 
xxDavidxSxx:
Essayez ceci....

{

string expire_date = "2007.10.22" ;

datetime expirevar = StrToTime(expire_date) ;

si ( CurTime() >= expirevar )

{

Alert ("Version expirée") ;

retour(0) ;

}

// code

return(0) ;

}

Dave

J'ai juste utilisé le code que je t'ai donné. J'ai changé la date en 2006 et l'ai placé à un endroit aléatoire dans Bipoler sur un compte FXDD en argent réel, et ça a marché comme sur des roulettes.

Ou peut-être que c'est trop simple ? Je ne sais pas.

Dave

 

? ?

ce code ne fait pas expirer chaque transaction ouverte par mon EA 12 heures après son ouverture....