시장가 주문을 올바르게 여는 방법은 무엇입니까? - 페이지 8

 
Dmitry Fedoseev :
당신은 휴식이 필요한 경우가 아닙니다.
그게 다야
 
일반적으로 IMHO의 결과는 다음과 같습니다.

전 세계적으로 2가지 방법이 있습니다.

1) 환경 분석(트랜잭션 이력 빠뜨리기, 오픈 포지션 또는 포지션 볼륨 확인)

2) 거래 분석.

첫 번째는 더 느립니다. 그러나 더 신뢰할 수 있습니다. 타협이 필요합니다. 아마도 여기에서 전략과 춤을 봐야합니다 ...

네, FORTS에 본격적인 오더북이 있으니 틱이 아닌 BookEvent 이벤트로 작업해야 합니다.

Vasily Sokolov 가 주제에 대해 말하지 않은 것은 이상합니다. 흥미로운 관점...
 
Dennis Kirichenko :
일반적으로 IMHO의 결과는 다음과 같습니다.

전 세계적으로 2가지 방법이 있습니다:

1) 환경 분석(트랜잭션 이력 빠뜨리기, 오픈 포지션 또는 포지션 볼륨 확인)

2) 거래 분석.

첫 번째는 더 느립니다. 그러나 더 신뢰할 수 있습니다. 타협이 필요합니다. 아마도 여기에서 전략과 춤을 봐야합니다 ...

네, FORTS에 본격적인 오더북이 있으니 틱이 아닌 BookEvent 이벤트로 작업해야 합니다.

Vasily Sokolov 가 주제에 대해 말하지 않은 것은 이상합니다. 흥미로운 관점...
아마 곧 나는 유리로 바꾸겠지만, 지금까지는 .... 구식 방식.
 
Dennis Kirichenko :
일반적으로 IMHO의 결과는 다음과 같습니다.

전 세계적으로 2가지 방법이 있습니다.

1) 환경 분석(트랜잭션 이력 빠뜨리기, 오픈 포지션 또는 포지션 볼륨 확인)

2) 거래 분석.

첫 번째는 더 느립니다. 그러나 더 신뢰할 수 있습니다. 타협이 필요합니다. 아마도 여기에서 전략과 춤을 봐야합니다 ...

네, FORTS에 본격적인 오더북이 있으니 틱이 아닌 BookEvent 이벤트로 작업해야 합니다.

Vasily Sokolov 가 주제에 대해 말하지 않은 것은 이상합니다. 흥미로운 관점...
그런데 문제가 생겼습니다. BookEvent 이벤트를 Tick이나 Timer와 같은 방식으로 사용할 수 있습니까?
저것들. 전략을 완전히 거기로 옮기시겠습니까?
 
주제로 기억합니다...

한 번 이 주문 에 대해 작업한 적이 있으며 CiOnTrade 클래스를 작성했습니다.
class CiOnTrade : public CTrade
흥미로운 작업이었습니다. 의뢰인과 나는 서로의 신경을 덜덜 떨며 창을 부러뜨렸다. 내가 기억하는 한, 그곳의 주요 업무는 보장된 수량을 사고파는 것이었다. 그리고 볼륨의 일부가 채워지지 않으면 이 주문을 삭제하고 나머지는 다른 가격으로 채워야 했습니다...

그래서 내가 찾은 최적의 솔루션은 상태를 처리하는 것이었습니다. 그리고 너무 많았습니다.
enum ENUM_TRADE_STATE
  {
   TRADE_STATE_NONE= 0 ,       // "ничего"
   TRADE_STATE_ORDERS= 1 ,     // "только ордера"
   TRADE_STATE_POSITION= 2 ,   // "только позиция"
   TRADE_STATE_ALL= 3 ,       // "все"
  };
1) "Nothing"은 아무것도 수행되지 않은 초기 상태입니다.

2) "주문만 가능"은 주문이 접수된 상태입니다.

3) "Position only"는 주문이 완전히 채워진 상태입니다.

4) "전체" - 주문이 완료되지 않은 상태로 이미 시장에 포지션이 있는 상태입니다.

여기서는 각 상태를 처리해야 했습니다... 네, 그런데 중간 상태도 있음을 인정합니다. 그래서 내 수업이 향상 될 수 있습니다.
 
Gennady Mazur :
그런데 문제가 생겼습니다. BookEvent 이벤트를 Tick이나 Timer와 같은 방식으로 사용할 수 있습니까?
저것들. 전략을 완전히 거기로 옮기시겠습니까?
그래서 예! 그러나 주문서는 이벤트를 더 자주 생성한다는 점을 명심하십시오. 따라서 불필요한 것을 걸러내기 위해 약간의 필터가 필요합니다. 예를 들어 가격은 변경되지 않았지만 일부 애플리케이션의 볼륨만...
 
Dennis Kirichenko :
그래서 예! 그러나 주문서는 이벤트를 더 자주 생성한다는 점을 명심하십시오. 따라서 불필요한 것을 걸러내기 위해 약간의 필터가 필요합니다. 예를 들어 가격은 변경되지 않았지만 일부 애플리케이션의 볼륨만...
알겠습니다. 감사합니다... 그리고 어떤 경우에는 특히 강한 수준 근처에서 가격 변화보다 거래량 변화가 더 중요합니다.
 
Dennis Kirichenko :
일반적으로 IMHO의 결과는 다음과 같습니다.

전 세계적으로 2가지 방법이 있습니다.

1) 환경 분석(트랜잭션 이력 빠뜨리기, 오픈 포지션 또는 포지션 볼륨 확인)

2) 거래 분석.

첫 번째는 더 느립니다 . 그러나 더 신뢰할 수 있습니다. 타협이 필요합니다. 아마도 여기에서 전략과 춤을 봐야합니다 ...
OrderSend+Sleep (0) 옵션은 OrderSend+OnTradeTransaction보다 느리지 않습니다. 정확히 잰. 따라서 비동기 트랜잭션이 아닌 두 번째 옵션을 사용하지 않습니다.
 
Dennis Kirichenko :
거래에 대한 정보가 아직 도착하지 않았다고 가정합니다. 여기( 빨간색으로 강조 표시)는 운에 의존합니다. 그리고 그녀는 변덕스러운 숙녀입니다 :-))

bool OpenSellPosition( string symbol, double volume, string comment= "" , ulong deviation= 10 , ENUM_ORDER_TYPE_FILLING filling= ORDER_FILLING_FOK )
{
   MqlTradeRequest Request;
   MqlTradeResult Results;
   ZeroMemory (Request);
   ZeroMemory (Results);
  Request.price= SymbolInfoDouble ( _Symbol , SYMBOL_BID );
  Request.action= TRADE_ACTION_DEAL ;
  Request.type= ORDER_TYPE_SELL ;
  Request.symbol=symbol;
  Request.volume=volume;      
  Request.deviation=deviation;
  Request.comment=comment;  
  Request.type_filling=filling;
   bool res= false ;
  res= OrderSend (Request,Results);
   if (res)
  {
     if (Results.deal> 0 ) return ( true );
     else return ( false );

  }
   return ( false );
}

ORDER_STATE_FILLED 를 사용하더라도 Results.order에 문제가 있을 수 있습니다. Results.deal이 null입니다. 이 상황의 100% 재현은 FXOpen-MT5 서버에서 이루어집니다.

다른 서버에서 많은 데모를 열고 코드가 최대 용량으로 작동하도록 하는 것이 좋습니다. 이것이 내가 MT4 성경을 위해 한 일입니다. 따라서 주제에 문제가 없습니다.

 
fxsaber :
OrderSend+Sleep(0) 옵션은 OrderSend+OnTradeTransaction보다 느리지 않습니다. 정확히 잰. 따라서 비동기 트랜잭션이 아닌 두 번째 옵션을 사용하지 않습니다.

OrderSend+Sleep (0) 옵션은 개발자의 단점 이기 때문에 임시입니다(예를 들어 위조하지 마십시오 :)).

코드가 수정되고 OrderSend만 남습니다.