[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 999
//+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start(){ if (lFlagUseHourTrade){ if ( !(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) { Comment("Le temps du commerce n'est pas encore arrivé !") ; retour(0) ; } }
si (numorder > -1 && lFlagUseSound) PlaySound(sSoundFileName) ; }
Je veux juste l'utiliser sur différentes paires, mais il est conçu pour EURUSD, donc je ne peux pas l'ajuster manuellement, ni moralement, ni physiquement.
Pourriez-vous me dire comment sortir deux paramètres calculés à partir d'une fonction de calcul ? Si je comprends bien, la fonction return() ne renvoie qu'un seul paramètre spécifié entre ses crochets.
Je ne peux sortir que TLvup. Et je veux aussi utiliser BezubMMA23up. Mais si j'écris ainsi - return(TLup, BezUbMMA23up) ou return(TLup ; BezUbMMA23up), j'obtiens une erreur. La fonction est appelée comme suit : double TL-up=CalculateTL-up(a,Price1Cin) ;
Comment appeler pour utiliser à la fois TLup et BezUbMMA23up ? Ou pour le calcul du paramètre WithoutMMA23up, je dois réécrire séparément le code donné et produire return( WithoutMMA23up) ?
Bonjour. Pourriez-vous me dire ce qu'il faut insérer dans le code de l'EA pour optimiser la période des EMA ?
#property copyright "hasgkhlhjgg"
#lien de propriété "http://www.efefrWRF.com"
#define MIN_STOPLOSS_POINT 10
#define MIN_TAKEPROFIT_POINT 10
#define MAGIC 316995
extern string sNameExpert = "DGJJFYGJD" ;
extern int nAccount =0 ;
extern double dBuyStopLossPoint = 0 ;
extern double dSellStopLossPoint = 0 ;
extern double dBuyTakeProfitPoint = 0 ;
extern double dSellTakeProfitPoint = 0 ;
extern double dBuyTrailingStopPoint = 0 ;
extern double dSellTrailingStopPoint = 0 ;
extern double dLots = 0.03 ;
extern int nSlippage = 4 ;
extern bool lFlagUseHourTrade = False ;
externe inttern nFromHourTrade = 0 ;
extern intNToHourTrade = 23 ;
extern bool lFlagUseSound = True ;
extern string sSoundFileName = "alert.wav" ;
extern color colorOpenBuy = Blue ;
extern colorCloseBuy = Aqua ;
extern colorOpenSell = Red ;
extern colorCloseSell = Aqua ;
void deinit() {
Commentaire (") ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start(){
if (lFlagUseHourTrade){
if ( !(Hour()>=nFromHourTrade && Hour()<=nToHourTrade)) {
Comment("Le temps du commerce n'est pas encore arrivé !") ;
retour(0) ;
}
}
if(Bars < 100){
Print("barres inférieures à 100") ;
retour(0) ;
}
if(nAccount > 0 && nAccount != AccountNumber()){
Comment("Transaction sur le compte : "+NuméroCompte()+" INTERDIT !") ;
retour(0) ;
}
if((dBuyStopLossPoint > 0 && dBuyStopLossPoint < MIN_STOPLOSS_POINT) ||
(dSellStopLossPoint > 0 && dSellStopLossPoint < MIN_STOPLOSS_POINT)){
Print("StopLoss inférieur à " + MIN_STOPLOSS_POINT) ;
retour(0) ;
}
if((dBuyTakeProfitPoint > 0 && dBuyTakeProfitPoint < MIN_TAKEPROFIT_POINT) ||
(dSellTakeProfitPoint > 0 && dSellTakeProfitPoint < MIN_TAKEPROFIT_POINT)){
Print("TakeProfit inférieur à " + MIN_TAKEPROFIT_POINT) ;
retour(0) ;
}
double diMA0=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA1=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA2=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA3=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA4=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA5=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA6=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA7=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA8=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA9=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA10=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA11=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA12=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA13=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA14=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA15=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA16=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA17=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA18=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA19=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA20=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA21=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA22=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA23=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA24=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA25=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA26=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA27=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA28=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA29=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA30=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA31=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA32=iMA(NULL,1,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA33=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA34=iMA(NULL,1,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA35=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA36=iMA(NULL,1,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA37=iMA(NULL,1,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA38=iMA(NULL,5,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA39=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA40=iMA(NULL,5,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA41=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA42=iMA(NULL,5,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA43=iMA(NULL,5,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA44=iMA(NULL,15,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA45=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA46=iMA(NULL,15,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA47=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA48=iMA(NULL,15,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA49=iMA(NULL,15,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA50=iMA(NULL,30,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA51=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA52=iMA(NULL,30,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA53=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA54=iMA(NULL,30,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA55=iMA(NULL,30,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA56=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA57=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA58=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA59=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA60=iMA(NULL,60,50,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA61=iMA(NULL,60,100,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA62=iMA(NULL,60,15,0,MODE_EMA,PRICE_CLOSE,0) ;
double diMA63=iMA(NULL,60,29,0,MODE_EMA,PRICE_CLOSE,0) ;
si(AccountFreeMargin() < (1000*dLots)){
Print("Nous n'avons pas d'argent. Marge libre = " + AccountFreeMargin()) ;
retour(0) ;
}
bool lFlagBuyOpen = false, lFlagSellOpen = false, lFlagBuyClose = false, lFlagSellClose = false ;
lFlagBuyOpen = (diMA0>diMA1 && diMA2>diMA3 && diMA4>diMA5 && diMA6>diMA7 && diMA8>diMA9 && diMA10>diMA11 && diMA12>diMA13 && diMA14>diMA15 && diMA16>diMA17 && diMA18>diMA19 && diMA20>diMA21 && diMA22>diMA23 && diMA24>diMA25 && diMA26>diMA27 && diMA28>diMA29) ;
lFlagSellOpen = (diMA32<diMA33 && diMA34<diMA35 && diMA36<diMA37 && diMA38<diMA39 && diMA40<diMA41 && diMA42<diMA43 && diMA44<diMA45 && diMA46<diMA47 && diMA46<diMA47 ; et diMA46<diMA47 && diMA48<diMA49 && diMA50<diMA51 && diMA52<diMA53 && diMA54<diMA55 && diMA56<diMA57 && diMA58<diMA59 && diMA60<diMA61) ;
lFlagBuyClose = (diMA30<diMA31) ;
lFlagSellClose = (diMA62>diMA63) ;
if (!ExistPositions()){
if (lFlagBuyOpen){
OpenBuy() ;
{ retour(0) ;
}
if (lFlagSellOpen){
OpenSell() ;
retour(0) ;
}
}
if(ExistPositions()){
if(OrderType()==OP_BUY){
if(lFlagBuyClose){
bool flagCloseBuy = OrderClose(OrderTicket(), OrderLots(), Bid, nSlippage, colorCloseBuy) ;
if (flagCloseBuy && lFlagUseSound)
PlaySound(sSoundFileName) ;
retour(0) ;
}
}
if(OrderType()==OP_SELL){
if(lFlagSellClose){
bool flagCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, nSlippage, colorCloseSell) ;
si (flagCloseSell && lFlagUseSound)
PlaySound(sSoundFileName) ;
retour(0) ;
}
}
}
si (dBuyTrailingStopPoint > 0 || dSellTrailingStopPoint > 0){
for (int i=0 ; i<OrdersTotal() ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true ;
si (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false ;
if (OrderSymbol()==Symbol() && lMagic) {
si (OrderType()==OP_BUY && dBuyTrailingStopPoint > 0) {
si (Bid-OrderOpenPrice() > dBuyTrailingStopPoint*Point) {
si (OrderStopLoss()<Bid-dBuyTrailingStopPoint*Point)
Modifier le StopLoss (Bid-dBuyTrailingStopPoint*Point) ;
}
}
si (OrderType()==OP_SELL) {
si (OrderOpenPrice()-Ask>dSellTrailingStopPoint*Point) {
si (OrderStopLoss()>Ask+dSellTrailingStopPoint*Point || OrderStopLoss()==0)
ModifierStopLoss(Ask+dSellTrailingStopPoint*Point) ;
}
}
}
}
}
}
retour (0) ;
}
bool ExistPositions() {
for (int i=0 ; i<OrdersTotal() ; i++) {
si (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
bool lMagic = true ;
si (MAGIC > 0 && OrderMagicNumber() != MAGIC)
lMagic = false ;
if (OrderSymbol()==Symbol() && lMagic) {
retour(Vrai) ;
}
}
}
retour (faux) ;
}
void ModifyStopLoss(double ldStopLoss) {
bool lFlagModify = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(), 0, CLR_NONE) ;
if (lFlagModify && lFlagUseSound)
PlaySound(sSoundFileName) ;
}
void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0 ;
si (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point ;
si (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point ;
int numorder = OrderSend(Symbol(), OP_BUY, dLots, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy) ;
si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}
void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0 ;
si (dSellStopLossPoint > 0)
dStopLoss = Ask+ dSellStopLossPoint*Point ;
si (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point ;
int numorder = OrderSend(Symbol(),OP_SELL, dLots, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell) ;
si (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName) ;
}
Je veux juste l'utiliser sur différentes paires, mais il est conçu pour EURUSD, donc je ne peux pas l'ajuster manuellement, ni moralement, ni physiquement.
Bonjour !
Pourriez-vous me dire comment sortir deux paramètres calculés à partir d'une fonction de calcul ? Si je comprends bien, la fonction return() ne renvoie qu'un seul paramètre spécifié entre ses crochets.
Je ne peux sortir que TLvup. Et je veux aussi utiliser BezubMMA23up. Mais si j'écris ainsi - return(TLup, BezUbMMA23up) ou return(TLup ; BezUbMMA23up), j'obtiens une erreur. La fonction est appelée comme suit : double TL-up=CalculateTL-up(a,Price1Cin) ;
Comment appeler pour utiliser à la fois TLup et BezUbMMA23up ? Ou pour le calcul du paramètre WithoutMMA23up, je dois réécrire séparément le code donné et produire return( WithoutMMA23up) ?