두 선물 간의 스프레드

 

여러분, 좋은 오후입니다!

두 선물 간의 스프레드를 나타내는 지표 를 작성했습니다. 두 가지 문제가 있습니다.

1) 표시기가 매우 버그가 있고, 때로는 표시되고, 때로는 표시되지 않고, 그런 다음 일종의 쓰레기를 표시합니다(업데이트를 눌러야 하고 제자리에 떨어지는 것 같습니다).

2) 두 선물의 가격을 동기화하기 위한 저자의 알고리즘: 선물에는 종종 특정 막대가 부족할 수 있으므로(낮은 유동성으로 인해) 작업은 두 선물 간의 실제 스프레드를 얻기 위해 막대를 동기화하는 것이었습니다. 포럼을 검색했는데 이 주제에 대해 아무 것도 찾지 못했습니다. 결과적으로, 나는 이 방법을 생각해 냈습니다. 우리는 4개의 시계열을 취합니다 - 1번 상품 의 막대 시간, 1번 상품의 막대 종가, 2번 상품의 막대 시간, 종가 악기 번호 2에 대한 막대. 한 상품에 대한 시간 및 종가의 시계열에 동일한 수의 막대를 지정하면 두 번째 상품에 대해 동일하게 표시되고 두 번째 상품에 대해서는 당연히 고유하지만 동일합니다(연결 시간 및 종가). 한 계측기의 시간을 다른 계측기에 상대적으로 동기화하는 것만 남아 있습니다. 다음은 상품 1의 데이터를 기반으로 스프레드를 구축하는 예입니다. 상품 1의 i번째 종가를 가져와 지수가 다음과 같은 상품 2의 가격을 뺍니다. 1번 기기의 배열과 시간 값이 일치하는 기기 2번의 시간 배열 인덱스입니다. 이 방법 덕분에 지표는 최소한 첫 번째 또는 두 번째 상품 또는 일반적으로 왼쪽 상품에 구축할 수 있습니다(예: RTS 차트에서 Gazprom과 Lukoil 간의 스프레드를 던짐).

   if (Flag==SincForIn1)									// Синхронизируем по первому инструменту.
      {
       while (i>= 0 )                                                			// Цикл перебора для расчета спреда для всех непосчитанных баров, от самого последнего i до нулевого.
         {
          SpreadBuffer[i]=closeIn1[i]-closeIn2[ ArrayBsearch (timeIn2,timeIn1[i])]; 	// Расчет спреда (существуют различия в количесве баров двух инструментов, за основу берутся бары Инструмента №1)
          i--;                                                    			// Снижение индекса бара для перехода расчетов к следующему бару и так до нулевого включительно.
         }

전반적으로 나는 더 나은 것을 생각할 수 없었습니다. 나는 당신의 제안을 듣고 싶었습니다. 아마도 두 선물의 동기화된 스프레드 차트를 구축하는 훨씬 간단하고 아름답고 이해하기 쉽고 효과적인 방법이 있을 것입니다. 그러면 버그가 멈출 수도 있고, 아니면 지표를 "쿨하게" 쓰는 나일 수도 있습니다...

포스트에 인디케이터를 붙였습니다.

미리 감사드립니다.

파일:
Spread.mq5  24 kb
 
iiivasyaiii :

여러분, 좋은 오후입니다!

두 선물 간의 스프레드를 나타내는 지표 를 작성했습니다. 두 가지 문제가 있습니다.

1) 표시기가 매우 버그가 있고, 때로는 표시되고, 때로는 표시되지 않고, 그런 다음 일종의 쓰레기를 표시합니다(업데이트를 눌러야 하고 제자리에 떨어지는 것 같습니다).

2) 두 선물의 가격을 동기화하기 위한 저자의 알고리즘: 선물에는 종종 특정 막대가 부족할 수 있으므로(낮은 유동성으로 인해) 작업은 두 선물 간의 실제 스프레드를 얻기 위해 막대를 동기화하는 것이었습니다. 포럼을 검색했는데 이 주제에 대해 아무 것도 찾지 못했습니다. 결과적으로, 나는 이 방법을 생각해 냈습니다. 우리는 4개의 시계열을 취합니다 - 1번 상품 의 막대 시간, 1번 상품의 막대 종가, 2번 상품의 막대 시간, 종가 악기 번호 2에 대한 막대. 한 상품에 대한 시간 및 종가의 시계열에 동일한 수의 막대를 지정하면 두 번째 상품에 대해 동일하게 표시되고 두 번째 상품에 대해서는 당연히 고유하지만 동일합니다(연결 시간 및 종가). 한 계측기의 시간을 다른 계측기에 상대적으로 동기화하는 것만 남아 있습니다. 다음은 상품 1의 데이터를 기반으로 스프레드를 구축하는 예입니다. 상품 1의 i번째 종가를 가져와 지수가 다음과 같은 상품 2의 가격을 뺍니다. 1번 기기의 배열과 시간 값이 일치하는 기기 2번의 시간 배열 인덱스입니다. 이 방법 덕분에 지표는 최소한 첫 번째 또는 두 번째 상품 또는 일반적으로 왼쪽 상품에 구축할 수 있습니다(예: RTS 차트에서 Gazprom과 Lukoil 간의 스프레드를 던짐).

전반적으로 나는 더 나은 것을 생각할 수 없었습니다. 나는 당신의 제안을 듣고 싶었습니다. 아마도 두 선물의 동기화된 스프레드 차트를 구축하는 훨씬 간단하고 아름답고 이해하기 쉽고 효과적인 방법이 있을 것입니다. 그러면 글리치가 멈출 수도 있고, 지표를 너무 "쿨하게" 쓰는 것은 나일 수도 있습니다...

포스트에 인디케이터를 붙였습니다.

미리 감사드립니다.

스프레드를 구축하려면 입찰을 수락하고 가격을 요청해야 합니다. 그래프는 마지막으로 그려지지만 이것은 사실이 아닙니다.
 
Maxim Romanov :
스프레드를 구축하려면 입찰가와 가격을 요청해야 합니다. 그래프는 마지막으로 그려지지만 이것은 사실이 아닙니다.

맥심, 제 문제에 관심을 가져주셔서 감사합니다.

귀하의 답변에 대한 몇 가지 의견이 있습니다.

1) 과거 거래(마지막)의 가격이 표시되지 않으며 이는 외환이 아닙니다. 다른 뜻이 있다면 더 자세히 설명해 주세요.

2) 입찰 및 요청은 확실히 좋지만 훨씬 더 복잡합니다. 나는 메인 스프레드에 대해 매수 스프레드와 매도 스프레드와 같은 두 줄을 추가로 작성하려고 했습니다. 그리고 한 번 풀려도(그건 그렇고 오랫동안 그렇게 그렸지만) 그 다음에는 코드에서 뭔가를 변경했는데 나에게서 사라지고 다시 나타나지 않았습니다))) 필요하다면, 그의 코드를 버리십시오. 그리고 입찰 및 도끼의 가장 중요한 단점은 내 기억이 도움이 된다면 입찰 및 요청 데이터가 마지막 2000틱 동안 저장되기 때문에 긴 이력을 분석할 방법이 없다는 것입니다.

따라서 종가 에서 두 상품 간의 스프레드를 구축하는 것부터 시작 하겠습니다. ArrayBsearch() 함수를 사용하여 두 상품의 가격을 동기화하는 접근 방식이 여전히 정확합니까, 아니면 더 간단한 방법이 있습니까?

 
iiivasyaiii :

맥심, 제 문제에 관심을 가져주셔서 감사합니다.

귀하의 답변에 대한 몇 가지 의견이 있습니다.

1) 과거 거래 (마지막)의 가격이 표시되지 않습니다. 이것은 forex가 아닙니다 .

그러한 지식으로 그러한 지표를 작성하기에는 너무 이릅니다.

 
iiivasyaiii :

여러분, 좋은 오후입니다!

두 선물 간의 스프레드를 나타내는 지표 를 작성했습니다. 두 가지 문제가 있습니다.

1) 표시기가 매우 버그가 있고, 때로는 표시되고, 때로는 표시되지 않고, 그런 다음 일종의 쓰레기를 표시합니다(업데이트를 눌러야 하고 제자리에 떨어지는 것 같습니다).

2) 두 선물의 가격을 동기화하기 위한 저자의 알고리즘: 선물에는 종종 특정 막대가 부족할 수 있으므로(낮은 유동성으로 인해) 작업은 두 선물 간의 실제 스프레드를 얻기 위해 막대를 동기화하는 것이었습니다. 포럼을 검색했는데 이 주제에 대해 아무 것도 찾지 못했습니다. 결과적으로, 나는 이 방법을 생각해 냈습니다. 우리는 4개의 시계열을 취합니다 - 1번 상품 의 막대 시간, 1번 상품의 막대 종가, 2번 상품의 막대 시간, 종가 악기 번호 2에 대한 막대. 한 상품에 대한 시간 및 종가의 시계열에 동일한 수의 막대를 지정하면 두 번째 상품에 대해 동일하게 표시되고 두 번째 상품에 대해서는 당연히 고유하지만 동일합니다(연결 시간 및 종가). 한 계측기의 시간을 다른 계측기에 상대적으로 동기화하는 것만 남아 있습니다. 다음은 상품 1의 데이터를 기반으로 스프레드를 구축하는 예입니다. 상품 1의 i번째 종가를 가져와 지수가 다음과 같은 상품 2의 가격을 뺍니다. 1번 기기의 배열과 시간 값이 일치하는 기기 2번의 시간 배열 인덱스입니다. 이 방법 덕분에 지표는 최소한 첫 번째 또는 두 번째 상품 또는 일반적으로 왼쪽 상품에 구축할 수 있습니다(예: RTS 차트에서 Gazprom과 Lukoil 간의 스프레드를 던짐).

전반적으로 나는 더 나은 것을 생각할 수 없었습니다. 나는 당신의 제안을 듣고 싶었습니다. 아마도 두 선물의 동기화된 스프레드 차트를 구축하는 훨씬 간단하고 아름답고 이해하기 쉽고 효과적인 방법이 있을 것입니다. 그러면 버그가 멈출 수도 있고, 아니면 지표를 "쿨하게" 쓰는 나일 수도 있습니다...

포스트에 인디케이터를 붙였습니다.

미리 감사드립니다.

안녕하세요!

1. "거래소 거래" 섹션에 작성해야 합니다.

2. 2개의 선물을 막대로 동기화할 수 없습니다.

선물 중 하나의 막대를 기초로 삼을 필요가 있습니다(가장 유동적인 SBRF 9.20보다 우수함)

3. 스프레드 그림을 완성하기 위해서는 닫기가 아니라 틱하고 메인 선물로 선택된 막대와 동기화해야 합니다.

4. 재계산을 빠르게 하려면 마지막으로 계산된 위치를 기억해야 합니다.

막대 시간 동기화를 사용한 스프레드 재계산을 위한 예제 코드

 int pr_pos = 0 ;
             int sec_pos = 0 ;
             bool is_found;
             int pr_mem = 0 ;
             int sec_mem = 0 ;
             for ( int i = 0 ; i < a_bars; i++)
            {
              is_found = false ;
               while (pr_pos < pr_cnt) 
              {
                 if (( ulong (data_time[i].time) <= ulong (pr_ticks[pr_pos].time)) &&
                   ( ulong (data_time[i].time) + 60 > ulong (pr_ticks[pr_pos].time)))
                {
                  pr_mem = pr_pos;
                   while (sec_pos < sec_cnt) 
                  {
                     if (( ulong (data_time[i].time) <= ulong (sec_ticks[sec_pos].time)) &&
                       ( ulong (data_time[i].time) + 60 > ulong (sec_ticks[sec_pos].time)))
                    {
                      is_found = true ;
                      sec_mem = sec_pos;
                       if ((sec_ticks[sec_pos].bid > 0.0 ) && (pr_ticks[pr_pos].ask > 0.0 ) &&
                         (sec_ticks[sec_pos].ask > 0.0 ) && (pr_ticks[pr_pos].bid > 0.0 ))
                      {
                        data_time[i].hi_value = sec_ticks[sec_pos].bid - pr_ticks[pr_pos].ask;
                        data_time[i].low_value = sec_ticks[sec_pos].ask - pr_ticks[pr_pos].bid;
                      }
                       break ;
                    }
                    sec_pos++;
                  }
                   break ;
                }
                pr_pos++;
              }
               if (is_found == false )
              {
                pr_pos = pr_mem;
                sec_pos = sec_mem;
              }
            }
 
Alexey Viktorov :

그러한 지식으로 그러한 지표를 작성하기에는 너무 이릅니다.

글쎄, 당신은 매우 똑똑하기 때문에 종가 에서 두 가격 시리즈를 동기화하는 방법을 알려주실 수 있습니까 ;)

 
prostotrader :

안녕하세요!

1. "거래소 거래" 섹션에 작성해야 합니다.

2. 2개의 선물을 막대로 동기화할 수 없습니다.

선물 중 하나의 막대를 기초로 삼을 필요가 있습니다(가장 유동적인 SBRF 9.20보다 우수함)

3. 스프레드 그림을 완성하기 위해서는 닫기가 아니라 틱과 메인 선물을 위해 선택된 막대와 동기화하는 것이 필요합니다.

4. 재계산을 빠르게 하려면 마지막으로 계산된 위치를 기억해야 합니다.

막대 시간 동기화로 스프레드 재계산을 위한 예제 코드

간단한 상인, 조언을 주셔서 대단히 감사합니다! 솔루션이 흥미롭습니다. 이제 시도해 보고 구독을 취소하겠습니다.

 
iiivasyaiii :

글쎄, 당신은 매우 똑똑하기 때문에 종가 에서 두 가격 시리즈를 동기화하는 방법을 알려주실 수 있습니까 ;)

당신은 이미 문제의 본질에 대해 모든 것을 썼습니다. 거래 가격에 스프레드를 구축하는 것은 불가능합니다(종가에서는 더욱 그렇습니다!). 느린 구간에서 거래가 오랫동안 없을 수 있고 거래가 성사되더라도 빠른 다리의 거래 가격과 동기화합니다. 저것들. 그러한 정보의 가치는 0입니다. 주문서에는 항상(또는 거의 항상) 현재 매수호가와 매도호가가 있으며 분석해야 합니다.

 
iiivasyaiii :

맥심, 제 문제에 관심을 가져주셔서 감사합니다.

귀하의 답변에 대한 몇 가지 의견이 있습니다.

1) 과거 거래(마지막)의 가격이 표시되지 않으며 이는 외환이 아닙니다. 다른 뜻이 있다면 더 자세히 설명해 주세요.

2) 입찰 및 요청은 확실히 좋지만 훨씬 더 복잡합니다. 나는 메인 스프레드에 대해 매수 스프레드와 매도 스프레드와 같은 두 줄을 추가로 작성하려고 했습니다. 그리고 한 번 풀려도(그건 그렇고 오랫동안 그렇게 그렸지만) 그 다음에는 코드에서 뭔가를 변경했는데 나에게서 사라지고 다시 나타나지 않았습니다))) 필요하다면, 그의 코드를 버리십시오. 그리고 입찰 및 도끼의 가장 중요한 단점은 내 기억이 도움이 된다면 입찰 및 요청 데이터가 마지막 2000틱 동안 저장되기 때문에 긴 이력을 분석할 방법이 없다는 것입니다.

따라서 종가 에서 두 상품 간의 스프레드를 구축하는 것부터 시작 하겠습니다. ArrayBsearch() 함수를 사용하여 두 상품의 가격을 동기화하는 접근 방식이 여전히 정확합니까, 아니면 더 간단한 방법이 있습니까?

나는 프로그래머가 아니며 코드가 필요하지 않으며 코드를 도울 수 없습니다. 하지만 힌트를 드리겠습니다. 그래서 교환상품은 터미널에 있는 라스트 가격으로 만들어지고, 프로스토트레이더가 쓴 것처럼 종가에 동기화하는 것은 옳지 않기 때문에 스프레드를 얻지는 못하지만 완전한 넌센스, 이 방법은 당신이 원하는 것을 추정하십시오. 그리고 진드기에 예, 바로 거기에있을 것입니다. 바로 길을 찾아 갈퀴를 밟아 왜)
 
prostotrader :

안녕하세요!

1. "거래소 거래" 섹션에 작성해야 합니다.

2. 2개의 선물을 막대로 동기화할 수 없습니다.

선물 중 하나의 막대를 기초로 삼을 필요가 있습니다(가장 유동적인 SBRF 9.20보다 우수함)

3. 스프레드 그림을 완성하기 위해서는 닫기가 아니라 틱하고 메인 선물로 선택된 막대와 동기화해야 합니다.

4. 재계산을 빠르게 하려면 마지막으로 계산된 위치를 기억해야 합니다.

막대 시간 동기화로 스프레드 재계산을 위한 예제 코드

간단한 상인, 좋은 오후입니다! 귀하의 코드를 잘 이해하지 못했습니다.

1) CopyTicksRange 또는 CopyTicks 기능을 사용하셨습니까?

2) 이러한 기능에 대한 설명에서 2000틱 이상 복사할 수 없다고 표시되어 있으므로 그러한 지표는 더 먼 이력을 분석할 수 없습니까?

 
Dmi3 :

당신은 이미 문제의 본질에 대해 모든 것을 썼습니다. 거래 가격에 스프레드를 구축하는 것은 불가능합니다(종가에서는 더욱 그렇습니다!). 느린 구간에서 거래가 오랫동안 없을 수 있고 거래가 성사되더라도 빠른 다리의 거래 가격과 동기화합니다. 저것들. 그러한 정보의 가치는 0입니다. 주문서에는 항상(또는 거의 항상) 현재 매수호가와 매도호가가 있으며 분석해야 합니다.

여러분, 예, 나는 그것이 주문에 대해 더 정확하다고 주장하지 않습니다 (단시간에 세 가지 스프레드를 보여주는 지표가 있었을 때 마지막, 매수-매도 및 매도-매도, 그 다음 대부분의 경우 마지막은 마지막 두 개, 이는 액체 도구에 대한 스프레드가 일반적으로 적절함을 의미합니다).

그런 다음 가능한 한 리소스를 적게 사용하고 가급적이면 깊은 기록을 사용하여 요청/입찰을 통해 동기화하는 방법을 알아보겠습니다.

예를 들어, 한 단순한 거래자가 흥미로운 옵션을 제안했습니다(위).