[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 261

 
BaceK1 >> :
그리고 정확히 지정된 시간에 포지션을 여는 방법은 무엇입니까? 예를 들어 현지 시간 00.15에 포지션을 개설해야 합니다.

if (시 == 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;볼륨;MA3;MA5;MA7;MA13; ... 및 기타 지표 더보기

H1 기간에?

감사해요

 
snowman647 >> :

사용 가능한 전체 기록을 이러한 줄 형식으로 파일에 쓰는 방법은 무엇입니까?

O;H;L;C;볼륨;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 ) ;
 

감사하다!

전체 이야기를 통해 한 구절을 구성하는 방법을 알려주시겠습니까?

내 파일에 1999년부터 2009년까지의 H1 데이터가 포함되도록

 

테스트가 더 빨리 실행되는 OS를 아는 테스터만을 위한 새 운영 체제를 설치할 계획입니다.

 

좋은 저녁이에요.

어제 처음으로 MQL5를 시도했습니다. 그리고 버튼에 문제가 있습니다. 버튼의 좌표 설정, 색상 변경, 텍스트 설정, 누름에 대한 응답 신호를 얻는 방법을 알려주세요. 어디에서 읽을 수 있습니까? 그렇지 않으면 MT5 릴리스 이전에도 게시 된 이전 도움말을 사용했습니다. 아무도 말하지 않을 곳을 읽을 수 있습니까? 고맙습니다. :)

 
Patriot писал(а) >>

좋은 저녁이에요.

어제 처음으로 MQL5를 시도했습니다. 그리고 버튼에 문제가 있습니다. 버튼의 좌표 설정, 색상 변경, 텍스트 설정, 누름에 대한 응답 신호를 얻는 방법을 알려주세요. 어디에서 읽을 수 있습니까? 그렇지 않으면 MT5 릴리스 이전에도 게시 된 이전 도움말을 사용했습니다. 아무도 말하지 않을 곳을 읽을 수 있습니까? 고맙습니다. :)

자... 'MetaTrader 5 베타 테스트가 시작되었습니다!'

 


매우 감사합니다. :)
 
001 писал(а) >>

테스트가 더 빨리 실행되는 OS를 아는 테스터만을 위한 새 운영 체제를 설치할 계획입니다.

그럼에도 불구하고이 문제에 대한 새로운 주제를 열지 않습니까?

 

XP와 주제가 닫혔습니다 ...

)))