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

 

이 사이트에서 복사한 코드에서 Magic 이전에 컴파일러가 "not 선언된 식별자"를 쓰는 이유를 말씀해 주시겠습니까?

 for ( int pos= 0 ; pos<= OrdersTotal ()- 1 ; pos ++) 
{
 if ( OrderSelect (pos, SELECT_BY_POS)== true )
  { if (OrderSymbol()== Symbol ()&&OrderMagicNumber()==Magic &&OrderCloseTime()== 0 ) // если у Вас есть отложенные ордера и открытие
   return ;}
 else
   Print ( "OrderSelect() вернул ошибку - " , GetLastError ());
}            
 //продолжае
 
VasiliKolchanov :

이 사이트에서 복사한 코드에서 Magic 이전에 컴파일러가 "not 선언된 식별자"를 쓰는 이유를 말씀해 주시겠습니까?

선언되지 않았기 때문이어야 합니다.

처음에 선언합니다. 또는 고문 매개 변수 또는 상수 .. 또는 변수로, 글쎄, 적어도 어떻게 든 .. 엔티티가 존재해야합니다 :-)

input int Magic=5566; // это чтобы он был в параметрах и можно поменять

// или const int Magic = 8899;

 
VasiliKolchanov :

이 사이트에서 복사한 코드에서 Magic 전에 컴파일러가 "not 선언된 식별자"를 쓰는 이유를 알려주시겠습니까?

Magic 식별자가 사용되기 때문에 유형(및 각각 값)은 어디에도 설명되지 않습니다. 해당 이름으로 변수(또는 상수)를 선언하고 값을 할당해야 합니다.

 
VasiliKolchanov :

이 사이트에서 복사한 코드에서 Magic 전에 컴파일러가 "not 선언된 식별자"를 쓰는 이유를 알려주시겠습니까?

코드 어디에도 선언되어 있지 않기 때문에 명백합니다.
 
Artyom Trishkin :
코드 어디에도 선언되어 있지 않기 때문에 명백합니다.
모두에게 감사합니다!
 

얘들 아, 그것을 알아내는 방법과 시작 위치를 알려주십시오!

예: 0.01이 많은 15개의 주문이 있습니다. 0.07의 거래량으로 어떤 시점에서 거래를 마감해야 합니다.

문제는 하나의 OrderClose(..)로 7개의 주문 또는 0.07랏의 볼륨을 마감하는 방법입니다.

즉시 0.07을 넣으면 거래량이 0.01인 거래가 표시되지 않습니다.

프로그래밍이 처음이라면

 
Rustam Bikbulatov :

얘들 아, 그것을 알아내는 방법과 시작 위치를 알려주십시오!

예: 0.01이 많은 15개의 주문이 있습니다. 0.07의 거래량으로 어떤 시점에서 거래를 마감해야 합니다.

문제는 하나의 OrderClose(..)로 7개의 주문 또는 0.07랏의 볼륨을 마감하는 방법입니다.

즉시 0.07을 넣으면 거래량이 0.01인 거래가 표시되지 않습니다.

프로그래밍이 처음이라면

한 번의 주문으로 마감할 수 없습니다. 주문만 선택 하고 각 주문을 순차적으로 삭제할 수 있습니다. 또한 더 작은 볼륨의 주문을 삭제한 경우에도 여전히 열려 있는 볼륨이 있습니다. 우리는 그것을 우리의 남은 미닫이 볼륨과 비교합니다. 0.07의 양이 소진될 때까지 닫습니다. 유일한 방법입니다.

 
Rustam Bikbulatov :

얘들 아, 그것을 알아내는 방법과 시작 위치를 알려주십시오!

예: 0.01이 많은 15개의 주문이 있습니다. 0.07의 거래량으로 어떤 시점에서 거래를 마감해야 합니다.

문제는 하나의 OrderClose(..)로 7개의 주문 또는 0.07랏의 볼륨을 마감하는 방법입니다.

즉시 0.07을 넣으면 거래량이 0.01인 거래가 표시되지 않습니다.

프로그래밍이 처음이라면

브로커가 카운터 마감 사용을 허용하면 0.07의 거래량으로 반대 주문을 열 수 있으므로 이 거래량에 대한 손익 가격을 고정할 수 있습니다. 글쎄, 당신은 여전히 7개의 닫기 작업을 수행해야 합니다. 반대의 닫기 작업(OrderCloseBy() 함수)입니다. 이 접근 방식을 사용하면 거래 작업 이 하나 더 얻어집니다. 이점은 7개의 주문이 모두 같은 가격으로 마감된다는 것입니다.

 

안녕하세요.

조언을 부탁드립니다. 그것은 주로 고문의 속도, 그리고 아마도 쓰기의 신뢰성과 정확성에 관한 것입니다.

우리는 각 틱에서 미결 및 보류 중인 주문 에 액세스하고 필요한 경우 변경하는 것에 대해 이야기하고 있습니다.

OrderSelect 에 대한 도움말은 다음과 같습니다. " SELECT_BY_POS 매개변수를 사용하여 순차적으로 주문을 선택할 때 정보는 거래 서버 에서 가져온 순서대로 제공됩니다. "

그리고 여기에서 유형, 진입 가격 및 예를 들어 고유한 주문 설명을 저장할 배열을 만들 수 있다는 질문이 생깁니다. 각 틱에서 배열을 실행하고 필요한 경우 OrderSelect 함수를 호출하고 고유한 주문 설명을 기반으로 선택하시겠습니까?

 
Decromor :

안녕하세요.

조언을 부탁드립니다. 그것은 주로 고문의 속도, 그리고 아마도 쓰기의 신뢰성과 정확성에 관한 것입니다.

우리는 각 틱에서 미결 및 보류 중인 주문 에 액세스하고 필요한 경우 변경하는 것에 대해 이야기하고 있습니다.

OrderSelect 에 대한 도움말은 다음과 같습니다. " SELECT_BY_POS 매개변수를 사용하여 순차적으로 주문을 선택할 때 정보는 거래 서버 에서 가져온 순서대로 제공됩니다. "

그리고 여기에서 유형, 진입 가격 및 예를 들어 고유한 주문 설명을 저장할 배열을 만들 수 있다는 질문이 생깁니다. 각 틱에서 배열을 실행하고 필요한 경우 OrderSelect 함수를 호출하고 고유한 주문 설명을 기반으로 선택하시겠습니까?

OrderSelect()는 터미널 내부에서 실행되며 서버에 대한 요청은 없습니다. 따라서 각 틱에서 주문 목록에 액세스하는 데 아무런 문제가 없습니다. 대부분의 고문이 그렇게 합니다.

그러나 어레이에 대한 질문은 이미 프로그램의 아키텍처를 나타냅니다. 많은 주문으로 운영되는 복잡한 Expert Advisor의 경우 이것은 단순히 필요합니다. EA가 간단한 논리로 하나의 주문으로 작동하면 어레이가 중복됩니다.

주문의 배열이 있더라도 OrderSelect()를 호출하지 않고는 할 수 없다는 사실을 명확히 할 가치가 있습니다. 결국, 각 틱에서 이 주문이 여전히 존재하는지 여부를 확인해야 합니다. 설정을 변경할 수도 있습니다.