Meta Trader에서 스프레드 거래 - 페이지 5

 

간단히 말해서:

1) 평균 스프레드가 계산됩니다.

2) 현재 스프레드는 LAST 가격으로 계산됩니다.

3) 현재 스프레드가 평균보다 높거나 낮으면 포지션이 열립니다 . (낮은/높은 것은 시장 상황에 따라 결정됩니다 - 콘탱고 또는 백워데이션)

 
평균 스프레드를 어떻게 계산합니까(비밀이 아닌 경우)?
 
MetaDriver >> :

무슨 범죄인지 잘 이해가 안가네요. 그녀는 브로커와 공모하여 가격을 움직였습니까? 아니면 그냥 할머니? 힘들게 번 돈으로 범죄를 저지르면 안 됩니다. 재치 - 예, 범죄 - 아니요. 그리고 당신의 " 큰 법안 "은 신경증적인 도덕화에 불과합니다. 은행이 같은 일을 할 때 범죄라고 부르는 사람은 아무도 없습니다. :)


여기(포스트 310)에서 읽을 수 있습니다. http://www.procapital.ru/showthread.php?t=20648&page=21 및 여기 http://www.procapital.ru/showthread.php?t=21115

 
rid >> :
평균 스프레드를 어떻게 계산합니까(비밀이 아닌 경우)?


double CalculateAvarageSpread ( string Symbol_1 , string Symbol_2 ,
                               int Timeframe , int NBars )
{
   int k ;
   double N = 0 ;
   double Sum = 0 ;
   for ( k = 0 ; k < iBars ( Symbol_1 , Timeframe ) ; k + + )
   {
       if ( N = = NBars )
         break ;

       int symb2Shift = iBarShift ( Symbol_2 , Timeframe , iTime ( Symbol_1 , Timeframe , k ) , true ) ;
       if ( symb2Shift ! = - 1 )
       {
         Sum + = iClose ( Symbol_1 , Timeframe , k ) - iClose ( Symbol_2 , Timeframe , symb2Shift ) ;
         N + + ;
       }
   }
   double avarageSpread = Sum / N ;
   return ( avarageSpread ) ;
}
 
C-4 >> :


여기(포스트 310)에서 읽을 수 있습니다. http://www.procapital.ru/showthread.php?t=20648&page=21 및 여기 http://www.procapital.ru/showthread.php?t=21115

이것이 사무국의 입장이며, 그 이유는 분명합니다. 그러나 사실을 보면 - 부엌이 입찰과 제안을 내놓았는데, 이것은 거래를 제안하는 것에 불과합니다. 고객은 이 제안에 동의 합니다. 그 후 부엌이 속았다고 소리치기 시작함과 동시에 "아무도, 아무리 똑똑한 상인이라도 밤에 고기를 장사하는 사람은 없다" 또는 "우리는 시장 유동성이 무한하지 않습니다" - 이것은 유치원입니다.

부엌의 위치가 매우 약해 보입니다. 나는 그들이 그 사건을 법정으로 가져가고 싶어할지 의심스럽습니다.

 

흠.. 물론 모든 것이 순조롭지는 않다.

데모에서 B.의 경우 기호 GCZ9 및 GCG0(Bid = Ask)의 가격으로만 주문을 열 수 있습니다.

실제 거래에서는 GCZ9#I 및 GCG0#I, (Bid != Ask)에서 오프닝이 발생합니다.

그리고 스프레드는 꽤 적절한 것으로 판명되었으며 메가 이익을 얻을 방법이 없습니다.


일반적으로 아름다운 데모 균형 차트를 작성하는 또 하나의 방법이 발견된 것 같습니다.

 
Fduch >> :

흠.. 물론 모든 것이 순조롭지는 않다.

데모에서 B.의 경우 기호 GCZ9 및 GCG0(Bid = Ask)의 가격으로만 주문을 열 수 있습니다.

실제 거래에서는 GCZ9#I 및 GCG0#I, (Bid != Ask)에서 오프닝이 발생합니다.

그리고 스프레드는 꽤 적절한 것으로 판명되었으며 메가 이익을 얻을 방법이 없습니다.


일반적으로 아름다운 데모 균형 차트를 작성하는 또 하나의 방법이 발견된 것 같습니다.


확실히 그런 방식은 아닙니다. ! 실제와 마찬가지로 데모에서 포지션은 티커 #I의 매도호가/매도호가로 열리거나 닫힙니다(LAST가 아님)!

이것은 테스터에 있습니다. 작업은 마지막 가격으로 수행됩니다.

(그리고 테스터 B.에서는 티커 스프레드 #I는 고려되지 않습니다. 모든 결과와 함께...)

그건 그렇고, 평균 코드에 감사드립니다. 확산.

칩이 작동합니다. 1페이지의 상태와 거의 동일합니다.

물론 실제 생활에서는 매우 부드럽지만 그럴 가능성은 거의 없습니다. 미끄러짐은 실질적으로(기껏해야) 모든 이익을 무효화합니다. 도구를 삽질하고 가장 최적의 도구를 찾아야합니다. 다행히도 이러한 장점(도구)은 충분합니다. 그러면 최소한 무언가를 짜낼 수 있을 것입니다.

테스터에서 어드바이저는 명백한 이유로 쫓겨날 수 없습니다. 따라서 온라인으로 상황을 모니터링해야 합니다. 빠르지 않아...

 

추가로 스프레드 편차의 계산과 엔트리의 계산을 마지막 가격이 아니라 MarketInfo(ticker #I,MODE_ASK)에서 구현한다고 가정합니다.

또한 항목에 대한 각 상품의 현재 스프레드 크기에 대한 제한을 설정합니다.

spr = MarketInfo(티커 #I,MODE_ASK) -MarketInfo(티커 #I,MODE_BID) ;

또한 작업 시간 간격을 엄격하게 설정하십시오. 포지션을 열 때 엄청난 스프레드로 비유동적인 시간에 빠지지 않기 위해서.

이런 식으로 각 거래에 대한 이익을 2-4 틱 증가 (또는 손실 감소) 할 수 있다고 생각합니다.

 
LAST 가격으로 인해 시세의 경우 전체적으로 헤지가 실제로 오랫동안 좋은 이익을 얻었으며(지금 찾고 있습니다-댓글에 가져왔습니다) 차트와 터미널에서 LAST 가격의 관성으로 인해 미미한 이익이 표시되거나 더 심하게 표시됩니다. 여전히 손실입니다!
나는 현재 GBPUSD와 6BH0을 함께 보고 있기 때문에 시급히 MarketInfo 가격으로 전환해야 합니다(티커 #I,....
 

저는 처음부터 이 스레드를 따라왔습니다.

그러나 나는 평균값의 발견과 발견의 문제가 완전히 명확하지 않다는 것에 완전히 동의하지 않습니다. 언제.

스프레드(차이)를 조금 다르게 표현했는데, 무례할 수도 있지만 어드바이저로서 매우 흥미롭게 보여주고 있다.

말할 수 있다면.

 extern string Sum_1 = "GCG0" ;
extern string Sum_2 = "GCZ9" ;
double ARR [ 100 , 3 ] ;
double ARR_M [ 100 ] ;
int N = 0 ;
int init ( )
{
ArrayInitialize ( ARR , 0 ) ;
ArrayInitialize ( ARR_M , 0 ) ;
}
int start ( )
  {
//----
double G0 = MarketInfo ( Sum_1 , MODE_BID ) ;
double Z9 = MarketInfo ( Sum_2 , MODE_BID ) ;
ARR [ N , 0 ] = G0 ;
ARR [ N , 1 ] = Z9 ;
ARR_M [ N ] = G0 - Z9 ;
N + + ;
if ( N > = 100 ) N = 0 ;
double SUM_0 = 0 ;
double SUM_1 = 0 ;
for ( int r = 0 ; r < 100 ; r + + )
{ 
SUM_0 = SUM_0 + ( ARR [ r , 0 ] - ARR [ r , 1 ] ) ;

}
double Aver = SUM_0 / 100 ;
double MAX = 0 ;
double MIN = 0 ;
for ( int rr = 0 ; rr < 100 ; rr + + )
{
if ( ARR_M [ rr ] > MAX ) MAX = ARR_M [ rr ] ;
if ( ARR_M [ rr ] < MIN ) MIN = ARR_M [ rr ] ;
}
Comment ( "Aver  " , DoubleToStr ( Aver , 2 ) , "   " , N , "   MAX  " , DoubleToStr ( MAX , 2 ) , " MIN  " , DoubleToStr ( MIN , 2 ) , " \n " ,
G0 , "  " , Z9 , "  " , G0 - Z9 ) ;
//----
   return ( 0 ) ;
  }