실수로 고통받는 거래가 없습니다. - 페이지 6

 

이 퍼즐은 더욱 흥미롭습니다. 위 게시물의 코드를 기반으로 간단한 Expert Advisor를 구성했습니다. 또한 시장에서 각각 5분 동안 5개의 거래를 열고 닫습니다. 코드는 다음과 같습니다.

 #property version    "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   static int test_ticket[ 2 ]={ 0 , 0 };
   if (test_ticket[ 1 ]< 5 && test_ticket[ 0 ]== 0 ) {
      test_ticket[ 0 ]= OrderSend ( _Symbol ,OP_BUY, SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN ), NormalizeDouble (Ask, _Digits ), 30 , 0.0 , 0.0 , "test" , 33333 , 0 , clrNONE );
       if (test_ticket[ 0 ]> 0 ) test_ticket[ 1 ]++;
   }   
   if ( OrderSelect (test_ticket[ 0 ],SELECT_BY_TICKET))
       if (OrderCloseTime()== 0 && OrderOpenTime()+ 300 < TimeCurrent ())
         if (OrderClose(test_ticket[ 0 ],OrderLots(), NormalizeDouble (Bid, _Digits ), 30 , clrNONE )) {
             printf ( "Test order closed, ticket #%d" ,test_ticket[ 0 ]);
            test_ticket[ 0 ]= 0 ;
         }   
   
  }
//+------------------------------------------------------------------+

첫 번째 시도에서 유효성 검사를 통과했지만 NZDUSD에 대한 거래 작업 이 없습니다. 왜요?


검증인이 최소 랏으로 열 수 없는 보증금을 설정했더라도 위에 게시된 메시지와 같이 오류 134가 발생했을 것입니다. 그리고 단순히 거래가 없습니다! 왜???

유효성 검사기가 여전히 엉망이거나 이에 대한 합리적인 설명이 있습니까?

 
Renat Akhtyamov :

먼저 여기에 유효성 검사기의 전체 응답을 입력합니다.

그리고 왜 당신이 생각해낸 원칙에 따라 검증인이 티켓을 할당하도록 결정했나요?

5개의 거래를 열려면 열린 거래의 수를 계산해야 하며 티켓에 대해 걱정할 필요가 없습니다.

Renat, 그것이 내가 생각하는 거래 방식입니다. 더 자세히 살펴보십시오. 테스터에서 내 코드를 실행할 수도 있습니다. 두 가지 값의 배열이 있습니다. test_ticket[0] - 주문 티켓을 기억하고 test_ticket[1] - 시도 횟수를 기억합니다.

첫 번째 조건에서 시도 횟수를 변경하여 다른 수의 트랜잭션 을 열 수 있습니다

 if (test_ticket[ 1 ] < 5 && test_ticket[ 0 ]== 0 ) {
 

다음은 주문 횟수 가 다른 다음 시도에 대한 이야기입니다.


그리고 여기에서 다음 시도 중 하나에서 검증자는 실제로 최소 로트를 사용합니다. 이는 분명히 $1 보증금으로 열 수 없습니다. 문제는 이전에 시도에 대한 거래가 없었던 이유입니다. 그리고 왜 이 실행이 의도적으로 잘못된 최소 로트 및 보증금을 사용하여 검증 오류를 유발합니까?

Vladimir Karputov :

...

일반적으로 유효성 검사기는 여전히 주요 작업인 마켓에서 미완성 코드를 제거하는 작업에 대처하고 있습니다.

음...

그리고 무작위 샷이 아닙니다. 다음은 세 번의 시도입니다.


 

"이런 거래를 열 돈이 없습니다 ..." 로그의 오류는 여전히 거래 요청 을 보냈지만 그 전에 절대적으로 아무것도(또는 전부는 아님) 확인되었음을 나타냅니다. 이 기사에는 명확한 검증 알고리즘이 표시되어 있습니다.


기억하십시오 - "이러한 거래를 열 돈이 없습니다 ..."는 고문의 논리에서 99 % 오류입니다. 이것은 누락된 수표(또는 완전한 부재)입니다. 이것은 코딩 원칙에 대한 이해가 부족하다는 신호입니다.


기억하십시오: 실제 세계에서 보증금은 $1일 수 있고 레버리지는 항상 1:100이 아니며 최소 랏은 0.01 및 0.02 및 0.30 및 1.0 및 기타 많은 게임이 될 수 있습니다...

 
Vladimir Karputov :

"이런 거래를 열 돈이 없습니다 ..." 로그의 오류는 여전히 거래 요청 을 보냈지만 그 전에 절대적으로 아무것도(또는 전부는 아님) 확인되었음을 나타냅니다. 이 기사에는 명확한 검증 알고리즘이 표시되어 있습니다.


기억하십시오 - "이러한 거래를 열 돈이 없습니다 ..."는 고문의 논리에서 99 % 오류입니다. 이것은 누락된 수표(또는 완전한 부재)입니다. 이것은 코딩 원칙에 대한 이해가 부족하다는 신호입니다.


기억하십시오: 실제 세계에서 보증금은 $1일 수 있고 레버리지는 항상 1:100이 아니며 최소 랏은 0.01 및 0.02 및 0.30 및 1.0 및 기타 많은 게임이 될 수 있습니다...

블라디미르, 당신은 코끼리를 눈치 채지 못했습니다. 주요 실수는

나는 당신의 언어로 대답할 수 있고, 교훈을 줄 수 있습니다.

 
Vladimir Karputov :

"이런 거래를 열 돈이 없습니다 ..." 로그의 오류는 여전히 거래 요청 을 보냈지만 그 전에 절대적으로 아무것도(또는 전부는 아님) 확인되었음을 나타냅니다. 이 기사에는 명확한 검증 알고리즘이 표시되어 있습니다.


기억하십시오 - "이러한 거래를 열 돈이 없습니다 ..."는 고문의 논리에서 99 % 오류입니다. 이것은 누락된 수표(또는 완전한 부재)입니다. 이것은 코딩 원칙에 대한 이해가 부족하다는 신호입니다.


기억하십시오: 실제 세계에서 보증금은 $1일 수 있고 레버리지는 항상 1:100이 아니며 최소 랏은 0.01 및 0.02 및 0.30 및 1.0 및 기타 많은 게임이 될 수 있습니다...

블라디미르, 나는 당신이 일반적으로 게시물을 읽는지 아니면 흥미로운 사진을 찍는지 이해하지 못합니다. 모든 것을 다시 한 번 또는 최소한 페이지의 처음부터 몇 번 정도 주의 깊게 읽으십시오. 그리고 거기에 게시된 코드를 읽어보세요! 귀찮게 당신에게 모든 것을 설명하고 싶지도 않습니다!

 
Andrey Kaunov :

귀찮게 당신에게 모든 것을 설명하고 싶지도 않습니다!

Andrei, 같은 방식으로 이미 쓰여지고 씹힌 것을 아무도 당신에게 반복하고 싶어하지 않습니다.

 
예, 하지만 문제가 있습니다. 아마도 이 사이트의 강력한 사이트의 누군가가 여전히 그것을 알아내고 유효성 검사기를 확인하려고 할 것입니다. 결국 매개변수가 없는 가장 단순한 투명 코드는 때때로 NZDUSD 및 GBPUSDcheck와 거래하지 않습니다. 그리고 몇 가지 조건을 추가하고 금에 대한 거래가 없으면 다시 오류는 거래 작업이 없고 확인에 실패했습니다.
 
Andrey Kaunov :
예, 하지만 문제가 있습니다. 아마도 이 사이트의 강력한 사이트의 누군가가 여전히 그것을 알아내고 유효성 검사기를 확인하려고 할 것입니다. 결국 매개변수가 없는 가장 단순한 투명 코드는 때때로 NZDUSD 및 GBPUSDcheck와 거래하지 않습니다. 그리고 몇 가지 조건을 추가하고 금에 대한 거래가 없으면 다시 오류는 거래 작업이 없고 확인에 실패했습니다.

검증인이 거래 서버 오류 목록에서 오류 코드를 반환한다는 사실에 의존하지 마십시오. 항상 오류를 직접 기록하십시오. 주문 실행 불가능에 대해 알고 있는 기사의 내용과 이 경우 수행해야 하는 작업을 주의 깊게 읽으십시오.

유효성 검사 오류의 원인은 로그에 오류 메시지가 없는 경우(예: 로트 크기 계산)일 수 있습니다.

 
Andrey Kaunov :

다음은 주문 횟수 가 다른 다음 시도에 대한 이야기입니다.


그리고 여기에서 다음 시도 중 하나에서 검증자는 실제로 최소 로트를 사용합니다. 이는 분명히 $1 보증금으로 열 수 없습니다. 문제는 이전에 시도에 대한 거래가 없었던 이유입니다. 그리고 왜 이 실행이 의도적으로 잘못된 최소 로트 및 보증금을 사용하여 검증 오류를 유발합니까?

음...

그리고 무작위 샷이 아닙니다. 다음은 세 번의 시도입니다.


거래 요청을 보내는 동안 오류가 발생했습니다 134 ...

테스터가 이 오류를 작성했습니까? 그렇다면 이는 유효성 검사 오류의 원인 중 하나이기도 합니다. 포지션을 열 가능성을 독립적으로 계산해야 하며, 이것이 불가능한 경우 설정된 매개변수로 거래할 수 없다는 로그에 자신의 메시지를 표시하고 서버에 의도적으로 잘못된 주문을 보내지 마십시오. 터미널과 서버가 당신을 위해 모든 것을 할 것이라는 사실. 이러한 잘못된 주문으로 인해 서버에 스팸을 보낼 수 있으며 향후 자동 거래가 안전하게 금지될 수 있습니다. 이것은 검증인의 잘못이 아니라 귀하의 잘못입니다.