[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 261

 
BaceK1 >> :
Comment ouvrir un poste à un moment précis ? Par exemple, je dois ouvrir une position à 00.15 heure locale.

si (heure == 0 && minute==15) {alors faites ceci;}

Regardez dans Expert Advisor, il y a quelques parenthèses manquantes (et certaines inutiles) :

//+------------------------------------------------------------------+
//|                                                   Полуночник.mq4 |
//|                                                            BaceK |
//+------------------------------------------------------------------+
#property copyright "BaceK"
#property link ""
//---- input parameters
extern int Dist_SL=20;
extern int Dist_TP=30;
extern double Prots=0.35;
int start()
{
string Symb=Symbol(); // Финанс. инструмент
int Min_Dist=MarketInfo( Symb,MODE_STOPLEVEL);// Мин. дистанция //Alert("Мин. дистанция = ",Min_Dist);
double Min_Lot=MarketInfo( Symb,MODE_MINLOT);// Мин. размер лота//Alert("Мин. размер лота = ",Min_Lot);
double Free =AccountFreeMargin(); // Свободн средства//Alert("Свободн средства = ",Free);
double One_Lot=MarketInfo( Symb,MODE_MARGINREQUIRED);//Стоим.лота//Alert("Стоим.лота = ",One_Lot);
double Lot=MathFloor(( Free* Prots)/( One_Lot* Min_Lot))* Min_Lot;// Лоты//Alert("Лоты = ",Lot);//Alert("Bars = ",Bars);
//-----------------------------------------------
if( Lot != 0 ) // Проверка свободных срелств                       
 {//Alert("Работа дальше = ",OrderSymbol());
  // Проверка рабочего времени
  int h=TimeHour(TimeCurrent());
  if( h < 1 )
    {for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
        {if(OrderSelect( i-1, SELECT_BY_POS)==true) // Если есть следующий
           {// Анализ ордеров:
            if(OrderSymbol()!= Symb) // Не наш фин.инструм.
              {//Alert("Работа дальше = ",OrderSymbol());
               // Определение в какую сторону открываться
               if(iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1)< 0)
                 {//Alert("Длинная позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
                  int ticket=OrderSend( Symb,OP_BUY, Lot,Ask,3,Bid- Dist_SL*Point,Bid+ Dist_TP*Point);
                 }
               else
                 {//Alert("Короткая позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
                  int ticket1=OrderSend( Symb,OP_SELL, Lot,Bid,3,Bid+ Dist_SL*Point,Bid- Dist_TP*Point);
                 }
               if( ticket>0 || ticket1>0) // Получилось :)
                 {// Alert ("Установлен ордер SELL ",ticket || ticket1);
                  Sleep(5000);
                 }
               else
                 {int Error=GetLastError(); // Не получилось :(
                  switch( Error) // Преодолимые ошибки
                    {case 129:...................................
                    }
                  switch( Error) // Критические ошибки
                    {case 2 : ...................................
                    }
                  //Alert (GetLastError());
                  return(0);
                 }
              }
            else
              {//Alert("Выход по Symb = ",Symb);
               return(0);
              }
        }//это скобка закрывающая for() почему после неё идёт else ???????? 
      else
        {//Alert("Выход по ордеров нет = ",Symb);
         if(iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1)< 0)
           {//Alert("Длинная позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
            int ticket2=OrderSend( Symb,OP_BUY, Lot,Ask,3,Bid- Dist_SL*Point,Bid+ Dist_TP*Point);
           }
         else{//Alert("Короткая позиция = ",iOpen(NULL,PERIOD_D1,1)-iClose(NULL,PERIOD_D1,1));
              int ticket3=OrderSend( Symb,OP_SELL, Lot,Bid,3,Bid+ Dist_SL*Point,Bid- Dist_TP*Point);
             }
         if( ticket2>0 || ticket3>0) // Получилось :)
           {Sleep(5000);//Alert ("Установлен ордер SELL ",ticket2 || ticket3);            
           }
         else
           {int Error1=GetLastError(); // Не получилось :(
            switch( Error1) // Преодолимые ошибки
              {case 129:................................
              }
            switch( Error1) // Критические ошибки
              {case 2 : ..........................
              }
            Alert(GetLastError());return(0);
           }
    }
  }
// дальше я не могу отследить что откуда ?????????????????????????????????????????????????????????
//?????????????????????????????????????????????????????????????????????????????????????????????????
}else
{// Alert("Выход по времени = ",Hour());
return(0);
}
}else
{return(0);}//Alert("Выход по Lot = ",Lot);
 return(0); //Alert ("Скрипт закончил работу -----------------------------");
}
//+------------------------------------------------------------------+

Ce satané robot ne permet pas d'exposer tout le code, je vais devoir le couper. J'ai coupé switch() pour qu'il s'adapte.

 

Comment pourrais-je écrire tout l'historique disponible dans un fichier sous la forme de ces lignes

O;H;L;C;volume;MA3;MA5;MA7;MA13 ; ... et d'autres indicateurs encore

Sur la période H1 ?

Merci.

 
snowman647 >> :

Comment puis-je écrire tout l'historique disponible dans un fichier sous la forme de ces chaînes de caractères ?

O;H;L;C;volume;MA3;MA5;MA7;MA13 ; ... et d'autres indicateurs encore

Sur la trame H1 ?

Merci.




//+------------------------- WritingLineInFile() ----------------------------
//| Дописывание строки в конец файла
//+---------------------------------
void WritingLineInFile(string FlName, string Text){
  int file_handle=FileOpen( FlName, FILE_CSV| FILE_READ| FILE_WRITE, " ");
	if ( file_handle>0){
		FileSeek( file_handle,0, SEEK_END);
		FileWrite( file_handle, Text);
		FileClose( file_handle);
	}
	else{
	  Print("Ошибка ",GetLastError()," - Не удалось открыть файл ", FlName);
   }
}
//--------------------------------------------------------------------------- 

Il s'agit d'une sous-routine définie par l'utilisateur qui ajoute une ligne de texte à la fin du fichier. Elle est placée après la fonction de démarrage. Au tout début, nous l'utilisons comme suit :

 // --------- Генерируем имя файла ------------
  FileName=Symbol()+"_"+DoubleToStr(Day(),0)+"_"+DoubleToStr(Month(),0)+"_"+DoubleToStr(Year(),0)+".txt";
  TextInFile=TimeToStr(TimeCurrent(), TIME_DATE| TIME_SECONDS);
  TextInFile= TextInFile+" "+DoubleToStr(Bid,Digits);
 

Merci !

Pouvez-vous également me dire comment organiser une visite guidée de l'ensemble de l'histoire ?

J'ai un fichier qui contient les données H1 de 1999 à 2009.

 

Vous envisagez d'installer un nouveau système d'exploitation uniquement pour le testeur, qui sait quel OS a des tests plus rapides ?

 

Bonsoir.

Hier encore, j'ai essayé MQL5 pour la première fois. J'ai un problème avec le bouton. Veuillez indiquer comment définir les coordonnées d'un bouton, changer sa couleur, définir le texte et comment recevoir un retour d'information. J'ai essayé d'utiliser l'ancienne version qui a été publiée avant la sortie de MT5. Où puis-je le lire ? Merci. :)

 
Patriot писал(а) >>

Bonsoir.

Hier encore, j'ai essayé MQL5 pour la première fois. J'ai un problème avec le bouton. Veuillez indiquer comment définir les coordonnées d'un bouton, changer sa couleur, définir le texte et comment recevoir un retour d'information. J'ai essayé d'utiliser l'ancienne version qui a été publiée avant la sortie de MT5. Où puis-je le lire ? Merci. :)

Allez ici... Le bêta-testing de MetaTrader 5 a commencé !

 
DDFedor >> :

C'est comme ça... Le test bêta de MetaTrader 5 a commencé !


Merci beaucoup. :)
 
001 писал(а) >>

Vous envisagez d'installer un nouveau système d'exploitation uniquement pour le testeur, qui sait quel OS a des tests plus rapides ?

Et de toute façon, ne commencez pas un nouveau fil sur ce sujet, voulez-vous ?

 

XP et le sujet est clos...

)))