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

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

fxsaber , 2017.06.15 10:08

왜 컴파일됩니까?
 class A {};

class B : public A
{
public :  
   int i;
};

void OnStart ()
{
  A* a = new B;
  
   ((B*)a).i = 1 ;
  
   dynamic_cast <B*>(a).i = 1 ;
  
   delete a;
}
Support Team   2017.06.29 12:04
이 코드가 컴파일되지 않아야 하는 이유는 무엇입니까?

A는 B의 조상이므로 이러한 캐스트가 유효할 수 있고 실행 시 유효성을 검사하며 객체의 캐스트가 불가능한 경우 예외가 throw되고 MQL 프로그램이 종료됩니다.

명시적 캐스팅과 달리 dynamic_cast는 예외를 throw하지 않지만 결과 대신 NULL이 반환되며 이 경우 프로그램은 계속 실행됩니다.
 
Vladimir Karputov :

속도를 최대값에서 3단계 뺀 값으로 설정하십시오. 그렇지 않으면 인터페이스 업데이트가 보장되지 않습니다.

이 속도는 중간입니다. 최대 속도까지입니다.
 
SymbolInfoDouble ( _Symbol , SYMBOL_MARGIN_INITIAL )

SymbolInfoDouble ( _Symbol , SYMBOL_MARGIN_MAINTENANCE )
어떤 이유로 테스터에서 항상 0.0을 반환합니다.

오류 코드 도 0입니다

 
Anton Ohmat :
어떤 이유로 항상 0.0을 반환합니다.

오류 코드 도 0입니다

내가 아는 한, 이것은 모스크바 거래소에서만 작동합니다.

 
말해주세요!!!!!!!! 1090 단말기는 "1-Click Trade" 버튼을 표시하지 않습니다. 가능한 모든 것을 했습니다. 그리고 속성에서 확인란도 선택했습니다. 오픈 오더 라인도 표시되지 않습니다!!! 무엇을 할까요?
 
vati-vv :
말해주세요!!!!!!!! 1090 단말기는 "1-Click Trade" 버튼을 표시하지 않습니다. 가능한 모든 것을 했습니다. 그리고 속성에 진드기도 넣습니다. 미결제 주문도 라인으로 표시되지 않습니다!!! 무엇을 할까요?

이제 MQL5 섹션에 질문을 게시했습니다. 이전 터미널의 경우 MQL4 및 MetaTrader 4 섹션에 질문을 게시해야 합니다.

퀵 트레이딩 패널은 실제로 트레이딩 계정에 연결되어 있을 때만 표시되므로 트레이딩 서버에 확실히 로그인되어 있는지 확인하는 것이 좋습니다.

 

안녕하세요. mql5에서 이 옵션을 사용하여 충전 모드를 지정합니다.

   if ( SymbolInfoInteger ( Symbol (), SYMBOL_FILLING_MODE )== SYMBOL_FILLING_FOK )
     {
      tradeBuy.SetTypeFilling( ORDER_FILLING_FOK );
      tradeSell.SetTypeFilling( ORDER_FILLING_FOK );
     }

   else if ( SymbolInfoInteger ( Symbol (), SYMBOL_FILLING_MODE )== SYMBOL_FILLING_IOC )
     {
      tradeBuy.SetTypeFilling( ORDER_FILLING_IOC );
      tradeSell.SetTypeFilling( ORDER_FILLING_IOC );
     }

   else
     {
      tradeBuy.SetTypeFilling( ORDER_FILLING_RETURN );
      tradeSell.SetTypeFilling( ORDER_FILLING_RETURN );
     }


테스터의 EA 가 위치를 열었 지만 한 위치가 열리지 않고 오류가 지원되지 않는 채우기 모드입니다. 내가 뭘 잘못하고 있습니까??

 
Dmitry Melnichenko :

안녕하세요. mql5에서 이 옵션을 사용하여 충전 모드를 지정합니다.


테스터의 EA 가 위치를 열었 지만 한 위치가 열리지 않고 오류가 지원되지 않는 채우기 모드입니다. 내가 뭘 잘못하고 있습니까??


하나의 값이 반환되지 않고 하나 또는 두 개의 조합이 반환되므로 잘못된 검사가 발생할 수 있습니다.

이 구성을 시도하십시오.

 //---
   if (IsFillingTypeAllowed( Symbol (), SYMBOL_FILLING_FOK ))
      m_trade.SetTypeFilling( ORDER_FILLING_FOK );
   else if (IsFillingTypeAllowed( Symbol (), SYMBOL_FILLING_IOC ))
      m_trade.SetTypeFilling( ORDER_FILLING_IOC );
   else
      m_trade.SetTypeFilling( ORDER_FILLING_RETURN );
...
//+------------------------------------------------------------------+ 
//| Checks if the specified filling mode is allowed                  | 
//+------------------------------------------------------------------+ 
bool IsFillingTypeAllowed( string symbol, int fill_type)
  {
//--- Obtain the value of the property that describes allowed filling modes 
   int filling=( int ) SymbolInfoInteger (symbol, SYMBOL_FILLING_MODE );
//--- Return true, if mode fill_type is allowed 
   return ((filling & fill_type)==fill_type);
  }


추가: 도움이 된다면 알려주세요.

 
Vladimir Karputov :

하나의 값이 반환되지 않고 하나 또는 두 개의 조합이 반환되므로 잘못된 검사가 발생할 수 있습니다.

이 구성을 시도하십시오.


추가: 도움이 된다면 알려주세요.


감사하지만 도움이 되지 않았습니다. 여전히 때때로 같은 오류가 발생합니다!

 

개체의 창/하위 창 번호를 찾는 방법은 무엇입니까? 적당한 매물이 보이지 않습니다.