Experts: MarketPredictor - 페이지 2

 

팁 주셔서 감사합니다, 코드는 5 일 동안 진행 중이며 거래를 설정하지 않는 문제를 해결했으며 작은 업데이트 만하고 싶습니다 :)

 

새 반복을 만들어야 합니다.

    // 변동성에 따른 알파 조정(ATR)
    double atr = iATR(_Symbol, PERIOD_CURRENT, period); // ATR 계산
    if(atr > 0.0)
        alpha = atr * 0.1; // 변동성에 비례하는 알파 설정
    else
        alpha = inputAlpha; // ATR을 사용할 수 없는 경우 입력 값으로 폴백

이 코드는 ATR을 올바르게 계산하지 않습니다.

https://www.mql5.com/ko/docs/indicators/iatr

반환 값

지정된 기술 지표의 핸들을 반환합니다.


코드인 핸들을 반환하며 ATR 값을 반환하지 않습니다.

Documentation on MQL5: Technical Indicators / iATR
Documentation on MQL5: Technical Indicators / iATR
  • www.mql5.com
The function returns the handle of the Average True Range indicator. It has only one buffer. Parameters symbol [in] The symbol name of the security...
 
1. 버그 수정:
- FFT에서: 짝수 및 홀수 배열에 대한 재귀적 FFT 호출은 배열 크기가 2 차수가 아닌 경우 무한 재귀로 이어질 수 있습니다.
배열 크기가 2 차수인지 확인해야 합니다. 현재 코드에서는 이를 확인하지 않습니다.
- CalculateFractalComponentFFT: 함수에서는 FFT를 사용하지만 N이 2 차수인지 확인하지 않습니다.
또한 FFT 이후에는 첫 번째 N/2 요소만 사용하는데, 이는 정확하지만 FFT 코드에 결합 시 인덱싱에 오류가 있습니다.
2. 개선:
- ExecuteTrade 함수에서 포지션선택(_심볼)을 사용하여 오픈 포지션을 확인하는 것은 올바르지 않습니다(
이 함수는 심볼에 포지션이 있으면 참을 반환하지만 반드시 현재 열려 있는 것은 아니기 때문에).
모든 포지션에 대해 루프를 사용하여 매직넘버와 심볼을 확인하는 것이 좋습니다.
- 또한 ExecuteTrade에서는 이미 개설된 포지션이 있는지 확인하지 않으므로 여러 포지션을 개설할 수 있습니다.
오픈을 하나의 포지션으로 제한해야 합니다(또는 매직넘버를 사용하여 포지션을 식별).
- OptimiseParameters: 함수에서 이동평균 계산은 내장된 iMA 함수로 대체할 수 있습니다.
- SimulatePrice 함수에서: 몬테카를로에는 MathRand()를 사용하는 것이 최선이 아닐 수 있으므로 정규 분포를 사용하는 것이 좋습니다.