거래기술에 관한 정보

How to correctly use CrossOver/CrossUnder(CrossOver/CrossUnder를 올바르게 사용하는 방법)

효성공인 2022. 2. 17. 09:58

How to correctly use CrossOver/CrossUnder

CrossOver/CrossUnder를 올바르게 사용하는 방법

 

Postby et1hugo 


I'm working on a simple crossover/crossunder study based on John Ehler's super smoother. It is sort of like a moving average but it is supposed to decrease the lag that you typically have with moving averages. Everything works fine except(제외하고는) the VariableSeries CrossOver/CrossUnder methods seems to bias the signal to only one side of the market so you get only long or short entries and no entries into the opposing side of the market, e.g. if the first trade was a short trade on the chart you'll only get short trades and not long trades.

저는 John Ehler의 슈퍼 스무더를 기반으로 한 간단한 크로스오버/크로스언더 연구를 하고 있습니다. 일종의 이동 평균과 비슷하지만 이동 평균에서 일반적으로 발생하는 지연을 줄여야 합니다. VariableSeries CrossOver/CrossUnder 방법이 신호를 시장의 한 쪽으로만 편향시키는 것처럼 보이는 것외에는 모든 것이 잘 작동하므로 길거나 짧은 항목만 가져오고 시장의 반대쪽에는 항목이 없습니다. 예를 들면 첫 번째 거래가 차트에서 짧은 거래였다면 긴 거래가 아닌 짧은 거래만 받게 됩니다
I've attached the code I'm using with the indicator and Test2 containing the signal code and the super smoother function. The indicator seems to work fine, it's based on the function so I think the function works fine. But the signal does not take the opposite side of the market when it exit's a position and is supposed to enter a position in the opposite side of the market.

표시기와 함께 사용하는 코드와 신호 코드와 매우 부드러운 기능이 포함된 Test2를 첨부했습니다. 인디케이터가 잘 되는 것 같고, 기능 기반이라 기능이 잘 되는 것 같아요. 그러나  신호는 나갈 때는 시장의 반대쪽을 택하는 것이 아니고 시장의 반대 방향에 있는 위치에 진입하게 되어 있습니다 

 

When you look at the Test2 signal you'll see the following:

Test2 신호를 보면 다음이 표시됩니다.


* I use a specific cross_over lookback of 5, I''ve used longer values such as 10 but it has no effect.

나는 5의 특정 cross_over lookback을 사용하고 10과 같은 더 긴 값을 사용했지만 효과가 없습니다.
* The entry code (calcBarEntry) uses two separate if-statements, I tried to chain them together into an if-else if-statement so that only one long or short order could be posted at a time but it has no effect.

입력 코드(calcBarEntry)는 두 개의 개별 if 문을 사용합니다. 한 번에 하나의 길거나 짧은 주문만 게시할 수 있도록 if-else if 문으로 함께 연결하려고 했지만 효과가 없었습니다.
* When I only get short trades on the chart I commented the short entry in the signal and then the long trades would fire off (발사하다 진행하다)without any issues so the CrossOver entry is working correctly but when it's used with the short exit CrossOver is returns FALSE in the entry code and no order is sent - see my remark after this list on debugging the crossover.

차트에서 짧은 거래 만하면 신호의 짧은 항목을 주석 처리 한 다음 긴 거래가 아무런 문제없이 시작되므로 CrossOver 항목이 올바르게 작동하지만 짧은 출구와 함께 사용되면 CrossOver가 입력 코드에 FALSE를 반환하고 주문이 전송되지 않습니다. 크로스 오버 디버깅에 대한이 목록 다음에 내 의견을 참조하십시오

* I tried splitting the signal into two separate signals for the long/short sides of the market like the MC standard delivered signals but this had no effect.

나는 MC 표준 전달 신호와 같이 시장의 장 / 단측에 대해 신호를 두 개의 개별 신호로 분리하려고했지만 효과가 없었습니다.
* Currently the SuperSmoother function is defined as a FunctionSimple subclass, I tried defining it as a FunctionSeries just to test it and used the function's CrossOver/CrossUnder methods instead of the VariableSeries but this also had no effect. I changed it back to FunctionSimple since I think this is correct.

현재 SuperSmoother 함수는 FunctionSimple 하위 클래스로 정의되어 있습니다.이 함수를 테스트하기 위해 FunctionSeries로 정의하고 VariableSeries 대신 함수의 CrossOver / CrossUnder 메서드를 사용했지만 효과가 없었습니다. 나는 이것이 맞다고 생각하기 때문에 그것을 다시 FunctionSimple로 바꾸었다.
* I changed the entry orders to be on the next bar and the exit orders on this bar to try check whether it has anything to do with the timing of the orders being generated but it had no effect.
나는 주문이 생성되는 타이밍과 관련이 있는지 확인하기 위해 다음 바에 있는 진입 주문과 이 바에 있는 출구 주문을 변경했지만 아무런 효과가 없었다.
I've also debugged the code in Visual Studio and when you look at the last 5 data entries after a crossover in the _Fast/_Slow VariableSeries instances you can actually see the crossover in the data, all that occurs is the exit signal from a short position in the calcBarExit, so the CrossOver method returns TRUE here, but the opposing long position is not entered because the CrossOver returns FALSE in the calcBarEntry which is incorrect based on the given data series and the look back of 5-bars (or even 10-bars). Anyway, I'm sure it's probably something simple that I'm missing somewhere but I'm basically staring myself blind against the code at this point.
또한 Visual Studio에서 코드를 디버깅했으며 _Fast /_Slow VariableSeries 인스턴스의 크로스 오버 후 마지막 5 개의 데이터 항목을 보면 실제로 데이터에서 크로스 오버를 볼 수 있습니다. 발생하는 모든 것은 calcBarExit의 짧은 위치에서 나오는 종료 신호이므로 CrossOver 메소드는 여기서 TRUE를 반환하지만 반대되는 긴 위치는 입력되지 않습니다. calcBarEntry에서 FALSE를 반환하는데, 이는 주어진 데이터 시리즈와 5-bar(또는 심지어 10-bar)의 룩백을 기반으로 잘못된 것이다. 어쨌든, 나는 그것이 아마도 내가 어딘가에서 놓치고 있는 단순한 것일 것이라고 확신하지만, 나는 기본적으로 이 시점에서 코드에 대해 맹목적으로 나 자신을 응시하고 있다.
Thank you in advance for any input.

어떤 입력에 대해 사전에 감사드립니다.