FORTS 도와주세요 - 페이지 30

 
demonsn :
고맙습니다. 옵션을 병렬 검사로 추가했습니다. 이제 적절한 순간을 포착하십시오.

나는 그것이 효과가 있을 것이라고 100% 확신합니다!

구조(필드뿐만 아니라 값도)를 올바르게 채우지 않았기 때문입니다.

컴파일러가 "맹세"하지 않은 것이 이상합니다.

너:

 MqlTradeRequest .action = TRADE_ACTION_DEAL ;

하지만 다음이 필요합니다.

MtRequest.action = TRADE_ACTION_DEAL ;
 

아니요! 내 메시지의 코드는 조언자가 아닌 것입니다. 예를 들어 조언자의 디버깅 정보가 기록되는 로그에서 수정된 부분입니다. 유죄, 겁먹음)

EA 자체에서는 필요에 따라 구조가 채워지지만 확인 결과가 다릅니다. 마진을 올바르게 계산하거나 예에서와 같이 말도 안되는 소리를 냅니다.

다음은 생활 공간에서 가져온 조각입니다.

   MqlTradeRequest MtRequest = { 0 }; 

   switch (OrderType)
   {
       case ORDER_TYPE_BUY :         
         MtRequest.price     = CurrentTick.ask;         
         break ;

       case ORDER_TYPE_SELL :         
         MtRequest.price     = CurrentTick.bid;
         break ;

       default :
         LogFile.Log(LOG_PRINT, __FUNCTION__ , " error: Invalid OrderType" );
         return ( false );
   }

   MtRequest.tp        = 0.0 ;
   MtRequest.sl        = 0.0 ;
   MtRequest.action    = TRADE_ACTION_DEAL ;
   MtRequest.magic     = 0 ;
   MtRequest.symbol    = strSymbol;
   MtRequest.volume    = dblLots;
   MtRequest.deviation = Config.Deviation;
   MtRequest.type      = OrderType;
   MtRequest.type_filling = Config.OrdersFillingType;
 

이 작업을 수행:

   MqlTradeRequest MtRequest = { 0 }; 
   MqlTradeRequest MtResult = { 0 }; 

   switch (OrderType)
   {
       case ORDER_TYPE_BUY :         
         MtRequest.price     = CurrentTick.ask;         
         break ;

       case ORDER_TYPE_SELL :         
         MtRequest.price     = CurrentTick.bid;
         break ;

       default :
         LogFile.Log(LOG_PRINT, __FUNCTION__ , " error: Invalid OrderType" );
         return ( false );
   }

   MtRequest.action    = TRADE_ACTION_DEAL ;
   MtRequest.magic     = 77777777777777 ;
   MtRequest.symbol    = strSymbol;
   MtRequest.volume    = dblLots;
   MtRequest.type      = OrderType;
   MtRequest.type_filling = Config.OrdersFillingType;
   MtRequest.type_time = ORDER_TIME_DAY ;
 

여기서 다시 로그에 잠시 시간이 있습니다.

 MqlTradeRequest structure:
   action: Action Deal
   magic: 0
   order: 0
   symbol: Si- 12.15
   volume: 2.00
   price: 63365
   stoplimit: 0
   sl: 0
   tp: 0
   deviation: 50
   type: ORDER_TYPE_SELL
   type_filling: ORDER_FILLING_FOK
   type_time: gtc
   expiration: 1970.01 . 01 00 : 00
   comment: (null)

 MqlTradeCheckResult structure:
   retcode: 10019 (There is not enough money to complete the request)
   balance: 133921.71
   equity: 132772.57
   profit: 0.00
   margin: 172148.68
   margin_free: - 39376.11
   margin_level: 77.13
   comment: No money

동시에 같은 구조를 OrderSend() 에 전달하면 모든 것이 완벽하게 열립니다!

그건 그렇고, 빌드 1194.

Si-12.15, 2랏 판매합니다. 1 계약 5090 루블에 대해 GO. 거래에 따르면 GO 5090 * 2 = 10180 루블이 있어야 합니다. 그리고 이 함수는 172148.68 루블을 반환하며 이는 172148.68 / 5090 = 33.82 계약에 해당합니다!

무슨 기적을...

 
demonsn :

여기서 다시 로그에 잠시 시간이 있습니다.

동시에 같은 구조를 OrderSend()에 전달하면 모든 것이 완벽하게 열립니다!

그건 그렇고, 빌드 1194.

Si-12.15, 2랏 판매합니다. 1 계약 5090 루블에 대해 GO. 거래에 따르면 GO 5090 * 2 = 10180 루블이 있어야 합니다. 그리고 이 함수는 172148.68 루블을 반환하며 이는 172148.68 / 5090 = 33.82 계약에 해당합니다!

무슨 기적을...

1. 구조를 올바르게 채우는 방법에 대한 샘플을 제공했는데 이 팁을 무시합니다.

그럼 왜 물어?

2. 빌드 1194는 현재 서버와 호환되지 않습니다(Renat이 이에 대해 이야기했습니다. 지금은 빌드 1159를 사용하십시오).

3. 나는 OrderCheck() 함수를 전혀 사용하지 않고 , 수단을 직접 확인한다 .

 //+------------------------------------------------------------------+
//| Expert Check money function                                      |
//+------------------------------------------------------------------+ 
bool CheckMoney( const string a_symbol, const long volume )
{
   if ( volume <= 0 )
  {
     Print ( "Check Money: Объём лота указан не правильно!" );
    retutn ( false );
  } 
//---
   double a_go = SymbolInfoDouble ( a_symbol, SYMBOL_MARGIN_INITIAL ) * double( volume);
   double free_margin = ( AccountInfoDouble ( ACCOUNT_FREEMARGIN ) / 100 ) * 90 ; //90% от свободных средств
//---  
   if ( a_go <= free_margin )
  {
     return ( true );
  }
   Print ( "Check Money: Не достаточно средств!" );
   return ( false );
}
 
Михаил :

1. 구조를 올바르게 채우는 방법에 대한 샘플을 제공했는데 이 팁을 무시합니다.

그럼 왜 물어?

2. 빌드 1194는 현재 서버와 호환되지 않습니다(Renat이 이에 대해 이야기했습니다. 지금은 빌드 1159를 사용하십시오).

3. 나는 OrderCheck() 함수를 전혀 사용하지 않고 , 수단을 직접 확인한다 .


1. 글쎄, 내가 왜 무시합니까. 나는 그것을 전혀 무시하지 않습니다. 코드에 샘플을 포함했는데 지금 보고 있습니다.

2. 젠장! 몰랐다.

3. 똑같이 했다. 그리고 그 기능은 90%를 제외하고는 거의 일대일입니다 (그런데 좋은 생각입니다)

내 기능(귀하의 기능과 유사)이 GO를 확인하고 위치를 여는 것을 허용하고 표준 OrderCheck()가 때때로 실패하기 때문에 이 질문을 제기했습니다.


아마도 2번 항목을 가리키는 것 같습니다.

터미널에서 로그는 다음과 같은 메시지로 가득 차 있습니다.

 2015.10 . 22 21 : 28 : 13.966 Ticks   old tick @RTS (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick RTS- 12.15 (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick @RTS (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick RTS- 12.15 (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick @RTS (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 28 : 13.966 Ticks   old tick RTS- 12.15 (tick: 2015.10 . 22 18 : 28 : 21 , last: 2015.10 . 22 18 : 28 : 22 ) 0 / 0
2015.10 . 22 21 : 27 : 40.995 Ticks   old tick @LKOH (tick: 2015.10 . 22 18 : 27 : 48 , last: 2015.10 . 22 18 : 27 : 49 ) 0 / 0
2015.10 . 22 21 : 27 : 40.995 Ticks   old tick LKOH- 12.15 (tick: 2015.10 . 22 18 : 27 : 48 , last: 2015.10 . 22 18 : 27 : 49 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick Si- 12.15 (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
2015.10 . 22 21 : 26 : 38.952 Ticks   old tick @Si (tick: 2015.10 . 22 18 : 26 : 46 , last: 2015.10 . 22 18 : 26 : 47 ) 0 / 0
 
demonsn :


1. 글쎄, 내가 왜 무시합니까. 나는 그것을 전혀 무시하지 않습니다. 코드에 샘플을 포함했는데 지금 보고 있습니다.

2. 젠장! 몰랐다.

3. 똑같이 했다. 그리고 그 기능은 90%를 제외하고는 거의 일대일입니다(그런데 좋은 생각입니다)

내 기능(귀하와 유사한)이 GO를 확인하고 위치를 여는 것을 허용하고 표준 OrderCheck()가 때때로 실패하기 때문에 이 문제를 제기했습니다.

글쎄, FORTS에 있는 모든 것을 사용하십시오 - 훨씬 더 정확합니다 :)
 
Михаил :
글쎄, FORTS에 있는 모든 것을 사용하십시오 - 훨씬 더 정확합니다 :)

그래서 결국 해야만 한다! "자전거"를 작성하는 시간을 절약하거나 아이디어를 테스트하기 위해 어딘가에서 다른 사람의 코드나 라이브러리를 사용하고 싶은 유혹을 받을 것입니다.

그리고 다른 사람의 실수와 결점을 잡는 데 일주일이 걸린다는 것이 밝혀졌습니다. 결과적으로 다른 사람의 코드를 추적할 수 없도록 모든 것이 자체적으로 다시 작성됩니다.

 

안녕하세요!

접착 선물이 테스트 창에 나타 났는데 그 자체로 매우 만족 스럽지만 접착과 계약을 비교하려고 할 때 접착에 거래가 전혀 없다는 것을 알았습니다. 계약에 모든 것이 정상입니다. 많은 거래. Si, RTS, GAZR, SBRF 및 기간 2015년 1월 1일 - 2015년 10월 24일의 4가지 계측기에서 확인했습니다.

 
Andrey Kotrin :

안녕하세요!

접착 선물이 테스트 창에 나타 났는데 그 자체로 매우 만족 스럽지만 접착과 계약을 비교하려고 할 때 접착에 거래가 전혀 없다는 것을 알았습니다. 계약에 모든 것이 정상입니다. 많은 거래. Si, RTS, GAZR, SBRF 및 기간 2015년 1월 1일 - 2015년 10월 24일의 4가지 계측기에서 확인했습니다.

퓨처 테스터가 제대로 작동하지 않습니다.