Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1618

 
Vitaly Muzichenko #:

Vous pouvez le faire de cette façon, sans utiliser les bibliothèques

Merci !

 
MakarFX #:
Le marché est maintenant fermé, TimeCurrent() ne change pas. Vérifiez la cryptographie, elle fonctionne le week-end.

Pourquoi le rendre dépendant des tiques ? Le bouton ne doit pas dépendre d'eux.

 

Bonjour.

Je veux tester certaines stratégies, personne ne les a depuis plus de 2 mois.

Je comprends que les volumes sont importants, c'est pourquoi les courtiers ne permettent pas le téléchargement. Seulement les paires de base.

Peut-être que quelqu'un en a encore dans les dossiers du serveur ? Au moins pendant un an.

 
Le problème est résolu.
 
Bonjour ! décidé d'écrire ici ... peut-être quelqu'un va répondre !!! Dans CodeBase ... il ya longtemps, il a été ... a été mis en place l'indicateur ... ni le nom ne me souviens pas ... ni l'auteur. L'essence de ce programme était la suivante ... Définir manuellement la ligne horizontale ... et il montre combien de fois le prix a traversé la ligne dans un sens et dans l'autre ... et montre des statistiques sur ce prix ... J'ai parcouru deux fois 66 pages mais je ne l'ai pas trouvé ... quelqu'un se souvient-il ou en a-t-il ! S'IL VOUS PLAÎT, vous en avez vraiment besoin ! !!
 
Sinax #:
Bonjour ! décidé d'écrire ici ... peut-être quelqu'un va répondre !!! Dans CodeBase ... il ya longtemps, il a été ... a été mis en place l'indicateur ... ni le nom ne me souviens pas ... ni l'auteur. L'essence de ce programme était la suivante ... Définir manuellement la ligne horizontale ... et il montre combien de fois le prix a traversé la ligne dans un sens et dans l'autre ... et montre des statistiques sur ce prix ... J'ai parcouru deux fois 66 pages mais je ne l'ai pas trouvé ... quelqu'un se souvient-il ou en a-t-il ! S'IL VOUS PLAÎT, j'en ai vraiment besoin ! !!
Pas ça :
?

 
Sergey Gridnev #:
Pas celui-là :
?

Non, il ne l'est pas... celui pour MT4 l'était... Merci))))

 

Bonne journée à tous !!!!

Pouvez-vous s'il vous plaît m'aider à écrire du code pour une grille EA, le principe de fermeture de la grille est simple tous les ordres avec un bénéfice sur tous les ordres avec une perte plus un bénéfice du prix d'équilibre.

J'essaie de réaliser une idée pour faire la moyenne et fermer seulement les ordres min et max dans la grille à un certain niveau de drawdown, réduisant ainsi le niveau de drawdown.

Voici une partie du code pour l'ouverture des ordres groupés :

si (CountTrade() < MaxOrders)

{

int order_type = FindLastOrderType() ;

si (order_type == OP_BUY)

{

prix = FindLastOrderPrice(OP_BUY) ;

if(Ask<= prix - (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2) ;

ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, slip, 0, 0, "Group Order", Magic, 0, Blue) ;

si (ticket < 1)

Print ("Erreur d'ordre d'achat") ;

Modifier les ordres (OP_BUY) ;

}

}

si (order_type == OP_SELL)

{

prix = FindLastOrderPrice(OP_SELL) ;

if(Bid>= prix + (NormalizeDouble(ATR/ DivisorVolatility/Point, 0)*Point)))

{

lastlot = NormalizeDouble(Lots()*MathPow( MultiplierParameter, OrdersTotal()), 2) ;

ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, slip, 0, 0, "Group Order", Magic, 0, Red) ;

si (ticket < 1)

Print ("Erreur de commande de vente !") ;

Modifier les commandes (OP_SELL) ;

}

}

}

Voici la partie du code où intervient la commande de modification des ordres. Ici j'ai croisé la modification des ordres par "Tous les ordres avec profit et tous les ordres avec perte" et "Moyenne des ordres min et max".

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

//| Modification de la commande |

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

void ModifyOrders(int otype)

{

double

BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0,

SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0 ;


int

BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0 ;


double

op = 0, lt = 0, order_lots = 0 ;


int

tk = 0, b = 0, s = 0 ;

prix = 0;tp = 0 ;


for(int i = OrdersTotal() - 1 ; i >= 0 ; i--)

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

si(OrderMagicNumber() == Magique)

if(OrderSymbol() == Symbol() && OrderType() == otype)

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

lt = NormalizeDouble(OrderLots(), 2) ;

tk = OrderTicket() ;

si(otype == OP_BUY)

{

b++ ;

si(op > BuyPriceMax || BuyPriceMax == 0)

{

BuyPriceMax = op ;

BuyPriceMaxLot = lt ;

BuyPriceMaxTic = tk ;

}

si(op < BuyPriceMin || BuyPriceMin == 0)

{

BuyPriceMin = op ;

BuyPriceMinLot = lt ;

BuyPriceMinTic = tk ;

}

}

if(otype == OP_SELL)

{

s++ ;

si(op > SelPriceMax || SelPriceMax == 0)

{

SelPriceMax = op ;

SelPriceMaxLot = lt ;

SelPriceMaxTic = tk ;

}

si(op < SelPriceMin || SelPriceMin == 0)

{

SelPriceMin = op ;

SelPriceMinLot = lt ;

SelPriceMinTic = tk ;

}

}

si (otype == OP_BUY || otype == OP_SELL)

{

prix += OrderOpenPrice() * OrderLots() ;

order_lots += OrderLots() ;

}

}

//*************************************************************//

double AwerageBuyPrice = 0, AwerageSelPrice = 0, avg_price = 0 ;

if(b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

AwerageBuyPrice = NormalizeDouble((BuyPriceMax*BuyPriceMaxLot + BuyPriceMin*BuyPriceMinLot)/

(BuyPriceMaxLot + BuyPriceMinLot) + TakeProfitMinMaxOrder* Point(), Digits()) ;

si(s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot)/

(SelPriceMaxLot + SelPriceMinLot) - TakeProfitMinMaxOrder* Point(), Digits()) ;

si (Drawdown < DrawdownClosingMinMaxOrder)

avg_price = NormalizeDouble(price / order_lots, Digits) ;

//*************************************************************//

for(int i = OrdersTotal() - 1 ; i >= 0 ; i--)

if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

si(OrderMagicNumber() == Magique)

si(OrderSymbol() == Symbol())

{

op = NormalizeDouble(OrderOpenPrice(), Digits())

tp = NormalizeDouble(OrderTakeProfit(), Digits())

lt = NormalizeDouble(OrderLots(), 2) ;

tk = OrderTicket() ;


if(otype == OP_BUY && b >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)

if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))

Print("OrderModify error #", GetLastError()) ;


if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Print("Erreur OrderModify #", GetLastError())

}

if(otype == OP_SELL && s >= 2 && Drawdown >= DrawdownClosingMinMaxOrder)

{

if(tk == SelPriceMaxTic || tk == SelPriceMinTic)

if(Ask > AwerageSelPrice && tp != AwerageSelPrice)

if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))

Print("OrderModify error #", GetLastError()) ;


if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)

if(!OrderModify(tk, op, 0, 0, 0, clrRed))

Print("OrderModify error #", GetLastError()) ;

}

si (Drawdown < DrawdownClosingMinMaxOrder)

if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits) ;

if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits) ;

{

if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))

Print("Commandes modifiées avec succès !") ;

else Print("Erreur de modification de commande !") ;

}

}

}

Le résultat est le suivant : la modification des ordres groupés jusqu'au niveau de drawdown autorisé se fait de manière normale et après le niveau de drawdown autorisé, ils sont moyennés et clôturent min et max comme prévu,

Mais lorsque le drawdown a diminué, le nouveau TakeProfit ne veut pas être défini.

Voici le journal avec les codes d'erreur.

Si vous ne savez pas quoi faire avec cette erreur, ne vous inquiétez pas, je vais vous aider !

 
EVGENII SHELIPOV #:

Bonne journée à tous !!!!

Utilisez

 
MakarFX #:

Utilisez

Pouvez-vous être plus précis ?

Raison: