오류, 버그, 질문 - 페이지 112

 
sandex :

누가 OrderCheck 기능을 사용했는지.

다음은 그러한 디자인입니다.

           MqlTradeRequest request;
           request.action=TRADE_ACTION_DEAL;
           request.symbol=_Symbol;
           request.volume=volume_exe;
           request.price=SymbolInfoDouble(_Symbol, SYMBOL_ASK);
           request.sl=0;
           request.tp=0;
           request.deviation=SymbolInfoInteger(_Symbol, SYMBOL_SPREAD)*2;
           request.type=ORDER_TYPE_BUY;
           request.type_filling=ORDER_FILLING_CANCEL;
           MqlTradeResult result;
           OrderCheck(request, result);
           if(OrderSend(request, result)==false)

컴파일할 때 오류가 발생합니다. '결과' - 매개변수 변환이 허용되지 않습니다.

OrderCheck가 제거되면 모든 것이 정상적으로 컴파일되고 테스터에서 위치가 열립니다.

기능 설명을 보세요. MqlTrade Check Result 응답의 구조를 나타냅니다.
 
Yedelkin :
기능 설명을 보세요. MqlTrade Check Result 응답의 구조를 나타냅니다.

정말 감사합니다.

 
Dmitriy2 :

그리고 여기 그것이 무엇인지 ...

지정된 날짜의 거래에서 발생하는 이익을 고려해야 합니다. 실제와 완전히 다른 결과를 생성합니다. 예를 들어, 약 2000의 결과 대신 611을 얻습니다. 나는 요일별로 확인하기 시작했습니다(주석 행). 같은 결과가 나오는(!!)일도 있는데 보통은 전혀 그렇지가 않더라구요...(패턴을 못찾았습니다). 또한 디버거에서 주기는 전체 트랜잭션 수를 정확하게 통과합니다. 사실, int 변수를 제외하고 다른 값이 표시되지 않기 때문에 이 수의 트랜잭션만 추적할 수 있습니다(Expression을 평가할 수 없음).

코드가 정확하고 디버거를 올바르게 사용하고 있습니까...?

거래 주기는 다음과 같아야 합니다.

 for (i= 0 ;i< HistoryDealsTotal ();i=i++)
디버거에서 'Step Into'(F11)를 사용합니다. 그런 다음 변수 또는 표현식이 정의된 함수를 입력하면 해당 값이 표시됩니다.
 
Valmars :

거래 주기는 다음과 같아야 합니다.

디버거에서 'Step Into'(F11)를 사용합니다. 그런 다음 변수 또는 표현식이 정의된 함수를 입력하면 해당 값이 표시됩니다.

음, 주기가 0에서 시작한다고 가정해 보겠습니다... 거래 번호가 0에서 시작한다고 어디에 쓰여 있습니까? 이제 10611(약 2000이 아닌 611이었음)로 판명되었습니다. 더하기 초기 보증금의 크기, 그렇다면 나는 이것에 대해 확신하지 못합니다 ... 적어도 하나는 0이지만 10,000이 어디에서 오는지 여전히 이해하지 못합니다.

디버거, 분명히, F11..

 
Dmitriy2 :

음, 주기가 0에서 시작한다고 가정해 보겠습니다... 거래 번호가 0에서 시작한다고 어디에 쓰여 있습니까? 이제 10611(약 2000이 아닌 611이었음)로 판명되었습니다. 더하기 초기 보증금의 크기, 그렇다면 나는 이것에 대해 확신하지 못합니다 ... 적어도 하나는 0이지만 10,000이 어디에서 오는지 여전히 이해하지 못합니다.

디버거, 분명히, F11..

첫 번째 거래는 일반적으로 보증금입니다. 거래는 0부터 시작해서 히스토리에 기록되는 것 같습니다. 따라서 제가 틀리지 않았다면 0번째 거래가 계정의 보충이 되는 것입니다.

거래 이익 이 계산되는 공식을 명확히 할 수 있습니까?

추신

내 기억이 도움이된다면 결과는 다음과 같이 간주되어야합니다. TotalProfit = Profit+Swap-Commision;


 
Kos :
SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_LIMIT )이 null을 반환하는 이유는 무엇입니까?
0은 제한이 없음을 의미합니다.
 
Interesting :

첫 번째 거래는 일반적으로 보증금입니다. 거래는 0부터 시작해서 히스토리에 기록되는 것 같습니다. 따라서 제가 틀리지 않았다면 0번째 거래가 계정의 보충이 되는 것입니다.

거래 이익 이 계산되는 공식을 명확히 할 수 있습니까?

추신

내 기억이 도움이된다면 결과는 다음과 같이 간주되어야합니다. TotalProfit = Profit+Swap-Commision;


마지막 페이지의 전체 코드

코드에 따르면 어떤 경우에도 계정 보충을 고려해서는 안됩니다.

수수료도 플러스입니다. 마이너스입니다..

 
Yedelkin :

처음에 컴파일러는 "#import "lbS7N_Servis.ex5""의 부재에 대해 불평했습니다.

이 줄을 제거한 후 다음을 얻었습니다.

2010.08.28 22:19:51 서비스[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=6617010000 M1=1016990000
2010.08.28 22:19:51 서비스[1] (EURUSD,H1) A=101699 B=101699 C=661701
2010.08.28 22:19:51 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !!! 초기 파라미터 준비 시작!!!

코드의 계좌 번호를 제 계좌 번호로 교체했을 때 다음과 같은 결과를 얻었습니다.

2010.08.28 22:26:46 서비스[1] (EURUSD,H1) L1=1016990000 L2=1016990000 L3=1016990000 M1=1016990000

2010.08.28 22:26:46 서비스[1] (EURUSD,H1) A=101699 B=101699 C=101699

2010.08.28 22:26:46 Servis[1] (EURUSD,H1) --- OnInit() --- 1 --- !!! 초기 파라미터 준비 시작!!!

MQ 서버, 빌드 316.

고맙습니다. 모든 것을 해야 하는 방식으로 하고 있습니다. 아직 스스로 알아내지 못했습니다.
 
sergey1294 :

내 M1이 일치하지 않았습니다

그것은 당신에게도 뭔가 도청이 있지만 나보다 적다는 것을 의미합니다.

아마도 시스템과 함께 프로그램과 관련하여 이미 이것을 찾아야 할 필요가 있습니다.

당신의 시스템은 무엇입니까?

core2duo 1.3Ghz 64 Win7 HB 라이센스, 4GB RAM ddr 2, 빌드가 있습니다. 316

 
simpleton :

또한 세 가지 고유한 상황이 있습니다. 이것이 발견됩니다. 그리고 얼마나 많이 발견되지 않습니까?

그리고 이러한 상황을 감안할 때 MetaQuotes는 한 달 후에 Championship 2010을 시작하게 될까요?

오, MetaTrader 5가 우리를 위해 얼마나 많은 "놀라운" 발견을 준비하고 있습니까?

승자는 프로그램에 너무 많은 오류가 있어서 사소한 프로그램 결함에 겹쳐서 아무도 따라잡지 못할 효과를 주는 참가자가 될 것입니다.