mql5 - 마지막 거래 이후 일정 시간 후 수직선 - 페이지 3

 
renatmt5 :
나는 last_time과 result 변수가 우리가 작업하고 있는 원하는 값이라는 것을 올바르게 이해했습니다. 그리고 결과 이름은 선이 미래로 이동(다시 그리기)되는 기간을 결정합니다. 그런 다음 마지막 거래에서 수신된 데이터를 이미 고려하여 라인을 이동하려면 "기간 동안의 이익" 코드 블록을 "수직 라인 이동" 블록 앞에 배치해야 합니다.
이것이 맞습니까? 아니면 내가 뭔가를 혼동하고 있습니까?

LastProfitForPeriod 함수의 내부 변수입니다.

결국, 우리 는 마지막 거래의 이익의 가치를 얻어야 합니다, 그렇죠? 여기에 LastProfitForPeriod()가 있으며 마지막 거래의 이익을 제공합니다. 이 이익에 따라 수직선을 이동하는 것이 남아 있습니다.

 
Vladimir Karputov :

따라서 최종 터치가 남아 있습니다.받은 이익에 따라 라인을 이동하십시오.

이동 규칙이 무엇인지 상기시켜 줍니까?

죄송합니다. 설명하겠습니다.

- 마지막 거래의 결과가 음수이고 그날의 결과가 음수이면 미래로 24시간(일)의 거리에 수직선이 그려집니다.
- 마지막 거래의 결과가 음수이고 당일의 결과가 양수이면 미래로 2시간 거리에 수직선이 그려집니다.
- 마지막 거래의 결과가 양수이면 미래로 1시간 거리에 수직선이 그려집니다.

 
Vladimir Karputov :

여기에서 "before" 매개변수가 미래에 수행되어야 하는 이유에 대한 설명을 찾았습니다.


고맙습니다!

 

조건에 따라 마지막 거래가 이루어진 날의 결과도 필요합니다(당일에 여러 거래가 있었던 경우)

 
renatmt5 :

죄송합니다. 설명하겠습니다.

- 마지막 거래의 결과가 음수이고 그날의 결과가 음수이면 미래로 24시간(일)의 거리에 수직선이 그려집니다.
- 마지막 거래의 결과가 음수이고 당일의 결과가 양수이면 미래로 2시간 거리에 수직선이 그려집니다.
- 마지막 거래의 결과가 양수이면 미래로 1시간 거리에 수직선이 그려집니다.

그리고, 그래서 당신은 여전히 당일에 대해 별도로 이익을 내야합니다.


LastProfitForPeriod()를 조정합니다. 입력 시간 매개변수 "from" 및 "to"를 제거하고 이미 함수 내부에 이러한 매개변수를 형성합니다. 우리는 하루의 시작 시간("from")을 형성하고 "to" 현재 시간 + 요일을 가져옵니다.


결과적으로 LastProfitForPeriod()에서 두 개의 매개변수를 참조로 전달합니다. 당일의 이익과 마지막 거래의 이익입니다.


우리는 iTime 을 사용하여 하루의 시작을 얻습니다.

   datetime from_date= iTime ( Symbol (), PERIOD_D1 , 0 );

- 즉, 현재 일간 바의 영업시간입니다.

 

컴파일 - 훌륭합니다!
다음 사항만 있습니다.
1) 지표 적용 시 Profit last day 변수 값은 마지막 거래가 발생한 마지막 날이 아닌 전체 계정에 대한 총 이익이 아닌 총 이익이 할당됩니다. 그러나 표시기가 다시 계산되면(약 1-2분 후) 값이 올바른 값(마지막 거래가 이루어진 날의 총 이익)으로 변경됩니다. 나는 마지막 계정으로만 판단합니다. 거래는 오늘이었다.
2) 차트에서 지표 삭제 시 좌측 상단 의 코멘트는 삭제되지 않습니다. 개체 목록을 지울 때도 삭제되지 않습니다. 값이 사라지도록 터미널을 다시 시작합니다. 물론 편리하지 않습니다. 더 쉽게 만드는 방법 - 모르겠습니다 :)

마지막 거래(이익 기간 동안). 미래로의 이동을 n시간 단위로 이미 고려한 선을 그리려면 이익_마지막_일 및 이익_마지막_거래 데이터를 기반으로 계산됩니다.

유형

if (profit_last_day<=0 및 이익_last_deal<=0){n=24;}

else (profit_last_day>0 및 이익_last_deal<=0){n=2;}

그렇지 않으면 {n=1;}
//---
시간 = last_time + n;
//---
더 나아가 우리는 마지막에 상대적인 시간 오프셋으로 선을 그립니다. 계산된 시간 가치를 사용하여 거래...

 

버전 1.002에서 보호 기능이 도입되었습니다. 일일 바 의 여는 시간이 "0"을 반환 하면 운명이 아니므로 종료 합니다.

 //+------------------------------------------------------------------+
//| Profit for the period                                            |
//+------------------------------------------------------------------+
void LastProfitForPeriod( double &profit_last_day, double &profit_last_deal)
  {
   datetime from_date= iTime ( Symbol (), PERIOD_D1 , 0 );
   if (from_date== D'1970.01.01 00:00' )
       return ;
   datetime to_date= TimeCurrent ()+ 60 * 60 * 24 ;

   long last_time= 0 ;


이제 거래 계정의 전체 수명 동안 요청이 없습니다.

 
블라디미르, 다시 한 번 노고에 깊은 감사를 드립니다!
나는 내 양심이 나를 전혀 괴롭히지 않고 연습을 위해 코드를 직접 선택하려고 노력할 것입니다 :) 성공하면 구독을 취소하겠습니다.
 
renatmt5 :
블라디미르, 노고에 진심으로 감사드립니다!
나는 내 양심이 나를 전혀 괴롭히지 않고 연습을 위해 코드를 직접 선택하려고 노력할 것입니다 :) 성공하면 구독을 취소하겠습니다.

좋은.

 
그건 그렇고, 당신이 추가 한 보호에는 다음과 같은 점이 있습니다. 올바른 값을 계산하기 전에 1-2분의 지연이 있기 때문에 변수가 0과 같으므로 빠른 업데이트를 위해 현재 시간 프레임을 다른 시간 프레임으로 전환합니다. 값은 즉시 다시 계산됩니다. 아마도 이 원칙에 따라 일종의 소프트웨어 목발을 만드는 것이 가능할까요?