Igor, 우선 귀하의 기능에 감사드리며 이 스레드를 통해 많은 비전문 프로그래머를 도우셨습니다. 그런데 NumberOfOrders() 함수에 대해 질문을 드리고 싶습니다. 전혀 작동하지 않습니다. 사용 방법의 예를 위해 표준 MACD Expert Advisor에 포함시켰습니다. 나는 코드를 첨부하고 있습니다 :
간단히 설명하면 다음과 같이 변경됩니다.
// в стандартной версии
total=OrdersTotal();
if(total<1){
// бла бла бла ...
// в моей версии эксперта
total=OrdersTotal(); // total я оставил т.к. он используется дальше
if(NumberOfOrders(NULL,-1,-1)<1){
// бла бла бла ... ну и плюс сама функция NumberOfOrders() ниже
seifer писал (а): 무엇이 잘못되었는지 설명해 주시겠습니까? 미리 감사드립니다.
두 가지 의견:
1. 나는 이렇게 하고 싶다:
total=NumberOfOrders(NULL);
if(total<1){
...
}
2. NumberOfOrders() 함수는 주문 수를 반환합니다. BuyLimit, BuyStop, SellLimit 및 SellStop 유형의 거래 작업입니다. 주문으로 수정한 Expert Advisor가 작동하지 않습니다. 그는 시장 가격, 즉 매수 및 매도와 같은거래 작업 을 수행합니다. 다음 포스트에서 포스팅할 NumberOfPositions() 함수를 사용해야 합니다.
이 함수는 특정 날짜에 마감된 포지션의 예금 통화로 총 이익을 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
dt - 1970년 이후의 날짜 및 시간(초). 기본값 - 0 은 기록에서 사용 가능한 모든 위치를 고려함을 의미합니다.
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит в валюте депозита |//| закрытых с определённой даты позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |//+----------------------------------------------------------------------------+doubleGetProfitFromDateInCurrency(stringsy="", intop=-1, intmn=-1, datetimedt=0){doublep=0;
inti, k=OrdersHistoryTotal();
if(sy=="0")sy=Symbol();
for(i=0; i<k; i++){if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)){if(OrderType()==OP_BUY || OrderType()==OP_SELL){if(mn<0 || OrderMagicNumber()==mn){if(dt<OrderCloseTime()){p+=OrderProfit()+OrderCommission()+OrderSwap();
}}}}}}return(p);
}
추신. GetProfitFromDateInCurrency() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
다양한 기간 동안의 절대 및 백분율 값을 보여주는 i-Profit 표시기의 예를 사용하여 이 기능의 사용을 마스터하는 것이 더 실용적입니다.
엄마. 빠른. 나는 정확히 하루를 지킬 것입니다 - 나는 그것을 삭제할 것입니다!
삭제할 필요가 없습니다! 그대로 두자...
Igor, 우선 귀하의 기능에 감사드리며 이 스레드를 통해 많은 비전문 프로그래머를 도우셨습니다. 그런데 NumberOfOrders() 함수에 대해 질문을 드리고 싶습니다. 전혀 작동하지 않습니다. 사용 방법의 예를 위해 표준 MACD Expert Advisor에 포함시켰습니다. 나는 코드를 첨부하고 있습니다 :
간단히 설명하면 다음과 같이 변경됩니다.
당연히 작동하지 않습니다. 무엇이 잘못되었는지 설명해 주시겠습니까? 미리 감사드립니다.무엇이 잘못되었는지 설명해 주시겠습니까? 미리 감사드립니다.
두 가지 의견:
1. 나는 이렇게 하고 싶다:
2. NumberOfOrders() 함수는 주문 수를 반환합니다. BuyLimit, BuyStop, SellLimit 및 SellStop 유형의 거래 작업입니다. 주문으로 수정한 Expert Advisor가 작동하지 않습니다. 그는 시장 가격, 즉 매수 및 매도와 같은거래 작업 을 수행합니다. 다음 포스트에서 포스팅할 NumberOfPositions() 함수를 사용해야 합니다.NumberOfPositions() 함수.
이 함수는 현재 열려 있는 위치의 수를 반환합니다. 계산된 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
- sy - 시장 상품의 이름. 이 매개변수를 설정하면 이 기능은 지정된 도구의 위치만 고려합니다. 기본값은 "" 는 모든 시장 상품을 의미합니다. NULL 은 현재 기기를 의미합니다.
- op - 거래 작업, 위치 유형. 유효한 값: OP_BUY , OP_SELL 또는 -1 . 기본값 -1 은 임의의 위치를 의미합니다.
- mn - 위치 ID, MagicNumber. 기본값 -1 은 모든 식별자를 의미합니다.
ZY Attached는 NumberOfPositions() 함수를 테스트하기 위한 스크립트입니다.우와! 나는 이 디자인이 다음과 같다고 생각했다.
모든 위치(OP_SELL 및 OP_BUY 포함)를 반복합니다. 이제 모든 것이 작동합니다. 다시 한번 감사합니다!GetProfitFromDateInCurrency() 함수.
이 함수는 특정 날짜에 마감된 포지션의 예금 통화로 총 이익을 반환합니다. 고려할 위치의 보다 정확한 선택은 외부 매개변수에 의해 설정됩니다.
추신. GetProfitFromDateInCurrency() 함수를 테스트하기 위한 스크립트가 첨부되어 있습니다.
다양한 기간 동안의 절대 및 백분율 값을 보여주는 i-Profit 표시기의 예를 사용하여 이 기능의 사용을 마스터하는 것이 더 실용적입니다.
안녕하세요 이고르입니다.
상관관계 기능에 대해 감사하다는 말을 전하고 싶습니다. 나는 몇 가지 옵션이 있었고, 나는 단지 그것들을 명확히 하고 싶었습니다)
여기에 또 다른 질문이 있습니다. 테스트에서 매우 자주, 그리고 실시간으로 어드바이저를 테스트할 때도 오류 130 - 잘못된 중지가 발생합니다. 제가 분석을 해보지 않아서 이런 상황에서 왜 나오는지 이해가 되지 않습니다. 나는 이런 구조를 사용하기 시작했다
말하자면 정지를 정상화하고 값을 취했지만 상황이 해결되지 않았습니다. 아마도 당신은 비슷한 것을 발견했을 것입니다. 이 문제를 처리하는 방법을 알려주세요) 및 분석하는 가장 좋은 방법
설명: 공개 가격에서 +1p에서 스탑을 설정하려고 할 때 종종 이런 일이 발생합니다.
오류 131 - 잘못된 중지가 발생했습니다.
131 - 잘못된 볼륨, 볼륨 과립화 오류. 거래되는 로트 크기입니다.
오류 131 - 잘못된 중지가 발생했습니다.
131 - 잘못된 볼륨, 볼륨 과립화 오류. 거래되는 로트 크기입니다.
131이 아니라 130이 아니라 코드에 실수를 했습니다.
131이 아니라 130이 아니라 코드에 실수를 했습니다.
알았습니다...
다음과 같이 정규화를 시도합니다.
이렇게 하면 오류 130 이 발생하지 않습니다.