주문을 보내기가 어렵습니다. - 페이지 2

 
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 거래소 구매 실패 0.07 GBPUSD at 1.60082 [ Invalid volume ]"

 
MetaNt :
"2014.04.02 00:19:50.590 2010.10.15 00:00:00 교환 매수 실패 0.07 GBPUSD at 1.60082 [유효하지 않은 거래량]"

GBPUSD 차트 에서 이 작은 스크립트를 실행하고 결과를 보고하세요.

 void OnStart ()
  {
   printf ( "Volume min = %f, volume step = %f for symbol %s." ,
           SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN ),
           SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_STEP ),
           _Symbol );

  }
 
angevoyageur :

GBPUSD 차트에서 이 작은 스크립트를 실행하고 결과를 보고하십시오.

죄송합니다, 게시물을 보지 못했습니다. 나는 데모 모드에서 이것의 mql4 버전에서 겪었던 몇 가지 문제를 다루고 있었습니다.

스크립트 실행하겠습니다 감사합니다

 

보고서

"2014.04.02 15:11:27.158 랏 (GBPUSD,D1) 최소 거래량 = 0.010000, 거래량 단계 = GBPUSD 기호 에 대한 0.010000"

 
MetaNt :

보고서

"2014.04.02 15:11:27.158 랏 (GBPUSD,D1) 최소 거래량 = 0.010000, 거래량 단계 = GBPUSD 기호의 경우 0.010000입니다."

이상해 주문 보내기 및 오류 처리(인쇄)를 포함한 모든 관련 코드를 게시할 수 있습니까?
 
angevoyageur :
이상해 주문 보내기 및 오류 처리(인쇄)를 포함한 모든 관련 코드를 게시할 수 있습니까?

예, 요청한 대로 아래에 있습니다.

Lot=LotSize/ 8 ;


 MqlTradeResult StageOneBuyRes={ 0 };
MqlTradeRequest StageOneBuy={ 0 };

StageOneBuy.action= TRADE_ACTION_DEAL ;  
StageOneBuy.magic=MagicNumber;  
StageOneBuy.symbol= _Symbol ;             // symbol
StageOneBuy.volume=Lot;
StageOneBuy.price= SymbolInfoDouble ( _Symbol , SYMBOL_ASK );
StageOneBuy.sl= 0 ;                   // Stop Loss is not specified
StageOneBuy.tp= 0 ;                 // Take Profit is not specified 
StageOneBuy.deviation = 7 ;  
StageOneBuy.type= ORDER_TYPE_BUY ; // order type
StageOneBuy.type_filling = ORDER_FILLING_FOK ;
StageOneBuy.comment = "test" ;
 

MqlTradeResult StageOneSellRes={ 0 };
MqlTradeRequest StageOneSell={ 0 };

StageOneSell.action= TRADE_ACTION_DEAL ;  
StageOneSell.magic=MagicNumber;  
StageOneSell.symbol= _Symbol ;             // symbol
StageOneSell.volume=Lot;
StageOneSell.price= SymbolInfoDouble ( _Symbol , SYMBOL_BID );
StageOneSell.sl= 0 ;                   // Stop Loss is not specified
StageOneSell.tp= 0 ;                 // Take Profit is not specified 
StageOneSell.deviation = 7 ;  
StageOneSell.type= ORDER_TYPE_SELL ; // order type
StageOneSell.type_filling = ORDER_FILLING_FOK ;
StageOneSell.comment = "test" ;

 if ( SymbolInfoInteger ( _Symbol , SYMBOL_SESSION_DEALS )== 0 ){ if ( OrderSend (StageOneBuy,StageOneBuyRes))buyticket1=( int ) OrderGetInteger ( ORDER_POSITION_ID );}
       if (buyticket1> 0 ){ Print ( "Order Placed " , "Order Ticket " , buyticket1, " Order Lots " , OrderGetDouble ( ORDER_VOLUME_INITIAL )); return ;} else { Print ( "Order Placement Unsuccessful " , GetLastError ()); return ;}

 if ( SymbolInfoInteger ( _Symbol , SYMBOL_SESSION_DEALS )== 0 ){ if ( OrderSend (StageOneSell,StageOneSellRes))sellticket1=( int ) OrderGetInteger ( ORDER_POSITION_ID );}
       if (sellticket1> 0 ){ Print ( "Order Placed " , "Order Ticket " , sellticket1, " Order Lots " , OrderGetDouble ( ORDER_VOLUME_INITIAL )); return ;} else { Print ( "Order Placement Unsuccessful " , GetLastError ()); return ;}
 
MetaNt :

예, 요청한 대로 아래에 있습니다.


이 코드는 올바르지 않습니다. 그대로 사용할 수 없습니다.

buyticket1=( int ) OrderGetInteger ( ORDER_POSITION_ID );

주문/거래에 대한 정보를 얻으려면 StageOneBuyRes 구조를 사용해야 합니다. 주로 retcode를 확인해야 합니다. 문서를 참조 하거나 OrderSend() 사용 예제에 대한 사이트를 검색하십시오. mql4와 같이 작동하지 않습니다.

귀하의 코드는 아마도 없는 곳에 오류를 반환할 것입니다. 포지션이 열렸거나 증가했는지 확인하기 위해 터미널을 확인하셨습니까?

참고로 이 주제와 관련이 없지만 다음 코드는 생각한 대로 작동하지 않을 수 있습니다.

 SymbolInfoInteger ( _Symbol , SYMBOL_SESSION_DEALS )
 

맞습니다 수정하겠습니다.

터미널을 확인한다는 것이 무엇을 의미하는지 잘 모르겠습니다. 거기에는 백테스트 결과가 표시되지 않습니다.  

 
MetaNt :

맞습니다 수정하겠습니다.

터미널을 확인한다는 것이 무엇을 의미하는지 잘 모르겠습니다. 거기에는 백테스트 결과가 표시되지 않습니다.  

아 알았어, 백테스팅 이라 못 잡았어.
 
angevoyageur :

이 코드는 올바르지 않습니다. 그대로 사용할 수 없습니다.

주문/거래에 대한 정보를 얻으려면 StageOneBuyRes 구조를 사용해야 합니다. 주로 retcode를 확인해야 합니다. 문서를 참조 하거나 OrderSend() 사용 예제에 대한 사이트를 검색하십시오. mql4와 같이 작동하지 않습니다.


Btw 이것이 어떻게 오류를 표시합니까?