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

 
CopyBuffer 는 MT4에는 없고 MT5에만 있습니다. MT4에는 없나요? 버퍼 배열의 수로 MT4에서 데이터를 가져오는 간단한 방법이 있습니까?
 
Valeriy Yastremskiy :
CopyBuffer는 MT4에는 없고 MT5에만 있습니다. MT4에는 없나요? 버퍼 배열의 수로 MT4에서 데이터를 가져오는 간단한 방법이 있습니까?

아니요

MT4에서는 iCustom() https://docs.mql4.com/en/indicators/icustom 입니다.

작년에 확인했는데 EA iCustom()의 호출이 캐시 가능합니다. 다른 버퍼 또는 인덱스에 대해 한 틱에 대해 EA에서 iCustom()을 여러 번 호출하면 표시기 자체가 이 틱에 대해 한 번 다시 계산됩니다. 성능은 괜찮습니다

추신: 왜 MT4 - MT5가 이미 "물린" 경우 더 많은 성능이 있고 테스터가 더 정확합니다 ... 일반적으로 연구를 위한 정상적인 것, IMHO

 
Igor Makanu :

아니요

MT4에서는 iCustom() https://docs.mql4.com/en/indicators/icustom 입니다.

작년에 확인했는데 EA iCustom()의 호출이 캐시 가능합니다. 다른 버퍼 또는 인덱스에 대해 한 틱에서 EA에서 iCustom()을 여러 번 호출하면 표시기 자체가 이 틱에 대해 한 번 다시 계산됩니다. 성능은 괜찮습니다

추신: 왜 MT4 - MT5가 이미 "물린" 경우 더 많은 성능이 있고 테스터가 더 정확합니다 ... 일반적으로 연구를 위한 정상적인 것, IMHO

아이디어는 MT4에서 실행하기 더 쉽습니다. 껍질이 더 가볍습니다))) 아니요, 아니요. 우리는 사이클에서 구식 방식으로 어레이에 쓸 것입니다)))) MT5에서는 MT4가 대처를 멈출 때 확장하는 것이 합리적입니다.)) 이것은 느리거나 너무 많은 데이터입니다. 이 단계에 도달할 때까지.

추가했습니다. 그리고 아이디어가 수용 가능한 오류로 해결되었을 때.
 

좋은 오후에요 여러분. Grail 머신은 조각을 거의 완료했지만 약 50-60개의 경고를 컴파일할 때 ' OrderSend '의 반환 값을 확인해야 합니다.         트렌드+ _V_1,1.mq4    1626        열하나

제가 알기로는 아무런 확인도 없이 주문서 작성을 이렇게 해서

 //--- АО БАЙ--

   /*УСЛОВИЕ 1*/
   if (flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if (ao_buy!= EMPTY_VALUE && count_orders_market_buy == 0 )
   {
     OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1
 
DanilaMactep :

좋은 오후에요 여러분. Grail 머신은 조각을 거의 완료했지만 약 50-60개의 경고를 컴파일할 때 'OrderSend'의 반환 값을 확인해야 합니다.         트렌드+ _V_1,1.mq4    1626        열하나

제가 알기로는 아무런 확인도 없이 주문서 작성을 이렇게 해서

이렇게 쓰다

 if(OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_buy)) Print(Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР
 
MakarFX :

이렇게 쓰다

이 코드 줄은 소란을 피우지 않습니다 :( 즉시 다음과 같은 2개의 오류가 발생합니다.

'구매' - 선언되지 않은 식별자 TREND+_1,1.mq4 860 98


'열기' - 일부 연산자 예상 TREND+_V_1,1.mq4 860 102

그리고 코드는 이렇습니다

 if ( OrderSend ( Symbol (),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print (Buy Open); // ОТКРЫВАЕМ БАЙ ОРДЕР


나는 조언에 따라 모든 것을 썼습니다. 유일한 차이점은 시장 주석과 보류 중인 주문 을 구분하기 위해 주석 변수의 이름을 변경했다는 것뿐입니다. 내가 무엇을 잘못하고 있지?
 
Print("Buy Open");
 
DanilaMactep :

이 코드 줄은 소란을 피우지 않습니다 :( 즉시 다음과 같은 2개의 오류가 발생합니다.

'구매' - 선언되지 않은 식별자 TREND+_1,1.mq4 860 98


'열림' - 일부 연산자 예상 TREND+_V_1,1.mq4 860 102

그리고 코드는 이렇습니다


나는 조언에 따라 모든 것을 썼습니다. 유일한 차이점은 시장 주석과 보류 중인 주문 을 구분하기 위해 주석 변수의 이름을 변경했다는 것뿐입니다. 내가 무엇을 잘못하고 있지?

""를 놓쳤습니다.

블라디슬라프 안드루셴코 :

 Print ("Buy Open");


 
CopyRates는 OnCalculate 메서드에서 표시기의 첫 번째 시작과 함께 작동하지 않습니다.
                 MqlRates rates[];
                 if ( CopyRates ( _Symbol , _Period , ( datetime ) SeriesInfoInteger ( Symbol (), Period (), SERIES_SERVER_FIRSTDATE ), 1 , rates) == - 1 )
                {
                         return ( 0 );
                }

틱이 오면 인쇄물에서 볼 수 있지만 터미널에 표시기가없는 것처럼 복사되지 않고 표시기로 기간 만 변경하면 도움이되며 첫 번째 시작 후 표시기가 제대로 작동합니다.

 
BillionerClub :
CopyRates는 OnCalculate 메서드에서 표시기의 첫 번째 시작과 함께 작동하지 않습니다.

틱이 오면 인쇄물에서 볼 수 있지만 터미널에 표시기가없는 것처럼 복사되지 않고 표시기로 기간 만 변경하면 도움이되며 첫 번째 시작 후 표시기가 제대로 작동합니다.

도움말: CopyRates

메모

요청된 데이터 간격이 서버에서 사용 가능한 데이터를 완전히 벗어나면 함수는 -1을 반환합니다. 외부에서 데이터를 요청하는 경우   TERMINAL_MAXBARS   (차트의 최대 막대 수), 함수는 -1도 반환합니다.

표시기에서 데이터를 요청할 때 요청된 시계열이 아직 빌드되지 않았거나 서버에서 다운로드해야 하는 경우 함수는 즉시 -1을 반환하지만 로드/빌드 프로세스 자체는 시작됩니다.

Expert Advisor 또는 스크립트에서 데이터를 요청할 때 터미널에 이 데이터가 로컬에 없으면 서버에서 다운로드 가 시작되고 로컬 히스토리에서 데이터를 빌드할 수 있는 경우 필요한 시계열 구성이 시작되지만 아직 준비되지 않았습니다. 함수는 시간 초과가 만료되는 순간까지 준비될 데이터의 양을 반환하지만 기록 로드는 계속되고 다음 유사한 요청은 더 많은 데이터를 반환합니다.

시작 날짜 및 필요한 항목 수로 데이터를 쿼리할 때 날짜가 지정된 날짜(이전) 이하인 데이터만 반환됩니다. 이 경우 간격이 설정되고 최대 1초의 정확도로 고려됩니다. 즉, 값(볼륨, 스프레드, 표시기 버퍼의 값, 시가, 고가, 저가, 종가 또는 시간)이 반환되는 막대의 시가 날짜는 항상 지정된 날짜보다 작거나 같습니다.

지정된 날짜 범위의 데이터를 요청하면 요청한 간격에 해당하는 데이터만 반환되며 간격은 최대 1초의 정확도로 설정 및 고려됩니다. 즉, 값(볼륨, 스프레드, 지표 버퍼의 값, 시가, 고가, 저가, 종가 또는 시간)이 반환되는 모든 막대의 개장 시간은 항상 요청된 간격 내에 있습니다.

따라서 현재 요일이 토요일인 경우 start_time= Last_Tuesday stop_time=Last_Friday 인 주간 시간대의 데이터를 복사하려고 하면 주간 시간대의 시작 시간이 항상 일요일이기 때문에 함수는 0을 반환합니다. 그러나 단일 주간 막대가 지정된 범위에 속하지 않습니다.

현재 불완전한 막대에 해당하는 값을 가져와야 하는 경우 start_pos =0 및 count =1 인 호출의 첫 번째 형식을 사용할 수 있습니다 .

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
CopyRates - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5