Un conseiller qui suivrait le taux sur un graphique de cinq minutes avec les conditions après le lancement : - page 6

 

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...

 
EA testé, montre le profit avec les paramètres suivants, voici le code :
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
extern double StopLoss=30;                          // Stop Loss
extern double TakeProfit=3;                         // Take Profit
extern double Lots=0.02;                          // Объем сделки в %
extern double Slippage =4;                         // Максимальное отклонение от запрошенной цены
extern double Delta=30;                             // Сигнал приказа в пунктах
extern double MagicNumber ;                   // Order ID
int  ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
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) {

 
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) ;
}
//----
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 ?
 
rid:

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) {

Testé avec un testeur, comment faire autrement ? :)
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........
 
zhuki:
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 -.
Urgh !!!!!! Merci beaucoup. Ça marche.
 
Lorsque vous aurez terminé votre GRAAL, partagez au moins l'idée.
 
Je suis gêné de demander :))))
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 ?
 
salesman77:
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.
Raison: