Bonjour, j'ai remanié l'EA standard Macd Sample, en ajoutant des capacités multidevises. Le problème est que, même s'il ouvre les transactions en tant que multidevises, il ne les ferme qu'en cas de profit ou de stop suiveur - bien que la fermeture après modification d'une condition soit également écrite dans l'EA. Je demande l'aide de notre communauté :)
//+------------------------------------------------------------------+//| MACD Sample_1.mq4 |//| Corp. |//| http:// |//+------------------------------------------------------------------+externdouble Lots = 0.1;
externdouble TrailingStop = 50;
externdouble MACDOpenLevel=3;
externdouble MACDCloseLevel=2;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+string lSymbol;
int init(){lSymbol=Symbol(); return(0);}
int deinit(){return(0);}
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent; //значения индикаторовdouble SignalPrevious,bid,ask,point,digits;
int cnt, ticket, total; //вычисляемые значения
total=SymbolOrdersTotal(lSymbol);
if(total<1)
{
bid = MarketInfo(lSymbol,MODE_BID);
ask = MarketInfo(lSymbol,MODE_ASK);
point = MarketInfo(lSymbol,MODE_POINT);
digits= MarketInfo(lSymbol,MODE_DIGITS);
// on a chart of less than 100 barsif(Bars<100)
{
Print("bars less than 100");
return(0);
}
// to simplify the coding and speed up access// data are put into internal variables
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
// no opened orders identifiedif(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
// check for long position (BUY) possibilityif(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<=SignalPrevious &&
MathAbs(MacdCurrent)>(MACDOpenLevel*point) )
{
ticket=OrderSend(lSymbol,OP_BUY,Lots,ask,3,0,0,"macd sample new",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()," as ", lSymbol);
}
elsePrint("Error opening BUY order :",GetLastError()," as ", lSymbol);
return(0);
}
// check for short position (SELL) possibilityif(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>=SignalPrevious &&
MacdCurrent>(MACDOpenLevel*point) )
{
ticket=OrderSend(lSymbol,OP_SELL,Lots,bid,3,0,0,"macd sample new",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()," as ", lSymbol);
}
elsePrint("Error opening SELL order : ",GetLastError()," as ", lSymbol);
return(0);
}
return(0);
}
// it is important to enter the market correctly, // but it is more important to exit it correctly... for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==lSymbol) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>=SignalPrevious &&
MacdCurrent>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
else// go to short position
{
// should it be closed?if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
MacdPrevious<=SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
return(0);
}
int SymbolOrdersTotal(string lSymbol)
{
int Res=0;
int total=OrdersTotal();
for (int i=0;i<total;i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()==lSymbol)
{
Res++;
}
}
}
return(Res);
}
// the end.
Les gars, pouvez-vous me dire comment régler ce problème, avant tout allait bien - les rapports étaient sauvegardés dans opera... Maintenant, il s'affiche dans la fenêtre lorsqu'on essaie d'enregistrer un rapport de testeur de stratégie.
Problème résolu. J'ai compris. Mon ordinateur a commencé à ouvrir des fichiers html avec wordpress pour une raison quelconque... Je me suis converti à Opera - tout fonctionne comme il se doit.
Comment corriger l'EA "tradingexpert.mq4" du tutoriel MQL4. Si je voulais ouvrir un nouvel ordre dans cette direction, l'EA attendrait un signal de l'indicateur pour ouvrir dans la direction opposée.
On m'a dit d'utiliser la fonction alias KimIV - "GetTypeLastClosePos()". J'ai essayé de l'appliquer, mais les transactions ne s'ouvrent pas. Veuillez me conseiller sur la manière de corriger l'EA. Voici le code avec mes modifications surlignées en rouge.
J'ai écrit un EA, il n'y a pas d'erreurs, il est testé dans le Strategy Tester, mais il ne peut pas être utilisé sur un compte de démonstration. Quel est le problème ?
Les gars, pouvez-vous me dire comment régler ce problème, avant tout allait bien - les rapports étaient sauvegardés dans opera... Maintenant, il s'affiche dans la fenêtre lorsqu'on essaie d'enregistrer un rapport de testeur de stratégie.
Problème résolu. J'ai compris. Mon ordinateur a commencé à ouvrir des fichiers html avec wordpress pour une raison quelconque... Je me suis converti à Opera - tout fonctionne comme il se doit.
Peut-être que vos fichiers html sont ouverts avec le bloc-notes par défaut ? Essayez de regarder dans le panneau de configuration sous l'onglet "Programme par défaut".
link1: J'ai écrit un EA, il n'y a pas d'erreurs, il est testé dans le Strategy Tester, mais il ne peut pas être utilisé sur un compte de démonstration. Quel est le problème ?
Il existe une branche spéciale pour ce genre de questions ;))
peut-être dans le code il faut ajouter une condition que le compte est une démo
J'ai compris l'astuce, mais je ne peux pas vous montrer le code.
Alors le seul conseil que je puisse vous donner est de mettre des empreintes à tous les endroits potentiellement problématiques, et de nous donner les logs de l'EA non commerciale. À moins, bien sûr, que vous puissiez trouver les empreintes vous-même.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Les gars, pouvez-vous me dire comment régler ce problème, avant tout allait bien - les rapports étaient sauvegardés dans opera... Maintenant, il s'affiche dans la fenêtre lorsqu'on essaie d'enregistrer un rapport de testeur de stratégie.
Problème résolu. J'ai compris. Mon ordinateur a commencé à ouvrir des fichiers html avec wordpress pour une raison quelconque... Je me suis converti à Opera - tout fonctionne comme il se doit.
Bon après-midi. Veuillez conseiller un débutant.
Comment corriger l'EA "tradingexpert.mq4" du tutoriel MQL4. Si je voulais ouvrir un nouvel ordre dans cette direction, l'EA attendrait un signal de l'indicateur pour ouvrir dans la direction opposée.
On m'a dit d'utiliser la fonction alias KimIV - "GetTypeLastClosePos()". J'ai essayé de l'appliquer, mais les transactions ne s'ouvrent pas. Veuillez me conseiller sur la manière de corriger l'EA. Voici le code avec mes modifications surlignées en rouge.
Les gars, pouvez-vous me dire comment régler ce problème, avant tout allait bien - les rapports étaient sauvegardés dans opera... Maintenant, il s'affiche dans la fenêtre lorsqu'on essaie d'enregistrer un rapport de testeur de stratégie.
Problème résolu. J'ai compris. Mon ordinateur a commencé à ouvrir des fichiers html avec wordpress pour une raison quelconque... Je me suis converti à Opera - tout fonctionne comme il se doit.
Peut-être que vos fichiers html sont ouverts avec le bloc-notes par défaut ? Essayez de regarder dans le panneau de configuration sous l'onglet "Programme par défaut".
Veuillez m'indiquer comment écrire la condition "si le dernier type d'ordre fermé était OP_BUY" dans MQL4.
J'ai écrit un EA, il n'y a pas d'erreurs, il est testé dans le Strategy Tester, mais il ne peut pas être utilisé sur un compte de démonstration. Quel est le problème ?
Pour de telles questions, il existe une branche spéciale))))
aha x ))))))
Je me demande qui me répond par télépathie ;)
Peut-être que vous devez ajouter une condition au code, que le compte est une démo
J'ai reçu votre conseil, mais le code, malheureusement, ne peut pas le sortir (
aha x ))))))
et je me demande qui me répond par télépathie ;)
peut-être dans le code il faut ajouter une condition que le compte est une démo
J'ai compris l'astuce, mais je ne peux pas vous montrer le code.