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

 
Lowech :
   int nomber = OrdersHistoryTotal();
   int tip=OrderType();
   if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))  
안녕하세요. 도움이 필요하다. 닫힌 매도 주문이 있으면 다음 주문은 매수로만 열 수 있습니다. 코드에 무엇이 잘못되었습니까? 알려주세요.

이 조각의 두 번째 줄에 오류가 있다고 이미 들었습니다. OrderType() 함수를 호출 하기 전에 OrderSelect() 함수를 사용 하여 주문을 선택해야 합니다.

3행에 오류가 있습니다. 하지만 번호가 number인 주문이 있습니까? 최소 숫자가 1인 경우, 즉 계정이 1부터 시작하면 최대 수는 그 수와 같습니다( 총 5개의 주문이 있다고 가정합니다: 주문 번호 1, 2, 3, 4, 5). 그러나 주문은 0부터 번호가 매겨집니다. 커서를 OrdersHistoryTotal에 놓고 F1 키를 누릅니다. 예를 참조하세요. 그래서 최대 주문 번호는 무엇입니까?

 
Aleksey Vyazmikin :

앞서 당신은 월의 날짜를 7로 나누고 반올림하는 것을 제안했는데, 이는 두 번째 테이블에서 수행됩니다.

나는 당신의 알고리즘을 이해하지 못합니다.

이제 제 생각은 다음과 같습니다.

1. 해당 월의 1일에 요일을 결정합니다 .

2. 이번주말까지 남은 일수 확인 (수요일(3) ~ 월요일 7-3=4)

3. 5일차 - 두 번째 주의 시작

4. 루프에서 더 나아가 어떤 주를 찾고 있는지, 숫자가 5 + 7 * x에서 5 + 7 * (x + 1) 범위에 속하는 경우 x는 주 번호에서 첫 번째 주 뺀 값입니다. 주를 찾았습니다

그러나 더 쉬운 옵션이 얼마나 어려울 수 있습니까?

Alex, 우리는 다른 것에 대해 이야기하고 있습니다. 그 달의 어느 주가 그 달의 날을 포함하는 것이 아니라, 이번 달에 같은 이름을 가진 주의 첫 번째 날을 포함하는지 결정하는 것이 작업이었습니다. 이것은 다른 작업이며 따라서 다른 솔루션입니다.

63년 동안 나는 여전히 그 달의 주 수를 계산하는 방법을 이해할 수 없습니다. 러시아의 관례에 따라 주의 첫째 날이 월요일이라고 가정해 보겠습니다. 월이 일요일에 시작하면 월요일을 어떻게 계산합니까? 두 번째 주가 시작되었나요? 아니면 어떻게??? 이것은 수사학적 질문이며 이 문제에 대해 토론을 시작할 필요가 없습니다.

 
Alexey Viktorov :

Alex, 우리는 다른 것에 대해 이야기하고 있습니다. 그 달의 어느 주가 그 달의 날을 포함하는 것이 아니라, 이번 달에 같은 이름을 가진 주의 첫 번째 날을 포함하는지 결정하는 것이 작업이었습니다. 이것은 다른 작업이며 따라서 다른 솔루션입니다.

63년 동안 나는 여전히 그 달의 주 수를 계산하는 방법을 이해할 수 없습니다. 러시아의 관례에 따라 주의 첫째 날이 월요일이라고 가정해 보겠습니다. 월이 일요일에 시작하면 월요일을 어떻게 계산합니까? 두 번째 주가 시작되었나요? 아니면 어떻게??? 이것은 수사학적 질문이며 이 문제에 대해 토론을 시작할 필요가 없습니다.


분명한. 저에게 질문은...

 
Alexey Viktorov :

Alex, 우리는 다른 것에 대해 이야기하고 있습니다. 그 달의 어느 주가 그 달의 날을 포함하는 것이 아니라, 이번 달에 같은 이름을 가진 주의 첫 번째 날을 포함하는지 결정하는 것이 작업이었습니다. 이것은 다른 작업이며 따라서 다른 솔루션입니다.

63년 동안 나는 여전히 그 달의 주 수를 계산하는 방법을 이해할 수 없습니다. 러시아의 관례에 따라 주의 첫째 날이 월요일이라고 가정해 보겠습니다. 월이 일요일에 시작하면 월요일을 어떻게 계산합니까? 두 번째 주가 시작되었나요? 아니면 어떻게??? 이것은 수사학적 질문이며 이 문제에 대해 토론을 시작할 필요가 없습니다.

나는 Yandex에서 답을 찾았습니다 - 4가지 방법. 나는 네 번째 방법 인 "통해"를 좋아합니다. 1월 1일은 그 해의 첫 번째 주, 7일 후, 1월 8일은 한 해의 두 번째 주, 그리고 연말까지 계속됩니다. 몇 달 동안 동일
Онлайн калькулятор: Определение номера недели по дате
  • Timur пользователь planetcalc
  • planetcalc.ru
Калькулятор ниже определяет порядковый номер недели в году. Как выяснилось, это не совсем тривиальный вопрос, и есть целых четыре разных способа подсчитать номер недели. Первый способ: Стандарт ISO 8601 и соответствующий ему ГОСТ ИСО 8601-2001 «ПРЕДСТАВЛЕНИЕ ДАТ И ВРЕМЕНИ» — официальный способ расчета номера недели в Российской Федерации. По...
 
Darirunu : 매우 어렵습니다. 아마도 더 쉬운 옵션이 있을 것입니다. 누구나 공유할 수 있습니까?
 //+-------------------------------------------------------+
//| Проверка дней недели                       PRVERKA.mq4|
//+-------------------------------------------------------+

#property strict
string Дни[ 7 ]={ "Вс" , "Понедельник" , "Вторник" , "Среда" , "Четверг" , "Пятница" , "Сб" };
void OnStart ()
{
   int День= Day (), ДеньН= DayOfWeek ();
   Alert ( "----------------------" );
   Alert ( "Сейчас на компьютере: " , TimeToStr ( TimeLocal (), TIME_DATE ));
   Alert ( "Последний тик с сервера: " , TimeToStr ( TimeCurrent (), TIME_DATE ), " Число " , День, " " , Дни[ДеньН]);

   int ДеньНачалаМесяца = (ДеньН-День+ 36 ) % 7 ;
   Alert ( "ДеньНеделиПервогоЧисла = " , Дни[ДеньНачалаМесяца]);

   int ЧислоПервойПятницы = ДеньНачалаМесяца== 6 ? 7 : 6 -ДеньНачалаМесяца;
   int ЧислоВторогоПонедл = (ДеньНачалаМесяца< 2 ? 9 : 16 )-ДеньНачалаМесяца;

   Alert ( "ЧислоПервойПятницы = " , ЧислоПервойПятницы, "  ЧислоВторогоПонедл = " , ЧислоВторогоПонедл);

   if (ЧислоВторогоПонедл>День)
  {
     Alert ( "Надо подождать числа " , ЧислоВторогоПонедл+ 1 );
     return ;
  }

   // Смотрим свечи, бары, бычьи, медвежьи
}
여기에서 위의 알고리즘에 따라 아래에서 위로 읽습니다.
 
STARIJ :

이 조각의 두 번째 줄에 오류가 있다고 이미 들었습니다. OrderType() 함수를 호출 하기 전에 OrderSelect() 함수를 사용 하여 주문을 선택해야 합니다.

3행에 오류가 있습니다. 하지만 번호가 number인 주문이 있습니까? 최소 숫자가 1인 경우, 즉 계정이 1부터 시작하면 최대 수는 그 수와 같습니다(총 5개의 주문이 있다고 가정합니다: 주문 번호 1, 2, 3, 4, 5). 그러나 주문은 0부터 번호가 매겨집니다. 커서를 OrdersHistoryTotal에 놓고 F1 키를 누릅니다. 예를 참조하세요. 그래서 최대 주문 번호는 무엇입니까?

int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
   int tip=OrderType();
   

그리고 지금 맞습니까?

 
Lowech :
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))   - так какой наибольший номер ордера?
   int tip=OrderType();

그리고 지금 맞습니까?

스크립트를 작성하고 각 명령문 뒤에 Alert() 함수 와 함께 정보 + GetLastError() 표시 - 바로 위의 스크립트 예제 참조
 
STARIJ :
스크립트를 작성하고 각 명령문 뒤에 Alert() 함수 와 함께 정보 + GetLastError() 표시 - 바로 위의 스크립트 예제 참조

인쇄의 경우에만 _LastError 변수에서 오류 코드를 가져오는 것이 좋습니다. 그렇지 않으면 가벼운 "디버그 인쇄"로 논리를 파괴할 수 있습니다.

GetLastError()는 GetXXX()에 대해서도 명확하지 않은 작업을 수행합니다. 내부 상태를 변경하여 오류 코드를 0으로 재설정합니다.

 
Maxim Kuznetsov :

인쇄의 경우에만 _LastError 변수에서 오류 코드를 가져오는 것이 좋습니다. 그렇지 않으면 가벼운 "디버그 인쇄"로 논리를 파괴할 수 있습니다.

GetLastError()는 GetXXX()에 대해서도 명확하지 않은 작업을 수행합니다. 내부 상태를 변경하여 오류 코드를 0으로 재설정합니다.

글쎄, 그것은 취향의 문제입니다 - 변수에 오류 코드를 저장하고 오류 를 재설정하거나 나중에 사용하기 위해 _LastError에 저장하십시오

[삭제]  
STARIJ :
여기에서 위의 알고리즘에 따라 아래에서 위로 읽습니다.
당신은 그것을 빨리 얻었다. 어떻게 바를 찾을 수 있습니까? 사용할 루프 또는 시간 구조에서?