ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests
Répondre • Page 1 sur 1

besoin d'aide en mql4

par marko » 09 févr. 2019 13:04

Bonjour à tous,

Je suis débutant en codage mql4 et en codage informatique en général.
J'essaye de développer un code simple sur le stochastic et lorsque mon signal apparaît, un ordre s'ouvre.
Mon souci est qu' a un ordre est passé à chaque tick donc je me retrouve parfois avec 12 ordres ouverts en meme temps.
J'aimerais qu'un seul ordre ne s'ouvre lorsque mon signal apparaît.
Pouvez-vous m'aider?
Merci d'avance pour vos réponses.

Bon trading à tous

Re: besoin d'aide en mql4

par Benoist Rousseau » 09 févr. 2019 13:27

Bonjour , avant de participer au forum, il faut se présenter dans présentation des membres comme l'exige la nétiquette. Cela permet aux membres de mieux répondre à tes questions en connaissant ton niveau, ton expérience et ton compte sera débloqué.

Re: besoin d'aide en mql4

par VB6backtester » 10 févr. 2019 12:29

Bonjour à toi,
Tu dois toujours avant d'envoyer des ordres, vérifier ce qui est déjà en cours avec par exemple :

total = 0;
for (n=0; n < OrdersTotal(); n++) {
if (OrderSelect(n, SELECT_BY_POS)) {
if ( (OrderSymbol()==Symb)&&(OrderMagicNumber()==magic) )
total++;
}
}

Ensuite pour passer un ordre, je te conseille de faire de façon asynchrone en vérifiant si l'ordre est passé ou pas. Le flag (Osellticket sert d'indicateur).

tp = NormalizeDouble(ask - extremGain * myPoint, myDigit);
Print(TimeCurrent()," - Sell ",Bid," Lots=",IntegerToString(lot));
OSellticket =OrderSend(Symbol(), OP_SELL, lot, Bid, 5, stoploss, tp,"Sell4817", magic, 0,Red);
if(OSellticket != -1) {
OSellFlag=0;
} else
Print("Error opening SELL order : ",GetLastError());

Bye

Re: besoin d'aide en mql4

par ano77 » 10 févr. 2019 17:07

Oui, je confirme les infos de V6

Toujours lire les ordres en cours ainsi
for(int i=0; i<OrdersTotal(); i++) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true) {
if(OrderSymbol() == Symbol() && OrderMagicNumber() == magicnumber && OrderType() == OP_BUY) {
.......................................................................
aux_buys++;}

Dans cet exemple aux_buys te donnera le nombre d'ordres buy ouvert. Suffit de conditionner l'ouverture d'un ordre à ce que cette valeur soit <=0.

A toi de faire pour les sells...

Et voilà :)

Re: besoin d'aide en mql4

par marko » 11 févr. 2019 19:08

Super, merci à vous deux, je vai essayer ça !!!

Bye

Re: besoin d'aide en mql4

par marko » 27 févr. 2019 18:56

Hello les programmeurs!!!
Un problème résolu laisse la place à un autre...
Quelqu’un pourrait-il m’aider, je galère pour programmer un stop suiveur qui avance de 1 pour 1 au fur et à mesure que le prix évolue
Merci d’avance pour votre aide

Re: besoin d'aide en mql4

par Philippe56380 » 14 mars 2019 22:55

je peux te donner l'astuce en MQL5:

void MoveToBreakEven()
{
//--- reset the error value
ResetLastError();

// Normalization of the digits
double nDigits = CalculateNormalizedDigits();

// We calculate the ask price
double ask = NormalizeDouble(SymbolInfoDouble(Symbol(), SYMBOL_ASK), Digits());
// We calculate the Bid price
double Bid = NormalizeDouble(SymbolInfoDouble(Symbol(), SYMBOL_BID), Digits());

//--- number of current pending orders
uint total = PositionsTotal();

double ticksize = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);
double pips = 0.0;

if (ticksize == 0.00001 || ticksize == 0.001)
pips = ticksize * 10;
else
pips = ticksize;

for(uint i = 0; i < total; i++)
{
ulong ticket = PositionGetTicket(i);
if(PositionSelectByTicket(ticket))
{
// Check we are on the right symbol
if (PositionGetString(POSITION_SYMBOL) != Symbol())
continue;
//--- check Expert Magic number
if(PositionGetInteger(POSITION_MAGIC) != Expert_MagicNumber)
continue;

//Prepare the prices
double TakeProfitPrice = 0;
double StopLossPrice = 0;
double OpenPrice = PositionGetDouble(POSITION_PRICE_OPEN);
double positionTakeProfit = PositionGetDouble(POSITION_TP);
double positionStopLoss = PositionGetDouble(POSITION_SL);

// Get position type
long positionType = PositionGetInteger(POSITION_TYPE);

if (positionType == POSITION_TYPE_BUY)
{
if ((Bid - positionStopLoss) > (pips * WHENTOMOVETOBE))
{
positionStopLoss = Bid - (pips * WHENTOMOVETOBE);
positionTakeProfit = Bid + (pips * TakeProfit);

if (!m_trade.PositionModify(ticket, positionStopLoss, positionTakeProfit))
{
Comment(__FUNCTION__,", #1 => false. Result Retcode: ",m_trade.ResultRetcode(),", LastError: ", GetLastError(),", description of result: ",m_trade.ResultRetcodeDescription());
}
}
}
else if (positionType == POSITION_TYPE_SELL)
{
if ((positionStopLoss - ask) > (pips * WHENTOMOVETOBE))
{
positionStopLoss = ask + (pips * WHENTOMOVETOBE);
positionTakeProfit = ask - (pips * TakeProfit);

if (!m_trade.PositionModify(ticket, positionStopLoss, positionTakeProfit))
{
Comment(__FUNCTION__,", #1 => false. Result Retcode: ",m_trade.ResultRetcode(),", LastError: ", GetLastError(),", description of result: ",m_trade.ResultRetcodeDescription());
}
}
}
}
}
}

Sujets similaires
Besoin d'aide en mql4
par Amarantine » 22 août 2022 13:08 (5 Réponses)
Aide Technique MQL4
par Gacanga » 06 oct. 2017 17:43 (2 Réponses)
Aide mql4, grrr !!
par BilouZ36 » 26 oct. 2017 15:40 (5 Réponses)
Aide dev indicateur mql4
par pingoo67 » 04 mars 2023 11:05 (0 Réponses)
Recherche dev MQL4
par Amarantine » 18 sept. 2014 11:59 (2 Réponses)
Programmation en MQL4 : récupérer le contenu d'un email/SMS
par oscar » 15 févr. 2017 18:18 (3 Réponses)
Un seul trade par bougie - mql4
par jefsar » 24 mars 2017 11:31 (4 Réponses)
MQL4 - MagicNumber et Trailing Stop
par Gacanga » 04 avr. 2017 12:39 (5 Réponses)
Calculer la moyenne mobile du rsi en mql4 dans un indicateur
par JFLB » 09 nov. 2017 12:27 (4 Réponses)
MQL4 problème syntaxe!!
Fichier(s) joint(s) par Se7enRise » 19 févr. 2018 16:08 (19 Réponses)