Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 91
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Vous devez trier par prix, car vous ne pouvez pas chercher par taille, la grille peut être différente, et vous trouverez soit le plus grand soit le plus petit, mais pas le premier ni le dernier
Je veux dire la fonction que Marina a postée.
Le dernier ordre est déterminé par le temps.
Je veux dire la fonction que Marina a postée.
Le dernier ordre est déterminé par le temps.
Parce que je le résume de cette façon
Chers programmateurs ! Aidez-moi à résoudre cette question. Le conseiller expert entre dans une transaction sur M15, mais prend également les conditions de H1. Lorsque les conditions sur H1 sont remplies sur M15, il peut y avoir plusieurs points d'entrée. En fait, le problème est que je veux utiliser uniquement le premier point d'entrée, jusqu'à ce que les conditions sur H1 soient inversées.
k=0 ;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates() ;
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0 ;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++ ;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // achat
Chers programmateurs ! Aidez-moi à résoudre cette question. Le conseiller expert entre dans une transaction sur M15, mais prend également les conditions de H1. Lorsque les conditions sur H1 sont remplies sur M15, il peut y avoir plusieurs points d'entrée. En fait, le problème est que je veux limiter le premier point d'entrée, jusqu'à ce que les conditions sur H1 ne soient pas modifiées en sens inverse.
k=0 ;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates() ;
si(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0 ;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++ ;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // achat
Mais qu'en est-il sans le code ? En particulier, le code n'est pas clair.
Que voulez-vous exactement ? Pas dans l'abstrait, mais exactement ce que vous voulez obtenir.
Chers programmateurs ! Aidez-moi à résoudre cette question. Le conseiller expert entre dans une transaction sur M15, mais prend également les conditions de H1. Lorsque les conditions sur H1 sont remplies sur M15, il peut y avoir plusieurs points d'entrée. En fait le problème est que je veux me limiter au premier point d'entrée, alors que sur H1 les conditions ne changent pas en sens inverse.
k=0 ;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates() ;
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0 ;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) k++ ;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && k==0 && opp != Time[0]) // achat
Un algorithme approximatif :
bool flagH1 = true;
bool flagM15 = true;
if(!flag && flagH1 && flagM15)
{
flag = true;
}
if(!flagH1 && flag)
flag = false;
Et sans le code ? Raison de plus pour ne pas comprendre le code.
Que voulez-vous exactement ? Pas dans l'abstrait, mais exactement ce que vous voulez obtenir.
extern double Lot= 0.1;
extern int stoploss=20;
extern int takeprofit=50;
// если stoploss и / или takeprofit = 0, то отключены.
//if stoploss and/or takeprofit = 0, are disconnected.
extern int Magic = 99999999;
// уникальный номер, кот. советник метит свои ордера и впоследствии работает только с ними. При постановке на разные графики или т/ф, межики должны быть разными
extern int Slipp = 1;
// величина максимально возможного проскальзывания.
// slippage
extern int sec = 2000;
// количество миллисекунд сна советника между повторами отправки торгового поручения в случае неудачи
// number of milliseconds sleep of the EA between repetitions of sending a trade assignment in case of failure
//============================= Stochastic
input int InpKPeriod=13; // K Period
input int InpDPeriod=3; // D Period
input int InpSlowing=3; // Slowing
//============================= Stochastic
input int InpKPeriod1=13; // K Period
input int InpDPeriod1=3; // D Period
input int InpSlowing1=3; // Slowing
int A, a, b, i, ii, o;
double SL, TP, op, stH0, stH1, stM0, stM1;
bool c;
datetime OldTime, Time0, opp;
int init()
{
OldTime = iTime(NULL,Period(),0);
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//====================================================================
stH0 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,0);
stH1 = iStochastic(NULL,60,InpKPeriod,InpDPeriod,InpSlowing,MODE_EMA,1,MODE_MAIN,1);
stM0 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,0);
stM1 = iStochastic(NULL,15,InpKPeriod1,InpDPeriod1,InpSlowing1,MODE_EMA,1,MODE_MAIN,1);
//====================================================================
b=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 <= 20 && stM0 > 20 && stH0 > 70 && b==0 && opp != Time[0]) // покупка
{
opp = Time[0];
RefreshRates();
op = Ask;
A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
o = GetLastError();
while (A < 0 && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
op = Ask;
A = OrderSend (Symbol(), OP_BUY, Lot, Ask, Slipp, 0, 0, NULL, Magic, 0, Blue);
o = GetLastError();
}
SL = op-stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op+takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
if (SL != 0 || TP != 0)
{
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
while (c == false && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
} }
}
//---------------------------------------------------------------------------------------------------------+
b=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
RefreshRates();
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES) == true) a = 0;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) b++;
}
if( stM1 >= 80 && stM0 < 80 && stH0 < 30 && b==0 && opp != Time[0]) // продажа
{
opp = Time[0];
RefreshRates();
op = Bid;
A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
o = GetLastError();
while (A < 0 && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
op = Bid;
A = OrderSend (Symbol(), OP_SELL, Lot, Bid, Slipp, 0, 0, NULL, Magic, 0, Red);
o = GetLastError();
}
SL = op+stoploss*Point;
if (stoploss == 0) SL = 0;
TP = op-takeprofit*Point;
if (takeprofit == 0 ) TP = 0;
if (SL != 0 || TP != 0)
{
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
while (c == false && o != 4109 && o != 132 && o != 133)
{
Print("Error =", o);
Sleep(sec);
RefreshRates();
if(OrderSelect (A, SELECT_BY_TICKET) == true) a = 0;
c = OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0, Green);
o = GetLastError();
} }
}
return(0);
}
//+------------------------------------------------------------------+
Artyom bonjour ! L'objectif est de limiter l'entrée sur M15 à un (premier signal) tant qu'il y a un signal sur H1.
Bonjour, chers membres du forum. Existe-t-il un moyen de définir la valeur du stop suiveur intégré à Metatrader4 depuis l'EA ? C'est cela qui m'intéresse et non l'ajout à l'EA d'un code pour l'exécution d'un trailing stop indépendant du trailing stop intégré.
Merci d'avance pour les réponses.
Bonjour, chers membres du forum. Existe-t-il un moyen de définir la valeur du stop suiveur intégré à Metatrader4 depuis l'EA ? C'est cela qui m'intéresse et non l'ajout à l'EA d'un code pour l'exécution d'un trailing stop indépendant du trailing stop intégré.
Merci d'avance pour les réponses.