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

 
STARIJ :

MA 크로스오버가 막대 사이에서 발생함 - 좋은 예를 들었습니다.

교차점의 왼쪽과 오른쪽 막대의 MA는 교차점의 가격과 다릅니다. 내가 이해하는 한 질문자는 인접한 막대 중 하나의 값 대신 교차점의 값이 정확히 필요합니다. 정확히 이 값은 선형 보간법을 사용하여 얻을 수 있습니다. 결국 막대 사이의 MA는 직선 세그먼트로 구성됩니다. 또는 인접한 막대에서 각 MA의 좌표를 가져옵니다. 분석적으로 2개의 직선을 그리고 교차점을 계산합니다. 2개의 유사한 삼각형을 고려하여 계산할 수 있습니다. 반대 질문이 발생합니다. 이것이 왜 필요한가요? 비용은 결과의 가치에 비례합니까? 결국 MA 매개변수를 최소한으로 변경하면 교차점이 이동합니다. 대부분의 경우 이것은 코스 프로젝트 책임자에게 요구됩니다.

설명 감사합니다, 이것이 쉽지 않다는 것을 깨달았습니다
 
missha32 :

계산에서 실수한 부분을 찾을 수 없습니다. 누군가 도와줄 수 있습니까?
마지막 날 의 고점과 저점을 찾아야 하지만 어떤 이유로 전일 전날에 이미 최솟값을 찾습니다.

이 모든 것 대신에 PERIOD_D1 기간과 해당 막대 또는 시간을 지정하는 CopyHighCopyLow 를 사용하는 것이 좋습니다.

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
 
missha32 : 마지막 날 의 고점과 저점을 찾아야 하는데, 어째서인지 저점은 이미 전일에 찾았습니다.
  // iHigh и iLow дают макс и мин цены указанного бара. Если PERIOD_D1, то целых суток  если 1 то вчерашних последних завершенных суток

   Alert ( "Максимум вчерашнего дня = " , iHigh ( _Symbol , PERIOD_D1 , 1 ));
   Alert ( "Минимум  вчерашнего дня = " , iLow ( _Symbol ,  PERIOD_D1 , 1 ));
모든 TimeFrame의 막대에는 하위 Timeframe의 막대에 해당하는 간격에 대한 일반화된 정보가 포함되어 있습니다. 최대값; 최저한의; 간격에서 첫 번째 막대의 개방 시간과 동일한 개방 시간; 간격의 마지막 막대의 닫는 시간과 동일한 닫는 시간; 간격 막대의 부피의 합과 같은 부피. 오히려 이 정보는 해당 배열에 포함됩니다.
 
STARIJ :
모든 TimeFrame의 막대에는 더 낮은 Timeframe의 해당 막대 간격에 대한 일반화된 정보가 포함되어 있습니다. High, Low, 시작 및 닫는 시간 , 볼륨은 하위 막대의 볼륨 합계와 동일합니다. 오히려 이 정보는 해당 배열에 포함됩니다.

나는 이것을 할 것이지만 추가 알고리즘에 따르면 어제의 다른 값을 찾아야 할 수도 있고 다시 함수를 다시 작성하는 데 걸림돌이있을 수 있기 때문에 데이터를 계산하지 못할 수도 있습니다.

내 코드에서 오류가 있는 위치를 알려준다면 알아낼 수 없습니다. 화면 에 막대 수를 표시하면 모든 것이 수렴되지만 최대 또는 최소를 얻으려고 할 때 표시되어야 하는 바가 표시되지 않습니다.

 
missha32 :

나는 이것을 할 것이지만 추가 알고리즘에 따르면 어제의 다른 값을 찾아야 할 수도 있고 다시 함수를 다시 작성하는 데 걸림돌이있을 수 있기 때문에 데이터를 계산하지 못할 수도 있습니다.

내 코드에서 오류가 있는 위치를 알려준다면 알아낼 수 없습니다. 화면 에 막대 수를 표시하면 모든 것이 수렴되지만 최대 또는 최소를 얻으려고 할 때 표시되어야 하는 바가 표시되지 않습니다.

거기에 너무 많이 쌓여서 손도 떨어질 지경입니다. 하나에서 다른 것으로의 변화의 산...

그리고 하루의 최대값과 최소값을 찾기 위해 모두?

그래서 당신을 위해 작동하지 않는 것은 무엇입니까?

 //+------------------------------------------------------------------+
double GetPriceMaximum( const string symbol_name, const ENUM_TIMEFRAMES timeframe, int shift){
   double array[ 1 ];
   ResetLastError ();
   if ( CopyHigh (symbol_name,timeframe,shift, 1 ,array)== 1 ) return (array[ 0 ]);
   Print ( __FUNCTION__ , " > Ошибка копирования цены High: " , GetLastError ());
   return ( WRONG_VALUE );
}
//+------------------------------------------------------------------+
double GetPriceMinimum( const string symbol_name, const ENUM_TIMEFRAMES timeframe, int shift){
   double array[ 1 ];
   ResetLastError ();
   if ( CopyLow (symbol_name,timeframe,shift, 1 ,array)== 1 ) return (array[ 0 ]);
   Print ( __FUNCTION__ , " > Ошибка копирования цены Low: " , GetLastError ());
   return ( WRONG_VALUE );
}
//+------------------------------------------------------------------+

오늘의 최대값을 알아야 합니까? 물론이죠:

 double max_price=GetPriceMaximum( Symbol (), PERIOD_D1 ,0);

어제의 고가를 알아야 합니까? 용이하게:

 double max_price=GetPriceMaximum( Symbol (), PERIOD_D1 ,1);

전날의 최소값을 알아야 합니까? 괜찮아요:

 double min_price=GetPriceMinimum( Symbol (), PERIOD_D1 ,2);

글쎄, 당신은 쉬운 길을 가고 순수하게 4중 함수를 사용할 수 있습니다:

 double price_max= iHigh ( Symbol (), PERIOD_D1 , 1 );

그러나 나는 조언하지 않을 것입니다. 새로운 언어 구성을 사용하면 언젠가 네 가지가 더 이상 지원되지 않을 것이라는 사실과 자기 훈련 및 그 모든 것에 대해 미리 자신과 코드를 준비할 것입니다.)

 
Artyom Trishkin :

거기에 너무 많이 쌓여서 이해하기 위해 손을 낮추었습니다. 하나에서 다른 것으로의 변화의 산...

그리고 하루의 최대값과 최소값을 찾기 위해 모두?

그래서 당신을 위해 작동하지 않는 것은 무엇입니까?

오늘의 최대값을 알아야 합니까? 물론이죠:

어제의 고가를 알아야 합니까? 용이하게:

전날의 최소값을 알아야 합니까? 괜찮아요:

글쎄, 당신은 쉬운 길을 갈 수 있고 순수하게 4중 함수를 사용할 수 있습니다:

그러나 나는 조언하지 않을 것입니다. 새로운 언어 구성을 사용하면 언젠가 네 가지가 더 이상 지원되지 않을 것이라는 사실과 자기 훈련 및 그 모든 것에 대해 미리 자신과 코드를 준비할 것입니다.)

내가 직접 오류를 발견했습니다(모든 부주의 가 iHighest , iLowest 매개변수를 잘못 읽음).

어제부터 다른 계산이 필요할 테니까 맞지 않아

 
missha32 :

내가 직접 오류를 발견했습니다(모든 부주의함이 iHighest, iLowest 매개변수를 잘못 읽음).

어제부터 다른 계산이 필요할 테니까 맞지 않아

단순하고 자연스러운 데이터 수집으로 인해 다른 계산에 방해가 되는 이유는 명확하지 않습니다.
 
missha32 : 각 빨간색 신호는 매수, 파란색은 매도 신호이므로 각 신호에 충전할 수 있습니다.

if(빨간색) OrderSend ( ... 구매 ...) ; if( 파란색 ) OrderSend( ... 판매 ...) ;

반대로 고점에서 매도, 저점에서 매수...

OnInit 함수 (이전 방식으로 초기화를 요청함)는 표시기가 시작될 때 실행됩니다(시간 프레임을 변경할 때, 다시 컴파일할 때도 ...). 사용된 모든 변수에는 할당된 값이 있어야 합니다. OnInit 함수 에는 SetIndexDrawBegin(0,i-1) 행이 포함되어 있습니다. 변수 i 에 값을 할당 하거나 상수를 사용해야 합니다.

 
STARIJ :

if(빨간색) OrderSend( ... 구매 ...) ; if( 파란색 ) OrderSend( ... 판매 ...) ;

반대로 고점에서 매도, 저점에서 매수...

OnInit 함수 (이전 방식으로 초기화를 요청함)는 표시기가 시작될 때 실행됩니다(시간 프레임을 변경할 때, 다시 컴파일할 때도 ...). 사용된 모든 변수에는 할당된 값이 있어야 합니다. OnInit 함수 에는 SetIndexDrawBegin(0,i-1) 행이 포함되어 있습니다. 변수 i 에 값을 할당 하거나 상수를 사용해야 합니다.

솔직히 저는 Mql4 프로그래밍이 처음이라 아무것도 이해하지 못했습니다. 어렵지 않다면 코드를 도와줄 수 있습니다.
 
missha32 :
솔직히 저는 Mql4 프로그래밍이 처음이라 아무것도 이해하지 못했습니다. 어렵지 않다면 코드를 도와줄 수 있습니다.

프리랜서는 일반적으로 코드를 돕습니다.

여기 - 알고리즘 또는 실수를 수정하십시오. 그러나 새로운 방식으로 다시 작성하지 마십시오.