Un conseiller qui suivrait le taux sur un graphique de cinq minutes avec les conditions après le lancement : - page 6
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Bonne journée.
Pouvez-vous nous conseiller : Il existe un script qui écrit rapidement l'historique dans le fichier, mais lorsque le fichier est ouvert, l'enregistrement ne va pas..... Le script que vous connaissez probablement ou que vous avez vu s'appelle currency_loader.
// chargement des données historiques de M1
void LoadingM1(){//1
int MaxBars=MaxBarsInFile ;
if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1) ; ArrSizeM1=ArrayRange(ArrayM1,0);}
if(ArrSizeM1>1){//2
if(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}
for(i2=1 ; i2<=Tryes ; i2++){//3
h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV) ;
if(h1==-1){LastError=GetLastError();Info("1.2",1"," Une erreur s'est produite lors de l'ouverture du fichier : "+FileNameM1+" at "+i2+" Try "+ErrorDescription(LastError));Pause=Pause+Pause ; Sleep(Pause) ; continue ; }else{Info("1.2",2", "File "+FileNameM1+" successfully opened ");}
FileWrite(h1,FirstLine) ;
for (i=MaxBars-1 ; i>=0 ; i-- ){//4
if(!USRegionSet){
CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+"" ; // date du bar
CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+"," ; // heure du bar
}
else{
BarTime=ArrayM1[i][0];
CString=CString+GetUSFormatTime(BarTime)+" " ; // date du bar
BarTime=0 ;
}
CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+"," ; // prix ouvert
CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+"," ; // Prix élevé
CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+"," ; // Prix bas
CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+"" ; // Prix de clôture
FileWrite(h1,CString) ;
CString="" ;
}//4
FileClose(h1) ;
LCM1 = iTime(Symbol(),PERIOD_M1,0) ;
retour ;
}//3
}//2
}//1
D'après ce que j'ai compris, il y a un problème dans les poignées, mais où est la question...
Ne fonctionne toujours pas !!!!
Aidez-moi à comprendre quelle en est la raison.
Alors comment l'avez-vous testé ? Et comment faire des bénéfices si ça ne marche pas ? Et comment ça ne marche pas ? Qu'est-ce que le magazine imprime ? L'avez-vous testé dans le testeur ? Ou en ligne ?
Regardez également la fonction OrdersTotal, à quoi elle sert et comment elle est insérée par .....
Par exemple, int total=OrdersTotal() ; if(total<1) {
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Le prix a baissé de plus de Delta points
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green) ;
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Le prix a augmenté de plus de Delta points
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green) ;
}
//----
return(0) ;
}
//+------------------------------------------------------------------+
Et tu es un mec arriviste, tu comprends. Cela fonctionne, mais c'est juste stupide. Copiez-le dans MetaEditor, ou vous allez encore confondre le + avec le -.
D'après ce que je comprends, le problème se situe quelque part dans les poignées, mais où est la question...Voici un exemple d'obtention de Handle
int hwnd1 = WindowHandle(Symbol(), Period()) ;
Je n'ai rien remarqué de semblable dans votre code.
Si un fichier "csv" est ouvert par Excel, il est verrouillé et le fichier n'a pas d'accès en écriture, est-ce un mystère ?
Alors comment l'avez-vous testé ? Et comment faire des bénéfices si ça ne marche pas ? Et comment ça ne marche pas ? Qu'est-ce que le magazine imprime ? L'avez-vous testé dans le testeur ? Ou en ligne ?
Regardez également la fonction OrdersTotal, à quoi elle sert et comment elle est insérée par .....
Par exemple, int total=OrdersTotal() ; if(total<1) {
Montre le profit 504, le nombre de transactions 432, le drawdown 788 $, 7,31%. Dans les paramètres, j'ai mis m5 sur fourrière, 17/03/08 - 19/03/08.
Et lorsque je l'ai exécuté sur le graphique, mes conditions pour les transactions étaient remplies, mais le conseiller expert n'a rien fait........
int start()
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Le prix a baissé de plus de Delta points
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green)
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Le prix a augmenté de plus de Delta points
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green) ;
}
//----
retour(0) ;
}
//+------------------------------------------------------------------+
Et vous êtes un gars têtu, comprenez-le. Cela fonctionne, mais c'est juste stupide. Copiez-le dans MetaEditor, ou vous allez encore confondre le + avec le -.
Comment puis-je faire en sorte que mon conseiller expert n'ouvre qu'une seule transaction et n'en ouvre pas d'autres avant qu'elle ne se termine ?
Je suis gêné de demander :))))
Comment puis-je faire en sorte que mon conseiller expert n'ouvre qu'une seule transaction, et que tant qu'elle n'est pas terminée, il n'en ouvre pas d'autres ?
Organisez dans une boucle une recherche de toutes les positions ouvertes et vérifiez-les pour le symbole et le numéro magique actuels. Si aucun n'est trouvé, alors nous allumons la lumière verte. La kodobase est pleine d'exemples de ce genre, dans presque toutes les EA.