[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 158

 
Xaoss1990:

Au secours, s'il vous plaît... J'ai lutté pendant des jours....

Où est le code ? Comment puis-je aider ?
 
Roger:
Où est le code ? Comment puis-je aider ?

Voici la partie du code où nous faisons des affaires :

//+------------------------------------------------------------------+
//+----------------------CLOSE A POINT---------------------+
//+------------------------------------------------------------------+
if (POINT_BUY_M15 >= Strgh_UP_M15 &&& POINT_BUY_H1 >= Strgh_UP_H1 && POINT_BUY_H4 >= Strgh_UP_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_BUY, lots, Ask, 5, 0, 0, "Ma commande #", 111, 0, Blue) ;
if(ticket < 0)
{
Print("Commande non définie. Erreur - #",GetLastError()) ;
return(0) ;
}
}

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber() ;

if (POINT_BUY_M15 < Strgh_UP_M15 || POINT_BUY_H1 < Strgh_UP_H1 || POINT_BUY_H4 < Strgh_UP_H4 && OrdersTotal() == 1 && Magic == 111 && OrderType( ) == 0)
{
close = 1 ;
}
if (close == 1)
{
if (OrderClose(OrderTicket(), lots, Bid, 5, Yellow) == true) Alert("OrderTicket() = ", OrderTicket(), ", lots = ", lots, ", Bid = ", Bid) ;
else Print ("Stop not set ;)

}

//+------------------------------------------------------------------+
//+----------------------CONCLAIM SALE---------------------+
//+------------------------------------------------------------------+
if (POINT_SELL_M15 >= Strgh_DOWN_M15 && POINT_SELL_H1 >= Strgh_DOWN_H1 && POINT_SELL_H4 >= Strgh_DOWN_H4 && OrdersTotal() == 0)
{
ticket = OrderSend(Symbol(), OP_SELL, lots, Bid, 5, 0, 0, 0, 0, "My order #", 222, 0, Green) ;
if(ticket < 0)
{
Print("Order not set. Erreur - #",GetLastError()) ;
return(0) ;
}
}
//------------------------------------------------Imprimer les paramètres à sélectionner----------------------------------------------------
//Print("Sell M15 = ", POINT_SELL_M15, ", Sell H1 = ", POINT_SELL_H1, ", Sell H4 = ", POINT_SELL_H4, ", order number = ", ticket) ;
//------------------------------------------------Печать параметров на выбор----------------------------------------------------

//+------------------------------------------------------------------+
//+-------------------------СТАВИМ СПОП ЛОСС-------------------------+
//+------------------------------------------------------------------+
OrderSelect(0, SELECT_BY_POS, MODE_TRADES);
Magic = OrderMagicNumber() ;

if (POINT_SELL_M15 < Strgh_DOWN_M15 || POINT_SELL_H1 < Strgh_DOWN_H1 || POINT_SELL_H4 < Strgh_DOWN_H4 && OrdersTotal() == 1 && Magic == 222 && OrderType( ) == 1)
{
close = 1 ;
}
if (close == 1)
{
OrderClose(OrderTicket(), lots, Ask, 5, Red) ;
}

 
Ce n'est pas la partie du code où il pourrait y avoir une erreur.
 
Roger:
Ce n'est pas la partie du code où il pourrait y avoir une erreur.

em.... et le reste du code calcule les valeurs ( POINT_BUY_M15, POINT_BUY_H, POINT_BUY_H4, POINT_SELL_M15, POINT_SELL_H, POINT_SELL_H4 ) pour faire des trades, cela fonctionne correctement... j'ai vérifié. C'est simple : ....

 
Si l'erreur était ici, les journaux diraient "Stop not set", mais ce n'est pas le cas.
 
Veuillez me conseiller. Un ordre a été ouvert par une certaine condition et fermé par un chalut. Comment puis-je faire en sorte qu'une position ne soit pas ouverte à nouveau sur cette bougie si la condition est vraie.
 

Une condition dans la fonction init est en cours de vérification :

...
extern int proc_zahlest=50;

int init() 
{
if (proc_zahlest>100)
{
Alert("Параметр proc_zahlest д.б. <100% !!!");
}
return(0);
}

Comment arrêter l'indicateur de fonctionner (empêcher la fonction de démarrage de fonctionner) si proc_zahlest>100

 
prom18:
Veuillez me conseiller. Un ordre a été ouvert par une certaine condition et fermé par un chalut. Comment faire pour qu'une position ne soit plus ouverte sur cette bougie, si la condition est vraie.


Si une seule commande peut être ouverte, il est facile

start()
{
static int newbar;
if(newbar==Time[0])return(0);
if(OrdersTotal()>0)newbar=Time[0];
...
 
Roger:


Si une seule commande peut être ouverte, il est facile

Veuillez expliquer en mots la logique de ce qui est écrit.
 
prom18:
Veuillez expliquer en mots la logique de ce qui est écrit.

Lorsqu'un ordre est ouvert, la variable newbar se voit attribuer la valeur de l'heure d'ouverture de la barre actuelle. Sur les ticks suivants, jusqu'à la nouvelle barre, l'EA sera bloqué. Si l'ordre n'a pas encore été clôturé, l'opération se répète. Et donc nous continuons à le faire jusqu'à ce que l'ordre soit fermé. Ensuite, sur la barre suivante, le conseiller expert est prêt pour de nouvelles ouvertures.
Raison: