MT4에 대한 어드바이저를 작성할 때 이 어드바이저의 적어도 하나의 주문이 열렸는지 여부를 프로그래밍 방식으로(즉, 어드바이저 자체의 코드에서) 결정하는 것이 필요하게 되었습니다. 말해봐, 그런 기능이 있어?
이 f-I가 적합합니까?
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru/ |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+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 );}
사용 예: 함수 자체를 코드의 맨 끝에(START 함수 외부) 배치하고 위치를 열 때 다음을 확인합니다.
if( NumberOfPositions (NULL,OP_BUY, Magic )<1){// если нет окрытых OP_BUY позиций с заданным магиком, покупаем
ticket =OrderSend(Symbol(),0, Lots ,Ask, Slippage ,Bid- SL *Point,Ask+ TP *Point,NULL, Magic ,0,Blue);}
위치가 아니라 보류 중인 주문이 필요한 경우 f-th를 사용할 수 있습니다.
NumberOfOrders() 함수. 이 함수는 주문 수를 반환합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다. sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 악기의 순서만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다. op - 보류 중인 주문 유형. 유효한 값: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP 또는 -1. 기본값 -1은 모든 주문을 의미합니다. mn - 주문 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
사용 예: 함수 자체를 코드의 맨 끝에(START 함수 외부) 배치하고 위치를 열 때 다음을 확인합니다.
위치가 아니라 보류 중인 주문이 필요한 경우 f-th를 사용할 수 있습니다.
NumberOfOrders() 함수. 이 함수는 주문 수를 반환합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다. sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 악기의 순서만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다. op - 보류 중인 주문 유형. 유효한 값: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP 또는 -1. 기본값 -1은 모든 순서를 의미합니다. mn - 주문 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
힌트를 주셔서 대단히 감사합니다. 우리는 이것을 시도했지만 어떤 이유로 작동하지 않습니다. 코드 어딘가에 오류가 있는지 확인하십시오.
bool Open_Buy (){bool res =false;if( условие_1 ){if( NumberOfPositions (NULL, Magic )<1)// если нет открытых позиций с заданным магиком{ res =true;}}else{if( условие_1 ){if( NumberOfPositions (NULL, Magic )>1)// если советник уже открывал позиции{if( условие_2 ){
res =true;}}}}return( res );}
아이디어는 EA가 아직 어떤 주문도 열지 않았다면(열린 주문도 닫혀 있지 않은 주문도 없음), 구매 조건의 첫 번째 조건만 트리거된다는 것입니다.그리고 고문이 과거에 이미 주문을 연 경우 주문을 열 때 첫 번째 + 두 번째 조건이 작동해야 합니다.
질문이 가능합니다.
빼기 없이 숫자를 얻는 방법, Open[1] < Close[1] 이고 Open [1]-Close[1]을 뺄 때 빼기가 있는 값을 얻으면 항상 빼기 양수 값, Open 과 Close 사이의 거리를 계산해야 합니다. 다른 방법으로 먹을 수 있습니까?
고맙습니다.
질문이 가능합니다.
빼기 없이 숫자를 얻는 방법, Open[1] < Close[1]이고 Open[1]-Close[1]을 뺄 때 빼기가 있는 값을 얻으면 항상 빼기 양수 값, Open과 Close 사이의 거리를 계산해야 합니다. 다른 방법으로 먹을 수 있습니까?
고맙습니다.
https://docs.mql4.com/en/math/MathAbs
https://docs.mql4.com/en/math/MathAbs
;) 감사해요!
안녕하세요!
MT4에 대한 어드바이저를 작성할 때 이 어드바이저의 적어도 하나의 주문이 열렸는지 여부를 프로그래밍 방식으로(즉, 어드바이저 자체의 코드에서) 결정하는 것이 필요하게 되었습니다. 말해봐, 그런 기능이 있어? 아마도 있는 경우 다음과 같이 보일 것입니다.
Bool(이 매직 넘버로 EA 주문이 열렸는지 여부)
{ 응답 = 참/거짓 }
?
전문가-도와주세요-그들은 이미 머리를 부러 뜨 렸습니다.
피. 에스. - 주문 번호를 고려하여 옵션을 시도 - 작동하지 않음
안녕하세요!
MT4에 대한 어드바이저를 작성할 때 이 어드바이저의 적어도 하나의 주문이 열렸는지 여부를 프로그래밍 방식으로(즉, 어드바이저 자체의 코드에서) 결정하는 것이 필요하게 되었습니다. 말해봐, 그런 기능이 있어?
이 f-I가 적합합니까?
사용 예: 함수 자체를 코드의 맨 끝에(START 함수 외부) 배치하고 위치를 열 때 다음을 확인합니다.
위치가 아니라 보류 중인 주문이 필요한 경우 f-th를 사용할 수 있습니다.
NumberOfOrders() 함수.
이 함수는 주문 수를 반환합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다.
sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 악기의 순서만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
op - 보류 중인 주문 유형. 유효한 값: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP 또는 -1. 기본값 -1은 모든 주문을 의미합니다.
mn - 주문 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
https://www.mql5.com/ru/forum/107476/page12
파일이 무엇을 제공하는지 설명하십시오:
가능하다면 간단한 것입니다.
고맙습니다.
파일이 무엇을 제공하는지 설명하십시오:
가능하다면 간단한 것입니다.
고맙습니다.
이른바 "라이브러리 파일"입니다. 자주 사용하는 기능은 이 파일에 저장됩니다. 소스 다운로드를 피하기 위해 사용됩니다. 라이브러리 파일이 "선언"된 경우 선언된 파일의 함수는 소스에 포함된 것처럼 사용할 수 있습니다.
파일이 무엇을 제공하는지 설명하십시오:
가능하다면 간단한 것입니다.
고맙습니다.
이 파일의 기능을 사용(호출)할 때(이미 처음에 MT4에 포함됨) 어드바이저의 잘못된 작동의 경우 로그에서 코드에서 만든 오류 번호를 볼 수 있습니다.
예를 들어 GetLastError() 함수를 호출합니다.
이 경우 코드에 오류가 있거나 외부 매개변수를 잘못 설정하면 이 오류의 번호가 로그에 표시됩니다.
예를 들어 - 130입니다.
그리고 페이지의 번호 디코딩을 볼 수 있습니다 - https://book.mql4.com/ru/appendix/errors
그리고 더 이상 전체 코드를 삽질할 필요가 없습니다. 우리는 이미 이 숫자로 알고 있습니다 - 정확히 어디에서 실수가 있었는지!
이 f-I가 적합합니까?
사용 예: 함수 자체를 코드의 맨 끝에(START 함수 외부) 배치하고 위치를 열 때 다음을 확인합니다.
위치가 아니라 보류 중인 주문이 필요한 경우 f-th를 사용할 수 있습니다.
NumberOfOrders() 함수.
이 함수는 주문 수를 반환합니다. 함수 매개변수로 확인된 주문 목록을 제한할 수 있습니다.
sy - 도구 이름. 이 매개변수를 설정하면 이 기능은 지정된 악기의 순서만 확인합니다. NULL은 현재 도구를 의미하고 ""(기본값)은 모든 도구를 의미합니다.
op - 보류 중인 주문 유형. 유효한 값: OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT, OP_SELLSTOP 또는 -1. 기본값 -1은 모든 순서를 의미합니다.
mn - 주문 ID(MagicNumber). 기본값은 -1 - 모든 마법입니다.
https://www.mql5.com/ru/forum/107476/page12
힌트를 주셔서 대단히 감사합니다. 우리는 이것을 시도했지만 어떤 이유로 작동하지 않습니다. 코드 어딘가에 오류가 있는지 확인하십시오.
아이디어는 EA가 아직 어떤 주문도 열지 않았다면(열린 주문도 닫혀 있지 않은 주문도 없음), 구매 조건의 첫 번째 조건만 트리거된다는 것입니다. 그리고 고문이 과거에 이미 주문을 연 경우 주문을 열 때 첫 번째 + 두 번째 조건이 작동해야 합니다.
지정한 링크를 보니 ExistOrders() 함수가 더 적합할 수 있습니다. ?
(근데 솔직히 못넣은거같은데 아직 스킬이 부족한듯)
함수를 잘못 호출했습니다.
다음과 같이 호출했습니다. if (NumberOfPositions(NULL,Magic)> 1)
그리고 다음과 같아야 합니다.
차이를 느껴보세요("-1"을 놓쳤습니다)! 코드를 수정하십시오.
그리고 제어를 위해 차트에 주석을 표시할 수 있습니다. 예를 들어 다음과 같이 (START 기능의 맨 처음에)
두 번째 조건에 관해서는 ("더 이상 고민하지 않고") 다른 마법과 별도의 함수 Open_Buy_2()를 설정하여 두 번째 조건에 따라 포지션을 열 겠습니다!그러면 두 번째 조건의 코드는 다음과 같습니다.