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

 
Pouvez-vous me dire pourquoi je ne parviens pas à réinstaller le terminal de la 432e build à la 438e build proposée ? Je reçois une erreur lors du téléchargement du fichier MetaEditor.exe et l'installation est interrompue. Quel est le problème et que dois-je faire ?
 
sergeev:

alors la fonction OrderLots.


Je n'arrive pas à comprendre cette fonction, aidez-moi avec un exemple :)

il est dit "L'ordre doit être présélectionné à l'aide de la fonction OrderSelect()" comment puis-je sélectionner tous les ordres ouverts de la même direction ?

 
Elektronik:


Je ne comprends pas cette fonction, aidez-moi avec un exemple :)

il est dit "L'ordre doit être présélectionné avec OrderSelect()" comment puis-je sélectionner tous les ordres ouverts de la même direction ?

Il n'y a pas moyen. Seulement dans une boucle passant par un par un avec OrderSelect().

 

Pouvez-vous me dire s'il y a un script de stop loss qui doit être inséré dans cet EA ?

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
Dossiers :
 

Comment puis-je réduire le nombre de décimales sans arrondir ?

(DoubleToStr(NormalizeDouble(0.109,2),2)) ; = 0.11 et 0.10

 
Elektronik:

Comment puis-je réduire le nombre de décimales sans arrondir ?

(DoubleToStr(NormalizeDouble(0.109,2),2)) ; = 0.11 et 0.10

Il existe un million de façons de procéder, par exemple en utilisant les fonctions de chaîne de caractères pour trouver l'emplacement d'un point et tronquer une chaîne de caractères d'un caractère de plus. Mais s'il existe une solution intégrée toute prête, pourquoi devrions-nous inventer des problèmes de toutes pièces ? Il suffit de changer les deux en un et c'est tout.
 
Reshetov:
Il existe un million de façons de procéder, par exemple en utilisant des fonctions de chaîne de caractères pour trouver l'emplacement d'un point et tronquer la chaîne de caractères un caractère au-delà. Mais s'il existe une solution toute faite, prête à l'emploi, pourquoi inventer des problèmes ?


veuillez suggérer une solution toute faite :)

 
Elektronik:


dites-moi s'il s'agit d'une solution toute faite :)

(DoubleToStr(NormalizeDouble(0.109,1))
 

Si elle n'est pas arrondie, juste celle-là :

Reshetov с помощью строковых функций найти местоположение точки и обрезать строку на один символ далее нее

 

Aidez-moi à comprendre ce qui ne va pas :

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

//| AAAA.mq4 |

//| |

//| |

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

#property copyright ""

#lien de propriété ""


extern string TimeStart = "00:00" ; //heure de début de la période de contrôle

extern string TimeEnd = "00:00" ; //heure de fin de la période de contrôle.


extern double LOT = 0.01 ; // lot

extern int Magic = 777 ; // magie



double marga,Lot,SL,TP ; // variables de marge, lot, stop loss et take profit saisies

int Total,Orders,tipOrders,TradeDey ; // type de variables, type d'ordre, jour de négociation.


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

//| fonction de l'Expert Advisor |

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

int start() // Fonction de démarrage d'initialisation

{

datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")) ; // paramètres de départ //

datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeEnd, ":00")) ; // Paramètres de fin///



Total=0 ; // S'il n'y a pas de commande

for(int i=1 ; i<=OrdersTotal() ; i++) // Boucle de commande

{

if (OrderSelect(i-1,SELECT_BY_POS)==false) // S'il n'y a pas d'ordres au marché

{

si //If :

{

int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false) ; // recherche de la barre au début de la période de contrôle sur m1

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false) ; //recherche de la fin de la période de contrôle à la barre m1

double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)) ; //la valeur de prix la plus élevée au cours d'une période donnée

double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)) ; //la valeur de prix la plus basse au cours de la période

}

if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Paramètres d'affichage graphique

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0, 0,0) ;

ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID) ;

ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue) ;

ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true) ;

ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start) ;

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price) ;

ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End) ;

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price) ;

}

if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //conditions pour placer un ordre en attente BUY

NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue) ;

si (Bid>Max_Price)

Comment("L'ordre en attente ne peut pas être placé sur l'offre") ;

if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //conditions pour placer l'ordre en attente SELL

NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue) ;

si (Bid<Max_Price)

Comment("L'ordre en attente ne peut pas être placé sur SELL") ;

}

retour ;

}

Impossible à compiler. Sinon, il devrait placer deux ordres en attente vers le haut et vers le bas de la fourchette.

Raison: