이 옵션에 대해 어떻게 생각하십니까? 만약 (오류==146) { 동안 (IsTradeContextBusy()) { if (IsTradeAllowed()) 휴식; 또 다른 수면 (1000*1.1); }} 이것이 더 빠른 솔루션인 것 같습니다. 이것이 제가 일하는 방식입니다. 논평. 고맙습니다.
Red.Line писал (а): 유용한 주제에 감사드립니다. 비록 제가 탄 파이에 대해 이야기하고 있지만 여전히 누군가는 μl 단위의 대용량 데이터 배열을 저장하고 샘플링하는 문제에 직면했을 수 있습니다. MKL과 데이터베이스? 아무도이 방향으로 생각하지 않았습니까?
이것이 더 빠른 솔루션인 것 같습니다. 이것이 제가 일하는 방식입니다. 논평. 고맙습니다.
정상적으로 받아보겠습니다. 이해와 함께. 일시 중지는 더 짧고 더 빠르게 작동합니다... 하지만 버전에 부당한 중복이 있습니다.
IsTradeContextBusy 함수는 거래 흐름 사용 중 플래그를 반환합니다. 195번째 빌드 이전에는 이 기능이 전혀 없었습니다. 그리고 우리는 Expert Advisor가 거래할 수 있고 거래 흐름이 자유롭다는 신호를 반환하는 IsTradeAllowed 함수를 사용했습니다.
Expert Advisor는 Expert Advisor의 속성 대화 상자(F7 키)에서 "Expert Advisor의 거래 허용" 확인란을 선택하여 거래할 수 있습니다.
오류 146(거래 스레드가 사용 중임)은 EA의 거래 허용과 관련이 없습니다. 따라서 거래 흐름에만 관련된 부분에서 IsTradeAllowed 함수의 속성을 살펴보자.
따라서 거래 흐름은 자유롭고 IsTradeAllowed 함수는 True 를 반환합니다. 거래 흐름이 바쁘고 IsTradeAllowed 함수는 False 를 반환합니다. 이제 IsTradeContextBusy 함수가 반환한 값을 고려하십시오. 거래 흐름은 자유롭고 IsTradeContextBusy 함수는 False 를 반환합니다. 거래 흐름이 바쁘고 IsTradeContextBusy 함수가 True 를 반환합니다. 동일한 거래 흐름 상태에 대해 IsTradeAllowed 및 IsTradeContextBusy 함수의 값이 반대임을 알 수 있습니다. 또한 무역 흐름의 상태에 관한 이러한 기능은 서로를 보완하는 것이 아니라 중복됩니다. 따라서 그 중 하나는 제외될 수 있습니다. 뭐라고요? 이미 언급했듯이 IsTradeAllowed 함수는 거래 흐름 상태 플래그 외에 이 상황, 즉 처리 오류 146(거래 흐름이 사용 중)에서 필요하지 않은 EA에 대한 거래 허가 플래그도 반환합니다. . 따라서 IsTradeContextBusy 함수를 하나만 사용하는 것이 필요하고 충분합니다. 위의 약어를 수행하면 코드가 광산으로 축소됩니다.
자세한 답변 감사합니다 플래그에 대해 잘 몰랐는데 설명에서 누락된 것 같습니다 하지만 정확성을 위해 여전히 모든 유형 의 거래 작업 사이에서 흐름이 해제될 때까지 5초에서 5초 사이에 일시 중지하는 것을 선호합니다. 이것이 정확하고 여러 Expert Advisors와 함께 정확하고 안전하다고 생각하십시오. 고맙습니다.
이 포스트에서는 SetOrder 함수가 어떻게 작동하는지 설명하는 요점을 설명하기로 결정했습니다. 나 자신은 명령으로 일하지 않습니다. 즉, 여기 나는 외국 영토에 있습니다. SetOrder 기능을 이해하는 사람이 개선 사항을 제안하거나 버그를 찾을 수 있습니다.
1. 코드의 첫 번째 줄에서 지역 변수의 선언과 그 중 일부의 초기화. 예를 들어, lsComm에는 Expert Advisor의 이름과 GetNameTF 함수가 반환한 기간의 이름이 포함됩니다. 그건 그렇고, 나는 누군가가 그들에 대해 질문이있는 경우에만 GetNameOP , GetNameTF , Message 및 기타 작은 기능에 대해 이야기하지 않을 것입니다.
6. 음수 티켓의 경우 실행 오류가 처리됩니다 . 7. 오류 128(거래 실행 제한 시간 만료), 142(주문 대기) 및 143(판매자가 실행을 위해 승인한 주문) 오류의 경우 66초 동안 일시 중지가 수행됩니다. 잠시 후 ExistOrders 함수를 사용하여(조금 후에 자세히 설명하겠습니다) 서버에 대한 요청과 현재 순간 사이의 시간 간격에 주문이 접수되었는지 확인합니다. 순서가 설정되었으면 기능을 종료합니다.
주문 존재 플래그를 반환합니다. 그것은 순서가 설정되었는지 여부에 대한 질문에 답할 것입니다. 이 기능을 사용하여 더 구체적인 주문뿐만 아니라 모든 주문을 요청할 수 있습니다. 요청 필터는 함수 매개변수를 사용하여 구성됩니다.
sy - 도구 이름에 제한을 가합니다. 기본적으로 매개변수는 ""입니다. 제한이 없습니다. 즉, 모든 도구입니다. NULL을 전달하면 주문 선택이 현재 상품으로 제한됩니다.
op - 주문 유형에 제한을 둡니다. 기본적으로 제한이 없습니다. 즉, 모든 유형의 주문이 있는지 확인합니다. 유효한 매개변수 값은 -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT 및 OP_SELLSTOP입니다.
mn - 주문의 식별("매직") 번호에 제한을 둡니다. 기본적으로 제한이 없습니다. 즉, 마법 번호가 있는 주문이 있는지 확인합니다.
ot - 주문 배치 시간에 제한을 둡니다. 확인했습니다. 주문이 이 매개변수의 값보다 나중에 배치되도록 합니다. 기본적으로 제한이 없습니다. 즉, 설정 시간이 있는 주문이 있는지 확인합니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.03.2008 |//| Описание : Возвращает флаг существования ордеров. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любой ордер) |//| mn - MagicNumber (-1 - любой магик) |//| ot - время открытия ( 0 - любое время установки) |//+----------------------------------------------------------------------------+boolExistOrders(stringsy="", intop=-1, intmn=-1, datetimeot=0){inti, k=OrdersTotal(), ty;
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ty=OrderType();
if(ty>1 && ty<6){if((OrderSymbol()==sy || sy=="") && (op<0 || ty==op)){if(mn<0 || OrderMagicNumber()==mn){if(ot<=OrderOpenTime())return(True);
}}}}}return(False);
}
만약 (오류==146)
{
동안 (IsTradeContextBusy())
{
if (IsTradeAllowed()) 휴식;
또 다른
수면 (1000*1.1);
}}
이것이 더 빠른 솔루션인 것 같습니다. 이것이 제가 일하는 방식입니다. 논평.
고맙습니다.
이 옵션에 대해 어떻게 생각하십니까?
이것이 더 빠른 솔루션인 것 같습니다. 이것이 제가 일하는 방식입니다. 논평.
고맙습니다.
정상적으로 받아보겠습니다. 이해와 함께. 일시 중지는 더 짧고 더 빠르게 작동합니다... 하지만 버전에 부당한 중복이 있습니다.
IsTradeContextBusy 함수는 거래 흐름 사용 중 플래그를 반환합니다. 195번째 빌드 이전에는 이 기능이 전혀 없었습니다. 그리고 우리는 Expert Advisor가 거래할 수 있고 거래 흐름이 자유롭다는 신호를 반환하는 IsTradeAllowed 함수를 사용했습니다.
Expert Advisor는 Expert Advisor의 속성 대화 상자(F7 키)에서 "Expert Advisor의 거래 허용" 확인란을 선택하여 거래할 수 있습니다.
오류 146(거래 스레드가 사용 중임)은 EA의 거래 허용과 관련이 없습니다. 따라서 거래 흐름에만 관련된 부분에서 IsTradeAllowed 함수의 속성을 살펴보자.
따라서 거래 흐름은 자유롭고 IsTradeAllowed 함수는 True 를 반환합니다. 거래 흐름이 바쁘고 IsTradeAllowed 함수는 False 를 반환합니다. 이제 IsTradeContextBusy 함수가 반환한 값을 고려하십시오. 거래 흐름은 자유롭고 IsTradeContextBusy 함수는 False 를 반환합니다. 거래 흐름이 바쁘고 IsTradeContextBusy 함수가 True 를 반환합니다. 동일한 거래 흐름 상태에 대해 IsTradeAllowed 및 IsTradeContextBusy 함수의 값이 반대임을 알 수 있습니다. 또한 무역 흐름의 상태에 관한 이러한 기능은 서로를 보완하는 것이 아니라 중복됩니다. 따라서 그 중 하나는 제외될 수 있습니다. 뭐라고요? 이미 언급했듯이 IsTradeAllowed 함수는 거래 흐름 상태 플래그 외에 이 상황, 즉 처리 오류 146(거래 흐름이 사용 중)에서 필요하지 않은 EA에 대한 거래 허가 플래그도 반환합니다. . 따라서 IsTradeContextBusy 함수를 하나만 사용하는 것이 필요하고 충분합니다. 위의 약어를 수행하면 코드가 광산으로 축소됩니다.
유일한 차이점은 일시 중지 크기입니다. 그러나 이것은 이미 취향, 개인 취향, 거래 스타일 및 기타 사항의 문제입니다. 0.1초의 일시 중지를 설정할 수 있습니다. Unprincipled ... 나는 단지 11 초를 선호합니다.SetOrder 함수에는 두 가지 오류가 있습니다.
주목! 온라인 거래를 위한 SetOrder 기능이 포함된 게시물이 수정되었습니다. 기능이 조금 더 깁니다. 게시물에 완전히 포함되지 않았으므로 트레일러로 가져와야했습니다.
이 포스트에서는 SetOrder 함수가 어떻게 작동하는지 설명하는 요점을 설명하기로 결정했습니다. 나 자신은 명령으로 일하지 않습니다. 즉, 여기 나는 외국 영토에 있습니다. SetOrder 기능을 이해하는 사람이 개선 사항을 제안하거나 버그를 찾을 수 있습니다.
1. 코드의 첫 번째 줄에서 지역 변수의 선언과 그 중 일부의 초기화. 예를 들어, lsComm에는 Expert Advisor의 이름과 GetNameTF 함수가 반환한 기간의 이름이 포함됩니다. 그건 그렇고, 나는 누군가가 그들에 대해 질문이있는 경우에만 GetNameOP , GetNameTF , Message 및 기타 작은 기능에 대해 이야기하지 않을 것입니다.
2. 수신된 매개변수를 확인합니다. sy 가 비어 있으면 현재 기기의 이름으로 초기화됩니다. 연산의 종류에 따라 차트의 아이콘 색상에 대한 변수가 초기화됩니다. 0이 아닌 주문 만료 시간이 현재 시간보다 짧으면 0으로 재설정됩니다.
3. 거래 시도 주기의 본문이며, 그 횟수 는 전역 변수 NumberOfTry 의 값에 의해 제한됩니다. 다음은 SetOrder 함수의 메인 루프 내에서 수행되는 작업입니다.
4. 테스터에서 SetOrder 함수가 실행되지 않으면 작업을 중단할 수 있습니다. 즉시 거래 스레드의 해제를 기다리는 사이클이 실행됩니다. 시장 환경 변수가 업데이트되고 현재 시간이 고정됩니다.
5. 거래 서버에 요청 보내기. 티켓이 양수이면 SetOrder 함수가 종료됩니다.
6. 음수 티켓의 경우 실행 오류가 처리됩니다 .
7. 오류 128(거래 실행 제한 시간 만료), 142(주문 대기) 및 143(판매자가 실행을 위해 승인한 주문) 오류의 경우 66초 동안 일시 중지가 수행됩니다. 잠시 후 ExistOrders 함수를 사용하여(조금 후에 자세히 설명하겠습니다) 서버에 대한 요청과 현재 순간 사이의 시간 간격에 주문이 접수되었는지 확인합니다. 순서가 설정되었으면 기능을 종료합니다.
8. 포인트 크기와 Bid 및 Ask 가격은 로컬 변수에 저장됩니다.
9. 오류 130(잘못된 스톱)으로 가능하면 주문, 스톱, 테이크에 대한 가격 수준이 조정됩니다.
10. 나중에 문제를 해결하거나 오류를 찾는 데 도움이 될 수 있는 정보가 로그에 표시됩니다.
11. 그리고 마지막에 다른 오류를 처리합니다. 일부는 긴 일시 중지(5분)에 걸려 넘어지고, 다른 일부는 고문의 작업을 차단하고, 다른 일부는 거래 시도를 계속하도록 허용합니다.
모든 것! 설명 끝!
ExistOrders() 함수.
주문 존재 플래그를 반환합니다. 그것은 순서가 설정되었는지 여부에 대한 질문에 답할 것입니다. 이 기능을 사용하여 더 구체적인 주문뿐만 아니라 모든 주문을 요청할 수 있습니다. 요청 필터는 함수 매개변수를 사용하여 구성됩니다.
ExistOrders() 함수 사용의 예.
1. 주문 확인
2. 현재 차트의 악기에 대한 주문이 있는지 확인합니다.
3. 모든 상품에 대한 BuyLimit 주문 확인
4. EURUSD에서 magic 123456으로 SellStop 주문 확인
5. 설치 시간이 2시간 이내인 주문이 있는지 확인합니다.
예고편에는 ExistOrders 기능을 테스트하기 위한 스크립트가 있습니다. 스크립트의 처음 4개 예제는 주석 처리되어 있습니다.주목! 2008년 3월 12일 오전 7시 24분 게시물에서 SetOrder.mq4 첨부 파일을 교체했습니다.