à l'origine dans err vous avez manifestement obtenu int de GetLastError(). Convertir le code d'erreur en description lisible ErrorDescription(err) ; à condition que #include <stdlib.mqh> soit activé.
mais la façon dont c'est écrit est une déception.
PS/ Et n'apprenez pas la programmation MQL. MQL 4 et 5 sont des langages cibles pour une plateforme particulière.
Pouvez-vous me dire si vous pouvez l'écrire de cette façon. il ne veut pas ouvrir les transactions. peut-être que le format des nombres calculés est mauvais ? ou d'autres défauts dans le code ?
forexpipsrunner: s'il vous plaît dites-moi si vous pouvez l'écrire comme ça. il ne veut pas ouvrir les métiers
Le code proposé ressemble à un indicateur. Les transactions sont ouvertes par un conseiller expert ou un script. L'appel de la fonction OrderSend n' est pas autorisé dans l'indicateur. L'indicateur peut s'alarmer - insérez l'appel de la fonction Alerte ou le son à l'endroit approprié
Le code proposé est similaire à l'indicateur. Les transactions sont ouvertes par un conseiller expert ou un script. L'appel de la fonction OrderSend est interdit dans l'indicateur. L'indicateur peut signaler - insérer l'appel ou le son de la fonction d'alerte à l'endroit approprié
C'est le code de définition du TP, qui envoie le résultat à OrderSend. Sans cet algorithme complexe, les transactions sont envoyées, mais il n'y a aucun moyen de les envoyer. J'appelle la fonction TP = TakeLong(SHP) ;
forexpipsrunner: c'est le code de définition du TP qui donne le résultat à OrderSend. sans cet algorithme, les transactions sont envoyées, il n'y a aucun moyen de le faire.
Il existe de nombreuses façons de déboguer - le processus qui consiste à trouver une erreur lorsqu'il est établi qu'il y en a une. La première est F5 - démarrer le débogage dans MetsEditor. 2) utiliser Alerts pour tracer l'exécution. 3 et 4) produisent des informations de débogage dans les étiquettes de texte et la fonction Commentaire. Choisissez le moyen le plus pratique et déboguez cette fonction simple - vous deviendrez alors un programmeur. Un programme comportant des milliers de lignes est considéré comme complexe.
Pouvez-vous me dire si vous pouvez l'écrire de cette façon. il ne veut pas ouvrir les transactions. peut-être que le format des nombres calculés est mauvais ? ou un autre défaut dans le code ?
int take=0 - vous retournez un entier, cette variable ne devrait-elle pas être un double ?
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
> err=StringToInteger((string)err)
cela devrait rester dans les annales ;-)
à l'origine dans err vous avez manifestement obtenu int de GetLastError(). Convertir le code d'erreur en description lisible ErrorDescription(err) ; à condition que #include <stdlib.mqh> soit activé.
mais la façon dont c'est écrit est une déception.
PS/ Et n'apprenez pas la programmation MQL. MQL 4 et 5 sont des langages cibles pour une plateforme particulière.
Pouvez-vous me dire si vous pouvez l'écrire de cette façon. il ne veut pas ouvrir les transactions. peut-être que le format des nombres calculés est mauvais ? ou d'autres défauts dans le code ?
double TakeLong(double shp)
{
int CurrentDayRange=0, fiveDayATR=0, take=0 ;
double TP_ATR=0 ;
//////Pivots
double P, S1, R1, S2, R2, S3, R3 ;
double LastHigh, LastLow, x ;
int counted_bars = IndicatorCounted() ;
int limite, i ;
shp=iHigh(Symbol(),PERIOD_D1,0) ;
//---- Calcul de l'indicateur de pivotement
si(barres comptées == 0)
{
x = Période() ;
si(x > 240)
retour(-1) ;
}
si(barres comptées < 0)
retour(-1) ;
limite = (Bars - counted_bars) - 1 ;
//----
for(i = limite ; i >= 0 ; i--)
{
si(High[i+1] > LastHigh)
LastHigh = High[i+1] ;
//----
si(Low[i+1] < LastLow)
LastLow=Low[i+1] ;
if(TimeDay(Time[i]) != TimeDay(Time[i+1])
{
P = (LastHigh + LastLow + Close[i+1]) / 3 ;
R1 = (2*P) - LastLow ;
S1 = (2*P) - LastHigh ;
R2 = P + (LastHigh - LastLow) ;
S2 = P - (LastHigh - LastLow) ;
R3 = (2*P) + (LastHigh - (2*LastLow)) ;
S3 = (2*P) - ((2* LastHigh) - LastLow) ;
LastLow = Open[i] ;
LastHigh = Open[i] ;
}
}
////ATR calcul
pour (i=1;i<6;i++)
{ if(iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i)>0) FiveDayATR += (iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i));}
FiveDayATR = NormalizeDouble(FiveDayATR/5,Digits()) ;
CurrentDayRange = (iHigh(NULL, PERIOD_D1, i)-iLow(NULL, PERIOD_D1, i)) ;
si(FiveDayATR-CurrentDayRange>0) TP_ATR=Ask+FiveDayATR-CurrentDayRange ; sinon TP_ATR=0 ;
si (Bid>R1 && TP_ATR==0) take=shp ;
sinon si (Bid<R1 && R1<TP_ATR) take=R1 ;
sinon, take=TP_ATR ;
retour (prise) ;
}
Le code proposé ressemble à un indicateur. Les transactions sont ouvertes par un conseiller expert ou un script. L'appel de la fonction OrderSend n' est pas autorisé dans l'indicateur. L'indicateur peut s'alarmer - insérez l'appel de la fonction Alerte ou le son à l'endroit approprié
Le code proposé est similaire à l'indicateur. Les transactions sont ouvertes par un conseiller expert ou un script. L'appel de la fonction OrderSend est interdit dans l'indicateur. L'indicateur peut signaler - insérer l'appel ou le son de la fonction d'alerte à l'endroit approprié
C'est le code de définition du TP, qui envoie le résultat à OrderSend. Sans cet algorithme complexe, les transactions sont envoyées, mais il n'y a aucun moyen de les envoyer. J'appelle la fonction TP = TakeLong(SHP) ;
Il existe de nombreuses façons de déboguer - le processus qui consiste à trouver une erreur lorsqu'il est établi qu'il y en a une. La première est F5 - démarrer le débogage dans MetsEditor. 2) utiliser Alerts pour tracer l'exécution. 3 et 4) produisent des informations de débogage dans les étiquettes de texte et la fonction Commentaire. Choisissez le moyen le plus pratique et déboguez cette fonction simple - vous deviendrez alors un programmeur. Un programme comportant des milliers de lignes est considéré comme complexe.
Pouvez-vous me dire si vous pouvez l'écrire de cette façon. il ne veut pas ouvrir les transactions. peut-être que le format des nombres calculés est mauvais ? ou un autre défaut dans le code ?
MathAbs( Close1[i] - Open1[i] ) / Point + 1
MathAbs( Close2[i] - Open2[i] ) / Point + 1
Dans le code complet, cela ressemble à cela
double Close1 = iClose(Symbol(), 0, i) ;
double Open1 = iOpen(Symbol(), 0, i) ;
double Close2 = iClose(Symbol(), 0, i+1) ;
double Open2 = iOpen(Symbol(), 0, i+1) ;
MathAbs( Close1[i] - Open1[i] ) / Point + 1
MathAbs( Close2[i] - Open2[i] ) / Point + 1
if (Close1 < Open1 && Close2 > Open2){
BUY() ;
}
if (Close1 > Open1 && Close2 < Open2){
SELL() ;
}
Est-ce correct ? Comment faire pour que ça marche ?
L'avez-vous essayé sur le compte de démonstration M1 ? Qu'est-ce que vous obtenez ?
L'avez-vous essayé sur un compte de démonstration M1 ? Comment ça se passe ?
Pouvez-vous me dire pourquoi le chalut est déclenché à chaque tick?