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

 

Où est l'erreur, je ne sais pas.

Op.

Dossiers :
5system2.mq4  8 kb
 
CJIeCaPb:

Où est l'erreur, je ne sais pas.

Ope.

Quelque chose ne va pas dans la boucle while(O==3)

 
CJIeCaPb:

Quelque chose ne va pas dans la boucle while(O==3)

Ouf... C'est ça, j'ai compris. Après la fermeture, le ticket est supprimé et la commande doit être relancée.
 
Bonjour, voilà le problème, je ne peux pas ouvrir le fichier. J'ai essayé différentes extensions de fichiers, sans succès, et j'ai reçu le message suivant : error 5004. Le fichier est dans le bac à sable des fichiers. C'est à cause de la poignée, mais je ne sais pas pourquoi. Voici le code :
   int filehandle=FileOpen("test.txt",FILE_TXT|FILE_WRITE,";");
   if(filehandle<0)
   Alert("ошибка ",GetLastError());                          //Для проверки handle

 
 int filehandle=FileOpen("test.txt",FILE_WRITE|FILE_TXT,";");
 
evillive:
J'ai essayé sans le séparateur - inutile.
 
Kapizdo4ka:
Bonjour, j'ai ce problème, je n'arrive pas à ouvrir le fichier. J'ai essayé différentes extensions de fichiers, sans succès, et j'obtiens juste : error 5004. Le fichier est dans le bac à sable. C'est à cause de la poignée, mais je ne sais pas pourquoi. Voici le code :

Avez-vous essayé de spécifier que le fichier se trouve dans un dossier partagé ?

Drapeaux d'ouverture de fichiers

Les valeurs des drapeaux qui définissent comment le fichier sera traité. Les drapeaux sont définis comme suit :

Identifiant

Valeur

Description

FICHIER_LIRE

1

Le fichier est ouvert à la lecture. Cet indicateur est utilisé lors de l'ouverture d'un fichier (FileOpen()). FILE_WRITE et/ou FILE_READ doivent être définis lors de l'ouverture d'un fichier.

FILE_WRITE

2

Le fichier est ouvert à l'écriture. Cet indicateur est utilisé pour ouvrir un fichier (FileOpen()). Lorsqu'un fichier est ouvert, les drapeaux FILE_WRITE et/ou FILE_READ doivent être activés.

FILE_BIN

4

Mode lecture-écriture binaire (pas de conversion de ou vers une chaîne de caractères). Cet indicateur est utilisé pour ouvrir les fichiers (FileOpen())

FILE_CSV

8

Fichier de type csv (tous les éléments écrits sont convertis en une chaîne de caractères du type approprié, unicode ou ansi, et séparés par un séparateur). Cet indicateur est utilisé lors de l'ouverture d'un fichier (FileOpen())

FILE_TXT

16

Fichier texte simple (identique au csv, mais sans séparateur). Cet indicateur est utilisé lors de l'ouverture des fichiers (FileOpen())

FILE_ANSI

32

Chaînes de caractères ANSI (caractères à un octet). Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen())

FILE_UNICODE

64

Chaînes UNICODE (caractères à deux octets). Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen())

FICHIER_PARTAGÉ_LECTURE

128

Accès en lecture partagé par plusieurs programmes. Cet indicateur est utilisé lors de l'ouverture d'un fichier (FileOpen()), mais ne remplace pas la nécessité de FILE_WRITE et/ou FILE_READ lors de l'ouverture d'un fichier.

FICHIER_PARTAGÉ_ÉCRIT

256

Ce drapeau est utilisé pour le partage de l'accès en écriture par plusieurs programmes. Cet indicateur est utilisé pour ouvrir des fichiers (FileOpen()), mais ne remplace pas FILE_WRITE et/ou FILE_READ lors de l'ouverture d'un fichier.

FILE_REWRITE

512

Le fichier peut être écrasé par FileCopy() et FileMove(). Le fichier doit exister ou être accessible en écriture. Sinon, le fichier ne sera pas ouvert

FICHIER_COMMON

4096

Emplacement du fichier dans le dossier partagé de tous les terminaux clients\Terminal\Common\Files . Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen()), la copie de fichiers (FileCopy(), FileMove()) et la vérification de l'existence de fichiers (FileIsExist()).

Un ou plusieurs drapeaux peuvent être spécifiés lors de l'ouverture d'un fichier, cette combinaison est appelée combinaison de drapeaux. La combinaison de drapeaux est écrite à l'aide du signe d'opération logique OR (|) qui est placé entre les drapeaux à énumérer. Par exemple, pour ouvrir un fichier CSV en lecture et en écriture en même temps, vous pouvez spécifier la combinaison FILE_READ|FILE_WRITE|FILE_CSV.

 
Vinin:

Avez-vous essayé de spécifier que le fichier se trouve dans un dossier partagé ?

Drapeaux d'ouverture de fichiers

Les valeurs des drapeaux qui définissent comment le fichier sera ouvert. Les drapeaux sont définis comme suit :

Identifiant

Valeur

Description

FICHIER_LIRE

1

Le fichier est ouvert à la lecture. Cet indicateur est utilisé lors de l'ouverture d'un fichier (FileOpen()). FILE_WRITE et/ou FILE_READ doivent être définis lors de l'ouverture du fichier.

FILE_WRITE

2

Le fichier est ouvert à l'écriture. Cet indicateur est utilisé lors de l'ouverture d'un fichier (FileOpen()). L'indicateur FILE_WRITE doit être activé et/ou l'indicateur FILE_READ doit être activé lorsqu'un fichier est ouvert.

FILE_BIN

4

Mode lecture-écriture binaire (non converti en et depuis une chaîne de caractères). Cet indicateur est utilisé pour ouvrir les fichiers (FileOpen())

FILE_CSV

8

csv (tous les éléments écrits sont convertis en une chaîne de caractères du type approprié, unicode ou ansi, et séparés par un délimiteur). Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen())

FILE_TXT

16

Fichier texte simple (même type, mais le délimiteur est ignoré). Cet indicateur est utilisé lors de l'ouverture d'un fichier (FileOpen())

FILE_ANSI

32

Chaîne de caractères de type ANSI (caractères à un octet). Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen())

FILE_UNICODE

64

Chaînes UNICODE (caractères à deux octets). Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen())

FICHIER_PARTAGÉ_LECTURE

128

Accès en lecture partagé entre plusieurs programmes. Cet indicateur est utilisé lors de l'ouverture d'un fichier (FileOpen()), mais ne remplace pas la spécification de FILE_WRITE et/ou FILE_READ lors de l'ouverture d'un fichier.

FICHIER_PARTAGÉ_ÉCRIT

256

Cet indicateur est destiné à l'accès en écriture partagé par plusieurs programmes. Cet indicateur est utilisé pour ouvrir des fichiers (FileOpen()), mais ne remplace pas la nécessité de spécifier les indicateurs FILE_WRITE et/ou FILE_READ lors de l'ouverture d'un fichier.

FILE_REWRITE

512

FileCopy() et FileMove() peuvent être utilisés pour écraser un fichier. Le fichier doit exister ou être accessible en écriture. Sinon, le fichier ne sera pas ouvert

FICHIER_COMMON

4096

Emplacement du fichier dans le dossier partagé de tous les terminaux clients \Terminal\Common\Files . Cet indicateur est utilisé lors de l'ouverture de fichiers (FileOpen()), de la copie de fichiers (FileCopy(), FileMove()) et de la vérification de l'existence de fichiers (FileIsExist()).

Lors de l'ouverture d'un fichier, un ou plusieurs drapeaux peuvent être spécifiés, cette combinaison est appelée combinaison de drapeaux. Une combinaison de drapeaux est enregistrée à l'aide du OU logique (|), qui est placé entre les drapeaux énumérés. Par exemple, pour ouvrir un fichier CSV en lecture et en écriture en même temps, vous pouvez spécifier la combinaisonFILE_READ|FILE_WRITE|FILE_CSV.

Merci ! Cependant, la réponse s'est avérée être beaucoup plus simple. Tout ça à cause des changements dans la nouvelle construction. Il s'avère que la fonction FileOpen doit maintenant spécifier le type uint au lieu du type int comme dans la version précédente :
uint filehandle=FileOpen(filename,FILE_TXT||FILE_WRITE,"\r\n");

Et maintenant, en cas d'erreur, la fonction renvoie 0 au lieu de -1.

 

Esquisse d'un Trailing Stop simple. bez_Level - Niveau de départ du Trailing Stop en pips. TrallStep - marche arrière. Magie - nombre de magies.

Le problème est que, si plusieurs ordres sont ouverts par le conseiller-expert, seul le premier ordre est exécuté. Et, quand la première commande est fermée, la seconde commence à triller. Je ne reçois aucun message d'erreur. Je ne peux pas essayer de trouver ce que j'ai fait de mal. Merci...

int lim=OrdersTotal()-1 ;

for(int i=lim ; i>=0 ; i--)
{
si(bez_Niveau>0)
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
si(OrderType()==OP_SELL)
{
{si((OrderOpenPrice()-Ask)>(Point*bez_Level))
{
if((OrderStopLoss()>(Ask+Point*bez_Level)+(Point*TrallStep)) || (OrderStopLoss()==0))
{
//--- modifier l'ordre et sortir
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*bez_Level,OrderTakeProfit(),0))
Print("Erreur de suivi ",GetLastError()) ;
}
}
}
si(OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice()>Point*bez_Level))
{
if(OrderStopLoss()<Bid-(Point*bez_Level)-(Point*TrallStep))
{
//--- modifier la commande
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*bez_Level,OrderTakeProfit(),0))
Print("Erreur de suivi ",GetLastError())
}
}

}

}
}
}
 

Les gars, c'est quoi le truc ? Pourquoi ça ne sort pas d'Inita ?

POURQUOI IL N'Y A PAS D'ENTRÉE POUR DÉMARRER ?????????

int init()
 {
   if(init_data()==false)error=true;
   if(error==false)load_data();
   if(error==false)count_data();
   //if(error==true)Print("---------->>>>>>> ERORR!!! <<<<<<<<<--------------");
   setparam();
   Print ("Инит завершён успешно");
   return (0);
 }

int start()
{
  // if(iTime(Symbol(),0,0) == prevtime) return(0);    //ждем нового бара
 //  prevtime = iTime(Symbol(),0,0);                   //если появился новый бар , включаемся    
   Print (" Старт после нового бара"); 
...