최적화 범위

 

안녕하세요 여러분!

Expert Advisors를 최적화 하는 데 사용되는 데이터 범위에 대해 질문하고 싶습니다. 저것들. 선택할 수 있는 기간을 지정합니다. 예를 들어, H1의 경우 1개월, 3, 1년 동안 데이터에 대한 Expert Advisor를 최적화하는 것으로 충분합니까? 다양한 기간에 대한 이러한 값과 선택에 대한 최소한의 간단한 정당성을 보고 싶습니다. 미리 감사드립니다

 
이것은 꽤 자주 나오는 질문입니다. 일반적으로 최적화는 본질적으로 논쟁의 여지가 있는 현상입니다. 이는 반대자와 지지자가 모두 있습니다. 이 문제는 순전히 개별적이며 주로 거래 시스템의 기능과 시장의 행동으로 인해 발생합니다. 또한 최적화되는 매개변수의 본질에 따라 다릅니다.
 
ITeXPert >> :


Expert Advisors를 최적화하는 데 사용되는 데이터 범위에 대해 질문하고 싶습니다. 저것들. 선택할 수 있는 기간을 지정합니다. 예를 들어, H1의 경우 1개월, 3, 1년 동안 데이터에 대한 Expert Advisor를 최적화하는 것으로 충분합니까? 다양한 기간에 대한 이러한 값과 선택에 대한 최소한의 간단한 정당성을 보고 싶습니다.

테스트 및 최적화에 대한 훌륭한 책
 

명확한 기준이 없으며 모든 사람이이 문제에 대해 자신의 의견을 가지고 있습니다. 나는 내 의견을 표현하려고 노력할 것이다.

전체 역사적 기간에 걸친 최적화는 순수한 자기기만입니다. 따라서 최적화 간격은 테스트 기간보다 2배 이상 짧아야 합니다. 그러나 테스트 기간의 적은 부분을 최적화에 사용할수록 좋습니다. 최적화 섹션에서 매개변수를 선택한 후 테스트 기간으로 선택한 전체 간격으로 테스트를 실행합니다. 샘플이 100개 이상의 트랜잭션이면 얻은 결과를 "믿기" 시작할 수 있습니다. 그러나 이것조차도 많은 사람들에게 충분하지 않습니다. 트랜잭션 수가 많을수록 시스템이 더 정확하게 표시됩니다. 예를 들어, 나는 최소 200개의 트랜잭션을 샘플링할 때 "믿기 시작"합니다. 1000건의 거래가 최선의 선택이지만 완벽함에는 한계가 없다...

 

Ezhev와 Shumsky는 이 질문을 아주 잘 분석했습니다. 그들이 한 일을 요약하면 다음과 같습니다.

학습 이론의 임무는 학습 오류를 최소화하는 것이 아니라 모든 가능한 미래 예제에 대해 정의된 일반화 오류를 최소화하는 것입니다. 이것이 최적화된 TS가 최고의 예측 능력을 갖게 되는 방법입니다. 그리고 여기서 어려움은 실제로 관찰할 수 있는 것은 정확하고 유일한 학습 오류라는 것입니다. 일반화 오류는 특정 고려 사항을 기반으로 만 평가할 수 있습니다. 새로운 데이터에 대한 테스터의 예측 오류는 모델 자체에 대한 설명과 함께 모델을 사용하는 데이터 설명의 전체 길이에 의해 결정됩니다.

근사치 오류

일반적으로 TS에서 내린 결정의 수는 조정된 매개변수의 수보다 훨씬 적기 때문에 이 경우 평균 근사 오차는 다음과 같이 피팅 매개변수 w의 총 수로 표현됩니다. Eapprox= d/w, 여기서 d는 TS가 분석하는 입력 매개변수의 수입니다. 대부분의 경우 d=w가 충족됩니다(모든 피팅 매개변수는 TS 입력에 집중됨).

학습 알고리즘의 주요 문제는 과적합 또는 히스토리 피팅의 문제로 알려져 있습니다. 이 문제의 본질은 특정 예를 통해 가장 잘 설명됩니다. 우리가 재생산하고자 하는 일부 기능에 의해 훈련 예제가 생성되도록 하십시오. 학습 이론에서 이러한 기능을 교사 라고 합니다 . 제한된 수의 훈련 예제를 사용하여 학습 오류 가 0인 테스트 통과를 구성하는 것이 항상 가능합니다. 훈련 예제 세트에 정의된 오류입니다. 이렇게 하려면 예제의 수보다 더 많은 피팅 매개변수가 있는 TS를 가져와야 합니다. 실제로 각 예를 재현하기 위해 P가 있습니다. W에 대한 방정식 알려지지 않은. 그리고 미지수의 수가 방정식의 수보다 적으면 그러한 시스템은 과소 결정 되고 무한히 많은 솔루션을 허용합니다. 이것이 주요 문제입니다. 유일한 올바른 솔루션인 교사 기능을 선택하기에 충분한 정보가 없습니다. 결과적으로 무작위로 선택된 함수는 훈련 샘플에 없는 새로운 예제에 대해 좋지 않은 예측을 제공하지만 테스터는 오류 없이 기록의 마지막 예제를 재현했습니다. 알려진 예를 일반화 하는 대신 암기 했습니다. 이 효과를 과적합 이라고 합니다.

모델의 복잡성과 관련된 오류입니다.

모델에 대한 설명은 주로 튜닝 매개변수 값의 전송으로 축소됩니다. 주어진 정밀도에 대해 이러한 설명에는 W 비트 정도가 필요합니다. 따라서 모델의 복잡성과 관련된 예제별 특정 오류는 Ecomplex=W/P 와 같이 추정할 수 있습니다 . 우리가 볼 수 있듯이, 예제의 수(훈련 이력의 길이)가 증가함에 따라 단조롭게 감소합니다.

실제로 고유한 정의를 위해 P에 대한 피팅 매개변수 주어진 예는 시스템이 R 방정식이 재정의 되었습니다. 매개변수 W의 수 더 많은 방정식이있었습니다. 과잉 결정의 정도가 클수록 학습 결과는 훈련 예제의 하위 집합의 특정 선택에 덜 의존합니다. 위에서 정의한 일반화 오류의 구성 요소는 예제의 수가 유한하기 때문에 솔루션의 변화 와 정확히 관련됩니다.

그래서 우리는 전략 테스터의 일반화 오류의 두 구성요소를 추정했습니다: E=Eapprox+ Ecomplex=d/W+W/P>SQRT(d/P). 이러한 구성 요소가 피팅 매개변수 W의 수에 따라 다르게 의존하는 것이 중요하며, 이는 전체 오류를 최소화하는 최적의 크기를 선택할 가능성을 의미합니다. 최소 오류(등호)는 전략 최적화와 관련된 기록 데이터의 최적 길이인 P=k*W^2/d=k*W로 달성되며, 여기서 k-상수는 대략 4입니다.

따라서 과거 데이터의 전략 테스터에서 최적화된 순방향 테스트의 TS에 대한 최소 예측 오류는 과거 데이터의 길이가 전략 테스터의 피팅 매개변수 수보다 4배 크면 충족됩니다.

테스터에서 5개의 매개변수(예: 틱 기간)를 최적화하면 테스터가 4 * 5 = 20개의 트랜잭션을 수행할 수 있는 최적의 기록 길이가 되어야 합니다. 이것은 1일에서 ...200일의 기록이 필요할 수 있으며 모두 채택된 전략에 따라 다릅니다. 이 숫자가 감소하면 이력에 맞는 테스터가 되고 증가하면 근사 품질이 저하되고 결과적으로 예측 정확도가 떨어집니다.

 
간단하게 유지하십시오 . 최적화 섹션의 길이를 선택하는 고려 사항에서 약간의 비밀을 밝힐 것입니다. 최적화는 무엇입니까???? 예, 이것은 조정일 뿐 그 이상은 아니므로 이러한 방식으로 조정을 수행합니다. H1의 작년 차트를 사용합니다(이것이 TS의 주요 기간인 경우). 그런 다음 2개의 굵은 영역을 할당합니다. 그 중 하나는 매수이고 다른 하나는 매도이며 이 섹션 각각에서 갈리무유에 맞는 대응을 합니다. 매수 및 매도 - 조정 가능한 값 세트 2개를 얻었고 앞으로 더 높은 기간에 일부 칠면조에 의해 필터링된 세트만 포함합니다. 이 예에서는 D1을 연간 150%로 적당히 필터링하지만 빵 한 덩어리! :-에 대한)

 
будьте проще, открою маленький секрет

이 세계를 경험하는 방법은 여러 가지가 있습니다.

누군가는 사랑을 통해 압니다. 명상 등을 통해 일부 나는 논리와 수학을 통해 관심의 양을 평가하는 방법을 주었다. 그래서 당신의 비밀은 전혀 비밀이 아니라 단지 하나의 면만 더...

PS 위에서 언급한 것은 매개변수 최적화의 한 가지 행위일 뿐입니다. 최적화된 Expert Advisor의 작업을 평가하려면 1포인트로는 충분하지 않고 통계를 수집해야 하며 통계적으로 유의미한 결과는 각 패스에서 재최적화와 함께 독립적인 데이터에 대한 수백 번의 실행으로 시작됩니다...

따라서 테스터에서 적절한 최적화를 위한 방법은 간단하지 않습니다.

 

자세한 설명을 주신 Neutron, 특히 Neutron 에 감사드립니다. 최근에 포럼에서 매우 흥미로운 아이디어를 찾았습니다. 지금은 그것을 코드로 번역하고 있습니다. 병렬로, 나는 그것을 데모에서 테스트했고 결과는 3일 만에 약 150%로 매우 좋지만 약간의 뉘앙스가 있습니다 ... 새로운 주제를 만들지 않기 위해 여기에 묻겠습니다.

진입점을 결정할 때 n점의 거리에서 같은 방향으로 이미 열린 주문이 있는지 알아내야 하는데, 다음 코드는 작동하지 않지만 왜 그런지 이해할 수 없습니다.

boolbuy=참;

for(int cnt=0;cnt<OrdersTotal();cnt++)
{
주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderOpenPrice()<=Bid && Bid-OrderOpenPrice()<50*Point) buy=false;
}
if (구매) OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"MyAdvisor",0,0,Blue);

결과적으로 내가 10개의 오픈 로트 수로 어드바이저를 런칭하면 (예를 들어) 한 포인트에서 모두 오픈하고, 나에게는 하나의 주문을 오픈하고 다음 주문은 현재 가격과 차이가 나는 경우에만 기존 오픈오더의 가격이 50포인트 이상인 경우

 

중성자 에게

이 두 가지 유형의 오류는 모든 TS에 적용됩니까 아니면 신경망에만 적용됩니까?

 
budimir 매개변수를 결정하기 위해 추세 영역을 선택합니까? 방향이 바뀌는 영역과 횡보하는 영역을 버리십니까?
 
khorosh >> :
budimir 매개변수를 결정하기 위해 추세 영역을 선택합니까? 방향이 바뀌는 영역과 횡보하는 영역을 버리십니까?

가장 뚱뚱한 추세 영역을 선택하고 또한 피팅 영역에서 20-30개의 거래만 얻습니다. 그렇지 않으면 피팅 영역의 샘플이 최소 100-1000개의 거래여야 합니다

수학적 확실성 - 이것이 말도 안되는 소리라면, 음, 당신이 미래에 직접 인접한 피팅 영역을 선택하고 시장의 한 단계를 식별했다고 가정해 봅시다. ??? - 시장은 고정되어 있지 않으며 미래 섹션에서 어디로 향할 것인지 = XZ!


to ITeXPert > 글쎄, 3일 만에 150%라는 순서로 웃지마, 내가 150% 정도 썼을 때, 이 % 뒤에 단어가 있었어

연간 , 그리고 1년에 내 차량에 150%가 있는 3일 길이의 이러한 섹션이 12개 이상 있을 것입니다! :에 대한)


사유: