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

 
Artyom Trishkin:

Vous pouvez. Mais faites attention. Pour une position ouverte, il renvoie le prix de clôture. En conséquence : pour acheter - Bid, pour vendre - Ask.

o. Je ne savais pas qu'on pouvait l'utiliser comme ça.

Je pensais que OrderClosePrice() ne pouvait être pris que sur une position fermée.

l'aide ne dit rien à ce sujet)
 
igrok333:
o. Je ne savais pas que ça pouvait être utilisé comme ça.

Je croyais que la fonction OrderClosePrice() ne pouvait être utilisée qu'à partir d'une transaction fermée.

il n'y a rien à ce sujet dans l'aide)

Fonctionnalité non documentée. Mais il y a des conventions. Je ne me rappelle pas lesquelles pour le moment. Vous devez demander à Alexey @Alexey Viktorov - il a écrit sur eux récemment.

 
Artyom Trishkin:

Une possibilité non documentée. Mais il y a des conventions. Je ne me rappelle pas lesquelles pour le moment. Demandez à Alexey @Alexey Viktorov - il a écrit sur eux récemment.

Et ce code ?

La variable n'est-elle pas immédiatement initiée par zéro ?

 void zakritj_vse_sdelki()
 {
 bool pr;
 for (int i=OrdersTotal()-1; i>=0; i--)       
   {                                        
   if(OrderSelect(i,SELECT_BY_POS)==true)
      {   
         if (OrderType()==OP_BUY)    pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_BID), 30 );                              
         if (OrderType()==OP_SELL)   pr=OrderClose(OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(),MODE_ASK), 30 );
         
         if (pr==false) Print("закрытие ордера ", OrderSymbol() ," завершилось с ошибкой #",GetLastError());
         if (pr==true) Print("ордер ", OrderSymbol() , " ЗАКРЫТ");
       }
    }
  } 
 
igrok333:
Et ce code ?

La variable n'est pas immédiatement initialisée à zéro ?

Ne vous fiez pas aux valeurs par défaut. Il est préférable de se préoccuper de sa valeur lors de la déclaration d'une variable locale: bool pr=false ;

En général, il est bien sûr inutile de l'y placer. Il suffit de vérifier ce que la fonction renvoie :

si(!OrderClose()) Print("Bummer") ;

 

Comment connaître le prix en éventail de Fibonacci d'une bougie précédente ? MQL5
ObjectGetValueByTime() ne fonctionne pas, il renvoie 0, puis la bougie haute, puis la bougie basse.

 

@ArtyomTrishkin

Bon après-midi. S'il vous plaît, aidez-moi. Dites-moi ce qui ne va pas avec mon indicateur. Je ne comprends pas pourquoi il ne dessine rien du tout.

https://www.mql5.com/ru/forum/224805#comment_6372281

Dossiers :
indicator.ZIP  21 kb
probability.zip  50 kb
 
Artyom Trishkin:

Il s'agit d'une fonctionnalité non documentée. Mais il y a des conventions. Je ne me rappelle pas lesquelles pour le moment. Je dois demander à Alexey @Alexey Viktorov - il a écrit sur eux récemment.

C'était il y a longtemps... mais j'ai quand même réussi à le trouver. Renat explique en termes clairs pourquoi c'est indésirable. Mais à mon avis, ce n'est pas si mal. Le problème peut survenir lorsque nous recevons une requote à la clôture de la commande. Si nous définissons le prix de l'offre ou de la demande dans la requête, nous pouvons toujours rafraîchir le prix et réessayer. Et dans le cas de la spécification du prix de clôture OrderClosePrice(), nous devrons sélectionner l'ordre à plusieurs reprises afin de rafraîchir les données de l'ordre.

Conclusion : si vous ne pouvez pas, mais que vous en avez vraiment besoin, vous pouvez.

Применение функция OrderClosePrice() к открытым ордерам
Применение функция OrderClosePrice() к открытым ордерам
  • 2006.09.11
  • www.mql5.com
Вопрос к разработчикам: Корректно ли использование данной конструкции: OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0,CLR_NONE) Проверка...
 

Veuillez me conseiller ! Je lis les données d'un fichier CSV, y compris la colonne avec le prix avec le séparateur de place ".". (1.22426) via FileReadString(handle), puis via la fonction StrToDouble, tout est OK. Mais il y a aussi une colonne avec le prix, mais elle est déjà délimitée par "," (1,22426) et StrToDouble ne parvient pas à la lire. Que faire, s'il n'y a pas de possibilité de changer la virgule en point dans le CSV lui-même ?

 
WinProject:

Veuillez me conseiller ! Je lis les données d'un fichier CSV, y compris une colonne avec un prix avec un séparateur de lieu ".". (1.22426) via FileReadString(handle), puis via la fonction StrToDouble, tout est OK. Mais il y a une colonne avec le prix qui est déjà séparé par "," (1,22426) et StrToDouble ne parvient pas à la lire. Que puis-je faire si je ne peux pas changer la virgule en point dans le CSV ?


FileReadString


et vous pouvez le changer de virgule en point :


StringReplace

Remplace toutes les sous-chaînes trouvées dans la chaîne par une séquence de caractères donnée.

intStringReplace(
string&str,//mode dans lequel la substitution sera effectuée.
const stringfind,// recherche la sous-chaîne
const string replacement// sous-chaîne à substituer
) ;

 
Vladislav Andruschenko:

FileReadString


et vous pouvez alors passer de la virgule au point :


StringReplace

Remplace toutes les sous-chaînes trouvées dans la chaîne par une séquence de caractères donnée.

intStringReplace(
string&str,// chaîne à remplacer
const stringfind,// recherche la sous-chaîne
const string replacement// sous-chaîne à substituer
) ;


Merci !) , variable Cena=FileReadString(handle) ; j'insère dans la fonction Separator=StringReplace(Sepa,",",".") ; il écrit erreur "conversion implicite de nombre à chaîne" -

ne veut pas lire la valeur avec le séparateur "," (1,22426) comme une chaîne, et StringReplace ne fonctionne pas. Ou est-ce que je m'y prends mal ?