포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 769

 
evillive :
Bai의 이전 번호를 기억하고 현재 번호와 비교하십시오. 다른 방법은 무엇입니까?
그것이 작동하지 않는 것입니다
 
Leonid123456 :
그것이 작동하지 않는 것입니다.
정수 변수를 만들고 구매 횟수를 할당한 다음 다시 구매 횟수를 계산해야 할 때 해당 변수의 값과 비교가 작동하지 않습니까?
 
evillive :
정수 변수를 만들고 구매 횟수를 할당한 다음 다시 구매 횟수를 계산해야 할 때 해당 변수의 값과 비교가 작동하지 않습니까?
고맙습니다!
 
tuner :

이 가치에는 당혹스러운 것이 없으며 모든 것이 정확하지만 이것은 그것에 관한 것이 아닙니다.

특히 금요일에 대한 문제는 현지 시간이 브로커의 시간보다 X시간 더 많다면 관련이 없습니다.

그러나 로컬 컴퓨터의 브로커와 +1이 아니라 -1시간의 차이가 있다고 상상해 보십시오.

그리고 다음과 같은 간단한 조건이 있습니다.

이 경우:

1. 브로커는 금요일의 첫 번째 틱을 가질 것입니다. 예를 들어, 오늘의 틱은 시간이 2014.11.07 00:00입니다.

2. 우리는 1970-01-01 00:00에서 고려 된 틱 시간, 즉 2014/11/07 00:00 까지 경과 한 초 수를 취합니다.

3. 우리는 1970년 1월 1일 00:00 에서 2014 년 11월 6일 21시 30분까지 경과한 시간(초)을 취합니다(로컬 컴퓨터의 시간을 사용하기 때문에 정확히 어제 날짜입니다. 고려한 틱의 틱은 금요일이 아니라 6번째 숫자인 목요일, 더 정확히는 2014.11.06 23:00, 1시간 차이)

짜잔, 2번 지점의 시간이 3번 지점보다 큽니다.

이것은 코드에 지정된 인쇄가 첫 번째 금요일 틱에 실행된다는 것을 의미합니다. 그러나 StringToTime() 함수 가 브로커의 서버에서 날짜를 가져오면 모든 것이 의도한 대로 작동하지만 인쇄는 시간이 21:30 을 초과합니다

예... 문제를 즉시 이해하지 못했습니다. 나는 항상 서버보다 로컬에 하나 더 있고 그런 문제가 발생하지 않았습니다. 유일한 방법은 날짜를 고려하고 단축된 시간 표현을 사용하지 않는 것입니다.
 
AlexeyVik :
예... 문제를 즉시 이해하지 못했습니다. 나는 항상 서버보다 로컬에 하나 더 있고 그런 문제가 발생하지 않았습니다. 유일한 방법은 날짜를 고려하고 단축된 시간 표현을 사용하지 않는 것입니다.

네, TimeCurrent()에서 추출한 날짜와 함께 함수에 적절한 시간을 넣는 옵션으로, 이 경우에는 문제가 없어 보일 것입니다.

그건 그렇고, 내 로컬 컴퓨터 시간은 항상 브로커 시간보다 길지만, 그럼에도 불구하고 이 문제는 지난 금요일에 위에서 설명한 방식으로 두 개의 다른 브로커(하나는 데모, 두 번째는 실제)에서 동시에 나타났습니다. 왜 이런 일이 일어났는지 여전히 미스터리입니다. 그러나 이미 코드가 다른 코드로 교체되었으므로 더 이상 이러한 문제가 발생하지 않습니다.

 
tuner :

네, TimeCurrent()에서 추출한 날짜와 함께 함수에 적절한 시간을 넣는 옵션으로, 이 경우에는 문제가 없어 보일 것입니다.

그건 그렇고, 내 로컬 컴퓨터 시간은 항상 브로커 시간보다 길지만, 그럼에도 불구하고 이 문제는 지난 금요일에 위에서 설명한 방식으로 두 개의 다른 브로커(하나는 데모, 두 번째는 실제)에서 동시에 나타났습니다. 왜 이런 일이 일어났는지 여전히 미스터리입니다. 그러나 이미 코드가 다른 코드로 교체되었으므로 더 이상 이러한 문제가 발생하지 않습니다.

예, 몇 가지 옵션이 있습니다. 예를 들어, 서버 시간이 아닌 현지 시간에 따라 금요일의 시작을 확인하십시오. 사실,이 경우 컴퓨터의 시간이 잘못되면 많은 문제를 일으킬 수 있습니다.
 
evillive :
정수 변수를 만들고 구매 횟수를 할당한 다음 다시 구매 횟수를 계산해야 할 때 해당 변수의 값과 비교가 작동하지 않습니까?

코드 예를 들어 주시겠습니까?

결국, 비교 후에 변수를 다시 기록해야 합니다. 그렇지 않으면 코드가 같은 방식으로 끝없이 실행됩니다. (6이었다가 7이 되었다고 하자, 비교 후 7이 된 변수를 입력해야 함)

 
Leonid123456 :

코드 예를 들어 주시겠습니까?

결국, 비교 후에 변수를 다시 기록해야 합니다. 그렇지 않으면 코드가 같은 방식으로 끝없이 실행됩니다. (6이었다가 7이 되었다고 하자, 비교 후 7이 된 변수를 입력해야 함)


걱정하지 마세요. 제가 사용하는 Kim의 기능은 다음과 같습니다. 모든 빌드에서 작동합니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество позиций.                                 |
//+----------------------------------------------------------------------------+
int NumberOfPositions( string sy= "" , int op=- 1 , int mn=- 1 ) {
   int i, k= OrdersTotal (), kp= 0 ;
   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) kp++;
  } } } } }
   return (kp);
}
//+----------------------------------------------------------------------------+

그리고 이것은 추가로:

   int BuyPos = NumberOfPositions( Symbol (),OP_BUY, Magic);
   int SellPos = NumberOfPositions( Symbol (),OP_SELL,Magic);

다음 작업에 따라 확인만 하면 됩니다.

 if (BuyPos >= n) 
 
borilunad :

걱정하지 마세요. 제가 사용하는 Kim의 기능은 다음과 같습니다. 모든 빌드에서 작동합니다.

그리고 이것은 추가로:

다음 작업에 따라 확인만 하면 됩니다.

매우 감사합니다!
 
borilunad :

걱정하지 마세요. 제가 사용하는 Kim의 기능은 다음과 같습니다. 모든 빌드에서 작동합니다.

그리고 이것은 추가로:

다음 작업에 따라 확인만 하면 됩니다.

연결되었습니다. 끝없이 작동합니다...

이 기사 https://www.mql5.com/ru/articles/1399의 마지막 방법을 사용하여 문제를 해결했습니다.