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

 

Bon après-midi. J'ai écrit une fonction qui doit retourner le nombre de barres lorsqu'un ordre a été ouvert :

int BarLastOpenPose()
{
datetime t ;
for (int i=0 ; i<OrdersTotal() ; i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()!=Symbol()) continue ;
if (OrderType()>1) continue ;
if (t<OrderOpenPrice()) t=OrderOpenPrice() ;
}
}

return (iBarShift(Symbol(),Period(),t,true)) ;
}

Cependant, il renvoie toujours -1. Où ai-je fait une erreur ? Merci d'avance.

 
first_may:

Bon après-midi. J'ai écrit une fonction qui doit retourner le nombre de barres lorsqu'un ordre a été ouvert :

int BarLastOpenPose()
{
datetime t ;
for (int i=0 ; i<OrdersTotal() ; i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()!=Symbol()) continue ;
if (OrderType()>1) continue ;
if (t<OrderOpenPrice()) t=OrderOpenPrice() ;
}
}

return (iBarShift(Symbol(),Period(),t,true)) ;
}

Cependant, il renvoie toujours -1. Où ai-je fait une erreur ? Merci d'avance.

Peut-être que c'est comme ça :

return(iBarShift(Symbol(),Period(),t)) ; c'est-à-dire, sans vrai.

 
first_may:

Bon après-midi. J'ai écrit une fonction qui doit retourner le nombre de barres lorsqu'un ordre a été ouvert :

int BarLastOpenPose()
{
datetime t ;
for (int i=0 ; i<OrdersTotal() ; i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()!=Symbol()) continue ;
if (OrderType()>1) continue ;
if (t<OrderOpenPrice()) t=OrderOpenPrice() ;
}
}

return (iBarShift(Symbol(),Period(),t,true)) ;
}

Cependant, il renvoie toujours -1. Où ai-je fait une erreur ? Merci d'avance.

La variable t se voit attribuer le prix d'ouverture, bien qu'elle soit déclarée comme un entier.

 
Vinin:

La variable t est affectée au prix d'ouverture, bien qu'elle soit déclarée comme un nombre entier.

Exact, je voulais écrire OrderOpenTime(), mais j'ai écrit OrderOpenPrice();
 
Merci, j'ai compris mon erreur.
 

Comment décrire un tel état ?



avatar
13
4absinth 25.09.2011 19:23

Veuillez me conseiller.

Si un extremum (par exemple un haut) de la première barre de 5 minutes de la journée en cours coïncide avec un extremum de la journée en cours (sur le journalier), alors nous faisons quelque chose. Comment le décririez-vous ?


Roger 25.09.2011 20:25 corrigé | supprimer
if(MathAbs(High[1]-iHigh(NULL,PERIOD_D1,0))<Point)
 

aidez les gens bien !


avatar
1
droopy 25.09.2011 19:34

Bonjour, chers utilisateurs de la ressource !

Aidez-nous, nous sommes confrontés à la lecture/écriture d'un nombre réel dans un fichier.

La tâche consiste à lire le solde d'un fichier, si le solde actuel est supérieur - écraser le fichier.

Le problème est qu'il produit toujours 0 (zéro).

Avec l'écriture/la lecture des nombres entiers, je n'ai pas trouvé de tels problèmes.

Voici le code :

double équilibre ;

int file_handle_bala ;

file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_READ) ;
//copie de la position, dans le cas d'un fichier vide - position = 0
si (FileSize(file_handle_bala)>0)
{
balance=FileReadDouble(file_handle_bala,DOUBLE_VALUE) ;
Alert(balance) ; ------------------------------------- C'est ici que le zéro doit être écrit, bien que le solde précédemment enregistré doive être écrit.
FileClose(file_handle_bala) ;
if (AccountBalance()>balance) ------------------------------------ et cette règle ne fonctionne pas car l'alerte ci-dessous n'émet rien
{
file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_WRITE) ;
balance=AccountBalance() ;
Alerte (solde) ;
FileWriteInteger(file_handle_bala,balance,DOUBLE_VALUE) ;
FileClose(file_handle_bala) ;
}
}
else // si le fichier est vide
{
FileClose(file_handle_bala) ; // d'abord, fermer le fichier ouvert
file_handle_bala=FileOpen("file_bala.dat",FILE_BIN|FILE_WRITE) ; //ouvert en écriture
balance=AccountBalance() ;
FileWriteDouble(file_handle_bala,balance,DOUBLE_VALUE) ;
FileClose(file_handle_bala) ;
}

Merci beaucoup plus tôt !!!


avatar
2222
Roger 9/25/2011 20:22

Notez cette ligne

FileWriteInteger(file_handle_bala,balance,DOUBLE_VALUE) ;


3461
Zhunko 25/09/2011 20:27

1. Vous devriez être plus respectueux et amical pour publier votre code.

2. Vous essayez d'écrire un entier de 8 octets. MQL4 ne dispose pas d'un tel type de données.

 

\Qu'est-ce que j'ai fait de mal ? Pourquoi tant d'erreurs ? (J'ai besoin de connaître la valeur maximale de l'indice de référence).(J'ai besoin de connaître la valeur maximale de l'indicateur dans les 10 dernières barres). Merci d'avance.

 

Bonne journée à tous !

Je suis en train d'écrire mon premier bot, et en même temps je me familiarise avec MQL. Je rencontre le problème suivant lors des tests :

L'ordre OP_BUYSTOP est exécuté juste après le placement de l'ordre, bien que, à en juger par le graphique, le prix n'atteigne pas la valeur cible (voir ci-dessous).

TempsTypeCommandezVolumePrixS / LT / PProfitBalance
12011.09.19 02:10arrêt d'achat10.0176.93576.73577.135
22011.09.19 02:10acheter10.0176.93576.73577.135

USDJPY,M5 (visuel)

Date 2011.09.19

Heure 02:15

Ouvert 76.903

Haut 76.909

Bas 76.890

Fermer 76.890

Volume 66

Je teste toutes les tiques.

Peut-être que je ne comprends pas correctement l'ordre OP_BUYSTOP ? Pour acheter si le prix dépasse une certaine valeur, non ?

Voici un bout de code source qui passe une commande

int ticket=OrderSend(Symb, OP_BUYSTOP, Lot, Price, 0, SL, TP) ;

Merci beaucoup à tous par avance !

 
Shniperson:

\Qu'est-ce que j'ai fait de mal ? Pourquoi tant d'erreurs ? (J'ai besoin de connaître la valeur maximale de l'indicateur pour les 10 dernières barres). Merci d'avance.

Vous déclarez la fonction Hi :

double Hi(int pos=0)
dans la fonction start()
Raison: