Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 248

 
Oh, tu es un héros, Junko, qui répare silencieusement le code et... C'est comme si c'était ce qui s'était passé. Tu vas me dire que c'est ce qui s'est passé, et que je te raconte des conneries ? Oui ?
 
Roger:
Pourquoi lisez-vous à partir d'un fichier ? Vous avez le fichier entier dans la variable ReadCBOE, vous pouvez l'utiliser,

Pas de problème avec ça, mais toute la ligne ne rentre pas dans la variable ! MT a ses propres restrictions sur la longueur de la ligne, alors que le fichier est écrit à l'info du site, et le fichier se termine </body></html> alors que la ligne - s'interrompt à 65k caractères (environ). Dans tous les cas, la taille finale du fichier est de 69KB.

 
Integer:

Lire l'article. En fait, il n'y a aucun moyen dans la nature de lire une ligne donnée d'un fichier, vous devez lire toutes les lignes jusqu'à une ligne donnée... L'article contient une fonction permettant de lire un fichier texte ligne par ligne.

Wow, merci, je ne l'ai pas trouvé moi-même, j'aurais dû chercher par balise HTML.
 
Zhunko:

C'est comme ça que ça marche. Je l'ai vérifié.


Quoi qu'il en soit, il y a une erreur, et la voici :
if (FileWriteString(hFile, sTextWrite, 10000) < 0)
écrit TOUTE la chaînedans le fichier, sans tenir compte des 3 paramètres de la fonction, qui est responsable de la taille de la chaîne.
 
Integer:
Tu es une héroïne, Junko, qui répare silencieusement le code et... comme si c'était ce qui s'était passé. Vous allez me dire que c'était comme ça, et que je ne le suis pas ? Ah oui ?

Réparé quoi ? Vérification de NULL ? C'est bien. Qu'est-ce qu'il y a ? Si je trouve une erreur, je la répare.

Tu ne le répares pas. J'ai vu ça. Même quand tu l'as fait remarquer, tu ne l'as pas corrigé. Vous aimez faire des erreurs et ne pas les corriger ? Et tu t'en vantes ?

=============

Je suis excusé. Je n'écris presque jamais en MQL4. J'ai écrit tout ce dont j'ai besoin. Je ne travaille pas avec des descripteurs et des erreurs. Ils ont été écrits il y a longtemps, encapsulés et oubliés.

En C++, les descripteurs sont généralement comparés à NULL.

mzk_3om6u:

De toute façon, il y a une erreur, et ici c'est
if (FileWriteString(hFile, sTextWrite, 10000) < 0)
écrire TOUTE la chaîne de caractères au fichier, sans tenir compte des 3 paramètres de la fonction qui sont responsables de la taille de la chaîne.
Ce n'est pas le cas. Ça marche. C'est juste que ce code n'écrase pas le fichier. Vous regardez un fichier qui a déjà été écrit. Ça n'a pas l'air de fonctionner. En fait, il a été écrit là où il devait l'être, mais la suite de la ligne est toujours l'ancienne.

Écrivez autre chose, ou supprimez le fichier, ou mettez un drapeau d'écriture seule dessus.

 
Zhunko:

Réparé quoi ? Vérification de NULL ? C'est bien. Qu'est-ce qu'il y a ? Si je trouve une erreur, je la répare.

Tu ne le répares pas. J'ai vu ça. Même quand tu l'as fait remarquer, tu ne l'as pas corrigé. Vous aimez faire des erreurs et ne pas les corriger ? Et tu t'en vantes ?

=============

Je suis excusé. Je n'écris presque jamais en MQL4. J'ai écrit tout ce dont j'ai besoin. Je ne travaille pas avec des descripteurs et des erreurs. Ils ont été écrits il y a longtemps, encapsulés et oubliés.

En C++, les descripteurs sont généralement comparés à NULL.

Ce n'est pas le cas. Ça marche. C'est juste que ce code n'écrase pas le fichier. Vous regardez un fichier qui a déjà été écrit. Ça n'a pas l'air de fonctionner. En fait, il a été écrit là où il devait l'être, mais la suite de la ligne est toujours l'ancienne.

Écrivez autre chose, ou supprimez un fichier ou définissez un drapeau d'écriture seule.


Oui, ça marche... Merci.
 
Bonjour, MetaTrader pour Windows Phone ou Windows RT va-t-il sortir, et quand est-il prévu de le faire ?
 
Bon moment. Veuillez m'aider à résoudre cette erreur.
extern int OpenHH = 14; // Время открытия ордеров (часы).
extern int OpenMM = 25; // Время открытия ордеров (минуты).

extern int CloseHH = 23; // Время закрытие/удаление ордеров (часы).
extern int CloseMM = 45; // Время закрытие/удаление ордеров (минуты).


Cette partie du code fonctionne et ne fait l'objet d'aucune plainte. Les commandes sont passées le vendredi à 23 h 45, heure de clôture normale. La fonction DeleteOrders() fonctionne bien.

if (DayOfWeek() == 0 || DayOfWeek() == 6 ) return(0); // В выходные не работаем.
if (!IsTradeAllowed()) return(0); // Пропустить тик, если терминал занят.
if (Close_All_Orders) // Разрешение на закрытие ордеров.
if (DayOfWeek() >= 5 && // Если пятница и закрытие ордеров разрешено, то
TimeHour(TimeCurrent()) >= CloseHH && // в назначенный час
TimeMinute(TimeCurrent()) >= CloseMM ) // в назначенные минуты -
{ DeleteOrders(); return(0); } // все ордера закрываются.


Le code pour l'ouverture des commandes se fait par analogie. Le code ne fonctionne pas du tout dans la forme spécifiée.
Cependant, si nous supprimons ou commentons la ligne avec les minutes, tout fonctionne bien et les ordres s'ouvrent à 14h00. La fonction OpenOrders() fonctionne bien.
Quel peut être le problème dans cette ligne de code (ou une autre) : TimeMinute(TimeCurrent()) >= OpenMM ?

if (Trade) // Разрешение на торговлю.
if (TimeHour(TimeCurrent()) >= OpenHH && // В назначенный час,
TimeMinute(TimeCurrent()) >= OpenMM ) // в назначенные минуты -
{ OpenOrders(); return(0); } // открыть ордера.


PS : En fait, il y a pas mal d'EA sur Internet qui ouvrent et ferment des ordres en fonction du temps. Mais, pour une raison ou une autre, ils peuvent ne pas être satisfaisants. Je voudrais traiter l'erreur ci-dessus...

Merci...

 
Crosswert:
Bon après-midi. Aidez-moi à résoudre cette erreur.


Tout semble être correct, cela devrait fonctionner. J'ai essayé votre code dans le mien - il fonctionne avec des minutes. Mais seulement de 14 h 25 à 14 h 59, de 15 h 25 à 15 h 59, etc.

int start()
  {
  int OpenHH=14,OpenMM=25;
  bool Trade=true;
//----
if (Trade) // Разрешение на торговлю.
 if (TimeHour(TimeCurrent()) >= OpenHH && // В назначенный час
 TimeMinute(TimeCurrent()) >= OpenMM ) // в назначенные минуты - 
 { OpenOrders();Print("Время пришло ",TimeHour(TimeCurrent()),":",TimeMinute(TimeCurrent())); return(0); } // открыть ордера.   
//----
   return(0);
  }
//+------------------------------------------------------------------+
void OpenOrders(){return(0);}


 

C'est peut-être mieux.

if ((Hour() == OpenHH && Minute() >= OpenMM) || (Hour() > OpenHH))