MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 863

 

이고르 마카누 : 물론 주제에서 벗어났습니다. 따라서 귀하의 코드에 따르면 작은 생각. 배열을 사용하는 경우 일반적으로 간격을 무제한으로 설정할 수 있습니다.

CWork *Work[];

int OnInit ()
  {
   if ( ArrayResize (Work, 3 ) != 3 )
       ExpertRemove ();
   Work[ 0 ] = new CWorkTime(StartHour_0,StartMinute_0,StopHour_0,StopMinute_0);
   Work[ 1 ] = new CWorkTime(StartHour_1,StartMinute_1,StopHour_1,StopMinute_1);
   Work[ 2 ] = new CWorkTime(StartHour_2,StartMinute_2,StopHour_2,StopMinute_2);

   return ( INIT_SUCCEEDED );
  }
void OnDeinit ( const int reason)
  {
   for ( int i= 0 ; i< ArraySize (Work)); i++)
       if (Work[i] != NULL )
         delete Work[i];
   ZeroMemory (Work);
  }

void OnTick ()
  {
   for ( int i= 0 ; i< ArraySize (Work)); i++)
       if (Work[i].Disable())
        {
         Comment ( "Не торговое время!!!" );
         return ;
        }
/* work */
  }
 
Konstantin Nikitin :

이고르 마카누 : 물론 주제에서 벗어났습니다. 따라서 귀하의 코드에 따르면 작은 생각. 배열을 사용하는 경우 일반적으로 간격을 무제한으로 설정할 수 있습니다.

주제에서 벗어난 이유는 무엇입니까? - 주제는 기술입니다. 저는 항상 기술 문제에 대한 토론을 지원합니다.


물론, 클래스의 인스턴스 배열을 사용할 수도 있습니다. 내 클래스를 여러 번 확인했습니다. 모든 것이 올바르게 작동하는 것 같습니다. 최소한 1분마다 자신의 거래 간격을 만들고 모든 TS에서 거래할 수 있습니다.)


문자열을 datetime으로 변환하는 것보다 거래 시간을 분석하는 그런 방식을 만드는 아이디어가 마음에 들고, 내 코드의 의미는 하루에 한 번 거래 시작 및 종료 시간을 datetime 형식으로 계산해야 한다는 것입니다. 새 날이 올 때까지 이 간격을 다시 계산하는 것은 의미가 없습니다. 새 날이 되었습니다. datetime 에서 모든 것을 다시 계산하고 datetime 간의 비교는 매우 빨라야 합니다. 터미널(테스터)을 로드하지 않습니다.


Seric29 :

이 코드가 작동하지 않는 이유는 무엇입니까?

콜론 ::을 통해 클래스를 설명해야 할 수도 있습니다. 아이디어의 의미는 다른 포인터를 가리키는 포인터를 만드는 것입니다.

구문 오류가 있는 경우 다음과 같아야 합니다.

 #include <Object.mqh>
class CArray : public CObject
  {
public :
   double             m_Array[ 100 ];
  };

void OnStart ()
  {
   CArray *arr= new CArray;
   arr.m_Array[ 22 ]= 1.23456 ;
  }
 
novichok2018 :

안녕하세요!

따옴표 힌트를 제공한 Alexey Viktorov 에게 다시 한 번 감사드립니다. 모든 것이 제대로 작동합니다. 그러나 이번 월요일에 상황이 발생했습니다. 독일인은 거래하고 영국인은 하루를 쉬었습니다. 그리고 유로에서 포지션을 여는 조건에서 파운드의 오래된 가치가 사용되었다는 것이 밝혀졌습니다. 따라서 요청: 두 기호가 그날 거래되는 코드에서 확인을 설정하는 방법을 알려주십시오.

고맙습니다.

죄송합니다. 오늘은 너무 게을러서 문서를 읽지 못했습니다. 그리고 오래 전에 거의 모든 메모리 칩이 타 버렸고 경화 만 남았습니다. 그리고 광기.

 
Alexey Viktorov :

죄송합니다. 오늘은 너무 게을러서 문서를 읽지 못했습니다. 그리고 오래 전에 거의 모든 메모리 칩이 타 버렸고 경화 만 남았습니다. 그리고 광기.

글쎄, 나는 아직 게으르지 않다. 비록 나는 나의 광기가 충분하지만. 하지만 어디서 읽을까요? 아무것도 찾지 못했습니다. 컴퓨터에서 눈을 망쳤다.

 
novichok2018 :

글쎄, 나는 아직 게으르지 않다. 비록 나는 나의 광기가 충분하지만. 하지만 어디서 읽을까요? 아무것도 찾지 못했습니다. 컴퓨터에서 눈을 망쳤다.

문서에서

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)는 다음과 같은 경우 false를 반환할 수 있습니다.

  • 무역 서버에 연결되어 있지 않습니다. TerminalInfoInteger(TERMINAL_CONNECTED))로 확인할 수 있습니다.
  • 거래 계정이 읽기 전용 모드로 전환되었습니다(아카이브에 전송됨).
  • 거래 서버 측에서 계정 거래가 금지됩니다.
  • 거래 계정에 대한 연결은 투자자 모드에서 이루어집니다.

그리고 그렇지 않다면 다른 옵션을 찾으십시오.

 
Alexey Viktorov :

문서에서

그리고 그렇지 않다면 다른 옵션을 찾으십시오.

불행히도, 그렇지 않습니다. 거래는 계정에서 금지되지 않습니다. 우리는 유로로 거래하지만 파운드로는 거래하지 않습니다. 따라서 특정 기호에 대한 거래를 확인해야 합니다. 누구든지 이것에 대한 경험이 있거나 문제를 해결하는 방법을 알고 있습니까? 아직 포럼이나 Google에서 찾을 수 없습니다.

 
novichok2018 :

불행히도, 그렇지 않습니다. 거래는 계정에서 금지되지 않습니다. 우리는 유로로 거래하지만 파운드로는 거래하지 않습니다. 따라서 특정 기호에 대한 거래를 확인해야 합니다. 누구든지 이것에 대한 경험이 있거나 문제를 해결하는 방법을 알고 있습니까? 아직 포럼이나 Google에서 찾을 수 없습니다.

문서에 다른 기능이 있습니다

IsTradeAllowed(symbol, TimeCurrent ()
TerminalInfoInteger ( TERMINAL_TRADE_ALLOWED )
 

안녕하세요.

MT4에서 "설명" 필드의 TrendLine 개체 설정에 지정된 텍스트는 추세선의 왼쪽 부분(왼쪽 끝 근처)에 표시됩니다. 누군가가 기성품 솔루션을 가지고있을 수 있습니다. 오른쪽 끝에 텍스트를 표시하는 방법은 무엇입니까?

 
Taras Slobodyanik :

문서에 다른 기능이 있습니다

시험을 마친.

 bool uk = IsTradeAllowed("GPBUSD", TimeCurrent ());
bool de = IsTradeAllowed("EURUSD", TimeCurrent ());

       if (de && uk) Alert ("uk == true ");

영국의 휴일이었지만 27일 월요일에 true 를 씁니다.

 
novichok2018 :

시험을 마친.

영국의 휴일이었지만 27일 월요일에 true 를 씁니다.

그래서 휴일이나 거래 금지를 정의해야 합니까?
27일 거래 허용

휴일이면 휴일/주말을 감지하기 위해 뉴스 파서가 필요합니다.