Demandez ! - page 16

 

Quelques problèmes supplémentaires

1. l'une des choses que j'ai remarquées dans les résultats est que si un trade est ouvert, il n'en ouvre pas d'autre tant que le trade précédent n'est pas terminé, avez-vous un moyen de changer cela ? faire des trades qui se chevauchent ?

(merci de poster un second fichier avec les transactions qui se chevauchent si vous le pouvez, je dois encore les tester toutes les deux).

2. question simple,

si le testeur n'affiche pas de résultats lorsque vous entrez un solde de départ de 500 ou 1000, mais qu'il le fait pour 3000 ou plus, qu'est-ce que cela signifie exactement (cela signifie-t-il que vous faites faillite sur les transactions avec un solde de départ aussi bas ?)

 

Comment sortir de la boucle ?

J'ai ajouté quelques-unes de mes propres alertes et j'ai finalement eu un peu de succès, mais plusieurs fois je me retrouve dans une boucle d'alerte sans fin et la seule façon de la rompre est de forcer MT4 à se fermer, comment puis-je mettre une pause là-dedans, ou y a-t-il une pause clavier que je peux utiliser ?

Merci pour toute aide concernant mes questions de base.

 

Pourriez-vous me montrer ceci...

La programmation me laisse toujours perplexe...

Je me demande si vous pourriez me guider à travers quelque chose de très basique et me montrer comment le code devrait être pour que cela arrive...

deux moyennes mobiles se croisent... il entre un ordre avec un trailing stop...

//---- input parameters

extern double lots=1.0;

extern int MA1=1;

extern int MA2=5;

extern int trailingstop=8;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+
 

J'ai utilisé cet utilitaire et j'ai créé cette.....

//+------------------------------------------------------------------+

//| This MQL is generated by Expert Advisor Builder |

//| http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/ |

//| |

//| In no event will author be liable for any damages whatsoever. |

//| Use at your own risk. |

//| |

//| Please do not remove this header. |

//+------------------------------------------------------------------+

#property copyright "Expert Advisor Builder"

#property link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = False;

extern double Lots = 1.0;

extern int Slippage = 0;

extern bool StopLossMode = False;

extern int StopLoss = 10;

extern bool TakeProfitMode = False;

extern int TakeProfit = 8;

extern bool TrailingStopMode = True;

extern int TrailingStop = 10;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

int BarCount;

int Current;

bool TickCheck = False;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit() {

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

//+------------------------------------------------------------------+

//| Variable Begin |

//+------------------------------------------------------------------+

double Buy1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Buy1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Sell1_1 = iClose("EURUSD", PERIOD_M1, Current + 0);

double Sell1_2 = iMA("EURUSD", PERIOD_M1, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

//+------------------------------------------------------------------+

//| Variable End |

//+------------------------------------------------------------------+

//Check position

bool IsTrade = False;

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

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

//+------------------------------------------------------------------+

//| Signal Begin(Exit Buy) |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Signal End(Exit Buy) |

//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

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

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

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

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

//+------------------------------------------------------------------+

//| Signal Begin(Exit Sell) |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Signal End(Exit Sell) |

//+------------------------------------------------------------------+

if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

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

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//Trailing stop

if(TrailingStopMode && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

//+------------------------------------------------------------------+

//| Signal Begin(Entry) |

//+------------------------------------------------------------------+

if (Buy1_1 > Buy1_2) Order = SIGNAL_BUY;

if (Sell1_1 < Sell1_2) Order = SIGNAL_SELL;

//+------------------------------------------------------------------+

//| Signal End |

//+------------------------------------------------------------------+

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

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

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

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

}

}

//Sell

if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);

if(Ticket > 0) {

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

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

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

} else {

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

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}

if (!EachTickMode) BarCount = Bars;

return(0);

}

//+------------------------------------------------------------------+

Le problème est que lorsqu'il est exécuté dans le testeur de stratégie, il ne donne aucun résultat.

 

Oh, j'ai trouvé ! Merci beaucoup pour votre tutoriel.

 
skorcht:
J'ai deux questions simples, je pense...

comment puis-je faire en sorte que les bougies heiken ashi aient une épaisseur de 5 par défaut au lieu de 3 ? à chaque fois que j'ouvre un nouveau graphique, elles reviennent à 3.

De même, comment puis-je faire une marque au-dessus ou au-dessous de la bougie en fonction de la valeur d'un indicateur RSI ?

Je comprends un peu la programmation mais je ne connais pas la syntaxe de tout cela... alors faites comme si je ne savais rien.

Merci beaucoup. Si je découvre quelque chose, je le posterai.

PS : ce constructeur de conseillers experts est très bien, mais existe-t-il aussi un constructeur d'indicateurs ? ce serait génial !

J'ai seulement réparé le Heiken Ashi.

Dossiers :
 

Nouveau - Questions - Besoin d'aide

Je suis nouveau sur ce forum. J'aimerais savoir si quelqu'un peut me donner des informations sur la valeur de la section Elite (autre que l'argumentaire de vente avec pratiquement aucune information sur le lien ci-dessus).

J'ai également essayé de soumettre une question à partir de la page Web vers laquelle le lien ci-dessus m'a conduit, mais le formulaire continue de montrer qu'un des champs est vide. Ce champ est le champ Priorité et il n'y a rien dans la liste déroulante (tout est vide) et il n'y a aucun moyen pour moi d'avoir une valeur dans ce champ. Je ne peux donc pas soumettre de questions de cette manière.

DD

 

Quelqu'un d'autre a-t-il rencontré ce problème ? Je fais un backtesting de mon système en utilisant les données d'Alpari, je reçois l'erreur 4107 prix invalide et 131 volume invalide. Le 4107 est généré parce que le prix qu'il obtient est supérieur de 4 chiffres décimaux à celui de la paire de devises. Je suis surpris d'obtenir 4107 car le prix que je passe à OrderSend() est le Bid et le Ask prédéfinis. J'ai également ajouté un Commentaire(Bid, " ", Ask) ; avant l'OrderSend() pour voir ce que Bid et Ask retournaient. Et sur le Comment(), la précision décimale était correcte, mais OrderSend() générait toujours l'erreur. J'ai fini par assigner la valeur de Bid/Ask à une variable et utiliser NormalizeDouble() sur la variable puis la passer à OrderSend() et cela fonctionne.

Cependant, j'obtiens toujours l'erreur 131 et je ne connais pas de solution pour y remédier.

PipChick, personnellement, je ne pense pas que cela vaille la peine d'entrer dans la section élite.

 

Nouveau venu.

Je connais un peu le c++ mais j'ai du mal avec un code très basique.

Ce que je veux :

Le prix est de 1.2788. S'il monte de 10 pips, je veux acheter. S'il baisse de 10 pips, je veux vendre.

Est-ce que j'ai le bon code ?

OrderSend(Symbol(),OP_BUYSTOP,1,Ask+10*Point,slippage,

(Ask+10*Point)-10*Point,

( Ask+10*Point)+200*Point, "Commentaire de mon ordre",0,0,Vert) ;

OrderSend(Symbol(),OP_SELLSTOP,1,Bid-10*Point,slippage,

(Bid-10*Point)+10*Point,

(Bid -10*Point)-200*Point, "Commentaire de mon ordre",0,0,Vert) ;

J'ai lu http://www.metatrader.info/node/34 mais je suis perdu. Merci de votre patience.

 

Bonjour,

Mon problème : MT3,

Il ne fonctionne pas. Pourquoi ?

Merci, Bongo

sell=false ;

buy=false ;

if ((C[1]>O[1])<O[0]) then { buy=true ; sell=false ; }

if ((C[1]O[0]) then { sell=true ; buy=false ; }

Raison: