[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 261

 
BaceK1 >>:
А как открыть позицию в точно назначенное время? К примеру необходимо открыть позицию в 00.15 локального времени.

если (час == 0 && минута==15) {то делаем вот это;}

по советнику разберитесь там гдето потеряны (а гдето для компенсации лишние) скобки:

//+------------------------------------------------------------------+
//|                                                   Полуночник.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 ("Скрипт закончил работу -----------------------------");
}
//+------------------------------------------------------------------+

блин бот не даёт весь код выложить, прийдётся резать. Порезал switch() чтоб влезло.

 

Как бы мне всю доступную историю записать в файл в ввиде таких строк

O;H;L;C;volume;MA3;MA5;MA7;MA13; ... и другие индикаторы далее

На H1 таймфрейме?

Спасибо

 
snowman647 >>:

Как бы мне всю доступную историю записать в файл в ввиде таких строк

O;H;L;C;volume;MA3;MA5;MA7;MA13; ... и другие индикаторы далее

На H1 таймфрейме?

Спасибо




//+------------------------- 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);
   }
}
//--------------------------------------------------------------------------- 

Это пользовательская подпрограмма, которая дописывает текстовую строку в конец файла. Её размещаем за функцией старт. В самом же старте используем приметно так:

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

спасибо!

а подскажите еще как организовать проход по всей истории?

чтобы у меня файл содержал данные H1 с 1999 по 2009 год

 

Планирую ставить новую операционную систему чисто под тестер, кто знает в какой ОС быстрее тесты идут?

 

Добрый вечер.

Только вчера впервые опробовал MQL5. И получил проблему с кнопкой. Подскажите пожалуйства как задать координату кнопки, изменить цвет, задать текст и как получить ответный сигнал от нее о нажатии. Где можно почитать, а то я старой справкой пользовался, которая еще до выхода MT5 была опубликована. Где можно почитать никто не подскажет? Спасибо. :)

 
Patriot писал(а) >>

Добрый вечер.

Только вчера впервые опробовал MQL5. И получил проблему с кнопкой. Подскажите пожалуйства как задать координату кнопки, изменить цвет, задать текст и как получить ответный сигнал от нее о нажатии. Где можно почитать, а то я старой справкой пользовался, которая еще до выхода MT5 была опубликована. Где можно почитать никто не подскажет? Спасибо. :)

Вам сюда... 'Бета-тестирование MetaTrader 5 началось!'

 


Спасибо большое. :)
 
001 писал(а) >>

Планирую ставить новую операционную систему чисто под тестер, кто знает в какой ОС быстрее тесты идут?

И все таки, ну не открывать же новую тему по этому вопросу?

 

ХР и тему закрываем...

)))

Причина обращения: