[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 445

 

J'ai un problème qui a atteint un point ridicule. Erreur dans la fonction de fermeture de l'ordre.

OrserClose(int tip){
if( tip==1){
for( i=0; i<OrdersTotal(); i++){
           if(true==OrderSelect( i, SELECT_BY_POS, MODE_TRADES)){
           if(OrderType()==OP_BUY && OrderSymbol()==Symbol() && OrderMagicNumber() == Magic){
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
               }
           }
         }  
}

Donne une erreur (dans différents terminaux)

EURCHF,M5 : Erreur OrderClose 4107

EURCHF,M5 : prix invalide 1.48566000 pour la fonction OrderClose


si je le fais

OrderClose(OrderTicket(), OrderLots(),OrderClosePrice(),3, Violet);
OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_BID),3,Violet);

la même erreur. Mais lorsque j'écris OrderClose(...) non pas dans une fonction séparée, mais dans int start(), cette erreur ne se produit pas .

Quel est le problème et comment le résoudre ?



 
essayez de faire le cycle de la fin au début
for( i = OrdersTotal() - 1;  i > 0;  i--)
 
T-G >>:

У меня проблема до смешного дошла. Ошибка в функция закрытия ордера.

дает ошибку (причем в разных терминалах)

EURCHF,M5: OrderClose error 4107

EURCHF,M5: invalid price 1.48566000 for OrderClose function


если сделать

таже самая ошибка. но причем когда я пишу OrderClose(..) не в отдельной функции а в int start() то такой ошибки не возникает.

в чем дело и как вылечить?









normaliser le prix

 

int tick = 0, MaxTicks = 5;
bool SaveTickOn = 1;
string bid_s;

int start(){
   if( SaveTickOn){
      int rw_mode = FILE_CSV| FILE_READ| FILE_WRITE;
      if( tick == 0) rw_mode = FILE_CSV| FILE_WRITE;
      int handle1 = FileOpen("bids1.dat", rw_mode," ");
      bid_s = DoubleToStr(Bid,Digits); 
      FileWrite( handle1, bid_s);
      if(GetLastError() != 0) Alert("Error= ",GetLastError());
      Alert( tick,": ", bid_s);
      tick++;
      if( tick == MaxTicks) SaveTickOn = 0; 
      FileClose( handle1);
   }
   return(0);
}

Il existe un code simple pour écrire dans un fichier avec un addendum, mais pour une raison quelconque, l'option d'ajouter à un fichier

FILE_READ| FILE_WRITE 

ne fonctionne pas.

Qu'est-ce que ça peut être ?

 

Mettez celui-ci au départ, il fermera tout avec une garantie, il suffit de mettre les conditions...

if ( Close_) {
for (int trade = OrdersTotal() - 1; trade >= 0; trade--) {
OrderSelect( trade, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

if ((OrderType() == OP_BUY) &&( условие закрытия для бай)) OrderClose(OrderTicket(), OrderLots(), Bid, slip, Blue);
if ((OrderType() == OP_SELL)&&( условие закрытия для селл)) OrderClose(OrderTicket(), OrderLots(), Ask, slip, Red);
}
Sleep(1000);
}
}
}
 
Andrei01 >>:

Есть простейший код для записи в файл с добавлением, но почему то опция добавления в файл

не работает.

Что это может быть?

J'ai également vérifié que la fonction FileIsEnding(handle1) renvoie zéro, alors qu'elle devrait être 1, c'est-à-dire qu'il semble y avoir un bug dans MT4 dans le mode d'ajout au fichier.

 
Andrei01 писал(а) >>

J'ai également vérifié que la fonction FileIsEnding(handle1) renvoie zéro, alors qu'elle devrait être 1, ce qui signifie qu'il doit y avoir un bug dans MT4 en mode add.

Avez-vous essayé d'aller jusqu'à la fin du fichier ? FileSeek()

 
//+------------------------------------------------------------------+
//| Écrire la chaîne de caractères dans le fichier |
//+------------------------------------------------------------------+
void WritingLineInFile(string FileName, string text)
{
int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ") ;

si (file_handle>0)
{
FileSeek(file_handle, 0, SEEK_END) ;
FileWrite(file_handle, text) ;
FileClose(file_handle) ;
}

}
Il n'y a pas de bogues, vous devez juste l'écrire correctement. Cette fonction ajoute du texte à FileName .
 

Salut !

J'essaie de le programmer moi-même !

Aidez-moi à déterminer la direction à prendre ! Si vous en avez besoin de manière urgente et rapide (pour commencer)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Il existe un certain indicateur composé de deux MA

Nous devons créer un signal sonore à l'intersection de deux MA avec le message affiché à l'aide de la fonction "MessageBox".

Que faire ?

1 Créez un script avec la fonction "MessageBox".

Ou ajouter une condition au code de l'indicateur avec cette fonction ?

3. ou lier un script existant à l'indicateur ? Comment les relier, si possible ?

Ou est-il plus facile de créer un conseiller expert ?

Si j'en ai un, veuillez m'envoyer le code source d'un simple Expert Advisor classique avec deux moyennes mobiles

(Conditions EA...acheter si le МА rapide croise (ou touche) la MA lente de bas en haut.

..............................sel si le МА rapide croise (ou touche) une MA lente du haut vers le bas

.............................. avec fonction StopLoss

.............................. avec la fonction TakeProfit

.............................. avec la fonction Lot

Merci !

 
DRevodel писал(а) >>

Salut !

J'essaie de programmer par moi-même !

Aidez-moi à comprendre dans quelle direction aller ! Si vous en avez besoin de manière urgente et rapide (pour commencer)

Il existe un certain indicateur composé de deux MA

Vous devez créer un signal sonore à l'intersection de deux MA avec le message affiché à l'écran à l'aide de la fonction "MessageBox".

Que faire ?

Ou ajouter une condition au code de l'indicateur avec cette fonction ?

>>Merci !

Raison: