주식 시장. 재고. 거래 주문 실행 속도. - 페이지 8

 
Replikant_mih # :

왜 안되나요?) 가장 좋은 제안은 10.1입니다. 11에서 구매 제한을 던지고, 최대 11잔의 볼륨이 전체 주문을 채우기에 충분하지 않은 경우 전체 잔을 11까지 수집하거나, 중간 어딘가에서 멈춥니다. . 정확히 충족되기 위해 필요하다면 더 많이 겹치면 끝입니다. 이상적으로는 최대허용가격을 보고 바로 앞 어딘가에 가격을 설정하여 전체 볼륨을 확실하게 실행합니다. 일반적으로 전체 유리를 아주 깊이 쓸어넘긴다면 그것은 오히려 내가 뭔가 잘못하고 있다는 신호입니다)))).


IOC - 글쎄, 당신은 도중에 모든 것을 한 다음 나머지는 스스로 벗습니다. 여기 IOC가 있습니다). 저는 차익 거래를 하지 않습니다. 일부 좁은 세부 사항을 이해하지 못할 수도 있습니다. 일정 수준까지 모든 신청서를 먹고 싶다면 - 글쎄, 당신은 거기에 볼륨을보고 나머지를 철회하는 옵션에 만족하지 않으면 원하는만큼 던질 수 있습니다. 요컨대, 작업은 나에게 명확하지 않습니다).

나는 이미 Quick에서 이것을 한다고 말했다.

procedure TExpert.SellBuySpot;
var
  outStr, id: string ;
  res: long ;
  ErrCode: long ;
  ErrSize: Dword;
  ErrStr: LPSTR;
  Dt: TDateTime;
begin
  FOrder:= 0 ;
  FTransID:= GetTransID();
  id:= IntToStr(TransID);
   case BuySell of
     1 : outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=B' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.SellPrice + 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';' ;
     2 : outStr:= 'ACCOUNT=' + ExpData.SpotAccaunt + '; CLIENT_CODE=' +
               ExpData.Client + '; TYPE=L; TRANS_ID=' + id + '; CLASSCODE=' +
               ExpData.SpotData.ClassCode + '; SECCODE=' + ExpData.SpotData.SecCode +
               '; ACTION=NEW_ORDER; OPERATION=S' + '; PRICE=' +
               FloatToStr(ExpData.SpotData.BuyPrice - 10 * ExpData.SpotData.Step) +
               '; QUANTITY=' + FloatToStr(aVol) + ';' ;
  end;
  ErrCode:= 0 ;
  ErrSize:= 0 ;
  ErrStr:= nil;
  res:= T2QSendASyncTrans(LPSTR(AnsiString(outStr)), ErrCode, ErrStr, ErrSize);
   if (res <> TRANS2QUIK_SUCCESS) then
  begin
    FTransID:= 0 ;
    FTransBusy:= false ;
  end else
  begin
    Dt:= now();
    FMemo.Lines.Add(DateToStr(Dt) + ' ' + FormatDateTime( 'hh:mm:ss.zzz' , Now()) +
                               ' --> Ордер ' + ExpData.SpotData.SecCode + ' отправлен.' );
  end;
end;

가격을 옮기지만 가끔(드물게) 주문이 오더북에 남아 있기 때문에

제거해야 하고 새 것을 넣고 다시 모니터링해야 합니다. 이 모든 것은 추가 시간입니다.

또한 촬영을 하는 동안 현실이 될 수도 있습니다!

따라서 IOC는 가장 신뢰할 수 있지만 현장에서

중재에서는 모든 것이 매우 간단합니다. 한 다리의 100단위를 샀다면 즉시 다른 다리의 100단위를 팔아야 합니다(키워드 HERE)

따라서 적절한 가격과 적절한 수량 으로 가능한 한 빨리 응답 거래를 만드는 것이 과제입니다.

추가됨

MT-5에서는 모든 것이 훨씬 간단하고 빠르며 옵션이 있습니다.

예를 들어 선택한 가격 + 이전(최저가)의 총 거래량을 계산하여 SPOT의 유리를 실행하고 즉시 최고의 가격을 취하지 않아도 문제가 없습니다.

따라서 MT-5에서 주식에 대한 거래 주문 실행 속도가 걱정되었습니다.

하지만 어쨌든 오더북이 극적으로 변한다는 보장은 없고, 가격을 너무 깊게 잡으면 차익거래 상황을 넘어설 수 있다!

Quick에서 SPOT의 트랜잭션 속도는 240~490ms였으며 핑은 3~4ms였습니다!

FORTS에서 동일한 핑으로 트랜잭션은 4.5~12ms가 걸립니다.

불행히도 요새의 낮은 유동성으로 인해 선물을 먼저 매도해야 합니다.

 
prostotrader # :

나는 이미 Quick에서 이것을 한다고 말했다.

가격을 옮기지만 가끔(드물게) 주문이 오더북에 남아 있기 때문에

제거해야 하고 새 것을 넣고 다시 모니터링해야 합니다. 이 모든 것은 추가 시간입니다.

또한 촬영을 하는 동안 현실이 될 수도 있습니다!

따라서 IOC는 가장 신뢰할 수 있지만 현장에서

중재에서는 모든 것이 매우 간단합니다. 한 다리의 100단위를 샀다면 즉시 다른 다리의 100단위를 팔아야 합니다(키워드 HERE)

따라서 적절한 가격과 적절한 수량 으로 가능한 한 빨리 응답 거래를 만드는 것이 과제입니다.

추가됨

MT-5에서는 모든 것이 훨씬 간단하고 빠르며 옵션이 있습니다.

예를 들어 선택한 가격 + 이전(최저가)의 총 거래량을 계산하여 SPOT의 유리를 실행하고 즉시 최고의 가격을 취하지 않아도 문제가 없습니다.

따라서 MT-5에서 주식에 대한 거래 주문 실행 속도가 걱정되었습니다.

하지만 어쨌든 오더북이 극적으로 변한다는 보장은 없고, 가격을 너무 깊게 잡으면 차익거래 상황을 넘어설 수 있다!

Quick에서 SPOT의 트랜잭션 속도는 240~490ms였으며 핑은 3~4ms였습니다!

FORTS에서 동일한 핑으로 트랜잭션은 4.5~12ms가 걸립니다.

불행히도 요새의 낮은 유동성으로 인해 선물을 먼저 매도해야 합니다.


이해했다.
그리고 mt5-Quik 속도로 미래에 대해 주식을 차익 거래하는 것이 정말로 가능합니까? 아니면 고속 동지들과 어떻게든 경쟁하기 위해 일종의 "지적" 구성 요소가 필요합니까?

 
Replikant_mih # :


이해했다.
그리고 mt5-Quik 속도로 미래에 대해 주식을 차익 거래하는 것이 정말로 가능합니까? 아니면 고속 동지들과 어떻게든 경쟁하기 위해 일종의 "지적" 구성 요소가 필요합니까?

Classic 만 있으면 Quick이 견딜 만하게 대처하고 스캘핑을 시도하고 싶다면 최소한 MT-5 (2 터미널)가 필요합니다.

 
prostotrader # :

Classic 만 있으면 Quick이 견딜 만하게 대처하고 스캘핑을 시도하고 싶다면 최소한 MT-5 (2 터미널)가 필요합니다.

2 Brok는 주식과 선물이 하나의 터미널(예: 오프닝)에서 거래되는 것을 허용하지 않거나 터미널 연결을 통해 모든 것이 작동하므로 아무 것도 다시 할 필요가 없기 때문입니까? mt5-Quik 대신 mt5-mt5입니다.

 
Replikant_mih # :

2 Brok는 주식과 선물이 하나의 터미널(예: 오프닝)에서 거래되는 것을 허용하지 않거나 터미널 연결을 통해 모든 것이 작동하므로 아무 것도 다시 할 필요가 없기 때문입니까? mt5-Quik 대신 mt5-mt5입니다.

아니요, 지금은 Quick만 MT5 - MT5를 쓰기 시작했습니다.

추가됨

자, 여기에 썼습니다.

이제 테스트가 언제 가능할지 명확하지 않습니다 ...


 
prostotrader # :

아니요, 지금은 Quick만 MT5 - MT5를 쓰기 시작했습니다.

추가됨

자, 여기에 썼습니다.

이제 테스트가 언제 가능할지 명확하지 않습니다 ...


축하합니다!

어떻게 계획하고 계십니까? 귀하의 Expert Advisor의 각 현물 선물 쌍 또는 모든 쌍에 대한 하나의 Expert Advisor?

 
Andrey Miguzov # :

축하합니다!

어떻게 계획하고 계십니까? 귀하의 Expert Advisor의 각 현물 선물 쌍 또는 모든 쌍에 대한 하나의 Expert Advisor?

각 쌍에 대한 자체 클라이언트-서버 세트

한 명의 Expert Advisor에서 모든 선물과 SPOT을 추적하는 것이 왜 골치 아픈 일입니까?

기본적으로 Expert Advisor(클라이언트)는 한 명뿐이며, 서버는 수행자일 뿐입니다. SPOT 구매를 위한 버팀목입니다. :)

추가됨

Expert Advisor - 클라이언트는 필요한 모든 데이터를 서버에 자동으로 전송(수신)합니다.

어떤 쌍이든 상관없이 EA는 자동으로 미래의 스팟 쌍으로 조정됩니다.

 
prostotrader # :

한 명의 전문가 고문이 모든 선물과 SPOT을 추적하는 것이 왜 골치 아픈 일입니까?

솔직히 말해서, 나는 오프닝의 개인 계정에서 당신의 스크린샷과 선물 주식 거래를 위한 고문을 디버깅하는 동안 큰 영감을 받았습니다(스캘핑이 아니라 이마의 고전).

논리적으로 만료 전 이익이 더 큰 쌍에 입력해야 합니다(커미션 및 실제 계약 수 고려).

따라서 모든 관련 쌍을 분석해야 합니다. 각 쌍에 고문을 배치하면 서로 독립적으로 작동합니다.

특히 한 페어에서 포지션을 닫고 다른 페어로 이동할 때 실제로 두통이 있습니다. 또한 쌍이 많으면 느려질 것이라고 생각합니다.


추신: 환율의 현재 가치를 감안할 때 가까운 장래에 이러한 전략의 수익성은 물론 거래소가 열리면 훨씬 더 커질 것입니다. :)

영상에서 보니 + 스캘핑용으로 쓰신거 직접 쓰셨네요. 평균 진입 및 퇴장은 평균 EMA (링크 )입니까, 아니면 어떻게든 평균을 내고 있습니까(비밀이 아닌 경우)?

 
Andrey Miguzov # :

평균 진입 및 퇴장은 평균 EMA (링크 )입니까, 아니면 어떻게든 평균을 내고 있습니까(비밀이 아닌 경우)?

비밀은 없어 그냥 바보같이 평균값을 계산해 함수를 호출할 때마다

exp_data.midle_enter = exp_data.midle_enter * exp_data.m_ent_cnt;
  exp_data.m_ent_cnt++;
  exp_data.midle_enter = (exp_data.midle_enter + result)/exp_data.m_ent_cnt; 

exp_data.midle_exit = exp_data.midle_exit * exp_data.m_exit_cnt;
  exp_data.m_exit_cnt++;
  exp_data.midle_exit = (exp_data.midle_exit + result)/exp_data.m_exit_cnt;

이 데이터는 이 쌍의 가격 수준을 이해하는 데 필요합니다.

 
prostotrader # :

비밀은 없어 그냥 바보같이 평균값을 계산해 함수를 호출할 때마다

이 데이터는 이 쌍의 가격 수준을 이해하는 데 필요합니다.

이해했습니다. 자동차 용어라면 이것이 SMA입니다. 그러나 결국 계산의 시작 부분에서 멀어 질수록 평균 값은 현재 값에서 더 강해집니다.

대략적으로 이 평균화 방법은 이전 값을 "잊지" 않습니다. exp_data.m_ent_cnt는 호출할 때마다 더 커지고 각각의 새 값은 최종 결과에 미치는 영향이 점점 줄어듭니다.

내 관찰에 따르면 낮에는 평균 값이 변하고 매우 민감합니다.

이론적으로 스캘핑에 대한 EMA는 더 적합해야 하며 코드는 다음과 같습니다.

 double EMA_period = 100.0 ; //Период ЕМА для усреднения, тиков
double SmoothFactor = 2.0 /( 1.0 +EMA_period);
 
if (EMA_ask< 0 ) EMA_ask=ask; //первый тик
   else
  EMA_ask=ask*SmoothFactor+EMA_ask*( 1.0 -SmoothFactor);