75000 옵션 - 4GB RAM과 4GB 디스크 캐시로는 부족하다??? - 페이지 5

 
필요할 때까지 시각화가 없습니다.
그러나 다음 버전에서는 아마도 그렇게 할 것입니다.

내가 할 수 있는 걸 보여줄게
전문가는 100% 이전될 수 없으며,
여기서 요점은 전문가가 아니기 때문에 대략적인 작업을 수행하겠습니다.
그리고 옵티마이저의 가능성?
 
Mak :
필요할 때까지 시각화가 없습니다.
그러나 우리는 아마도 다음 버전에서 그것을 할 것입니다.

내가 할 수 있는 걸 보여줄게.
전문가는 100% 이전될 수 없으며,
여기서 요점은 전문가가 아니기 때문에 대략적인 작업을 수행하겠습니다.
그리고 옵티마이저의 가능성?
절대 그렇지 않습니다. 본질은 디스플레이와 사용 용이성의 전체 복합물에 있으며 많은 자원 지출을 수반합니다.

프로그래머가 외부 옵티마이저와의 연결을 포함하기 위해 모든 코드를 샅샅이 살펴보고 거기에서 무언가를 계산하는 옵티마이저를 실행하도록 하는 것은 한 가지입니다. 그리고 그것은 돈을 위한 것입니다. 그리고 모든 Expert Advisor에 대해 일반 확인란 "유전적 최적화"를 설정하고, 정상 한계(수백억이 아님)를 선택하고, 결과를 얻고, 최적화 프로그램이 실행되는 동안 추가 프로그램 없이 바로 결과를 보는 것은 또 다른 문제입니다. 그리고 무료입니다.

우리는 지속적으로 시스템을 가능한 한 간단하고 편리하며 매끄럽게 만듭니다. 누군가 "내 테스터가 10-100배 더 빠르다"고 주장하지만 그것을 증명하지는 않습니다. 누군가는 "구형 진공 속의 말"과 관련된 가상의 문제에 대해 이야기합니다. 그리고 우리는 MetaTrader를 사용하는 수십만 명의 트레이더가 대량으로 작동하는 작업 시스템을 만듭니다. 그리고 우리는 시스템 구축에 대한 우리의 이념 때문에 다른 경쟁자들과도 큰 격차를 보이고 있습니다.

ps: 그런데 유전자 최적화 도구의 배포 키트가 MetaTrader의 배포 키트보다 큰 이유는 무엇입니까? 어떻게 부적절하게 작성합니까?
 
글쎄, 차를 몰았다.

Omega에 통화가 없습니다. 배포판에 있는 통화로 실행했습니다.
- IBM(D1) 31년(> 11,000바).

Athlon XP 1500+에서 1000번 실행하는 데 ~10분이 걸렸습니다.

주식의 변동성이 더 커짐에 따라 매개변수 범위 확장

이익을 취하다 = (10, 10000, 1)
TrailingStop = (10, 10000, 1)
랏 = (1, 1000, 1) - 이 수의 주식이 있습니다.
MACDOpenLevel = (1, 100, 1)
MACDCloseLevel = (1, 100, 1)
MATrendPeriod = (2, 100, 1)

총 매개변수 공간은 ~ 10^14 상태입니다.

다음은 EasyLanguage 및 ScreenShot에 대한 코드입니다.
나는 또한 Zip 파일에 Omega의 신호 코드와 보고서를 첨부했습니다.

( 코드 붙여넣기 가 작동하지 않음)
===================================================== ========================
입력: Gen(1);
Vars: TakeProfit(50),
트레일링스톱(30),
많은(0.1),
MACDOpenLevel(3),
MACDCloseLevel(2),
MATrendPeriod(26);

변수: R(0), K(0);
CurrentBar = 1이면 시작
R = TS.GO.Start("MACD");
Gen = 1이면 시작
R = TS.GO.Mode(0);
R = TS.GO.팝풀(100);
R = TS.GO.Var("Gen");
R = TS.GO.Var("거래");

R = TS.GO.방법(1);
R = TS.GO.Criterion("순수익",1);
R = TS.GO.Criterion("MaxDD",1);
R = TS.GO.Criterion("PF",1);

K = TS.GO.Chrom("중지");
R = TS.GO.Gen("이익 실현", K, 10, 10000, 1);
R = TS.GO.Gen("TralingStop", K, 10, 10000, 1);

K = TS.GO.Chrom("많은");
R = TS.GO.Gen("많은", K, 1, 1000, 1);

K = TS.GO.Chrom("MACD");
R = TS.GO.Gen("MACDOpenLevel", K, 1, 100, 1);
R = TS.GO.Gen("MACDCCloseLevel", K, 1, 100, 1);
R = TS.GO.Gen("MATtrendPeriod", K, 2, 100, 1);
끝;

R = TS.GO.Next(Gen);
R = TS.GO.Set("Gen",Gen);
R = TS.GO.ShowViewer;

이익실현 = TS.GO.Get("이익실현", 0);
TralingStop = TS.GO.Get("TralingStop", 0);
제비 = TS.GO. Get("많은", 0);
MACDOpenLevel = TS.GO.Get("MACDOpenLevel", 0);
MACCDCloseLevel = TS.GO.Get("MACDCloseLevel", 0);
MATrendPeriod = TS.GO.Get("MATrendPeriod",0);
끝;

변수: MacdCurrent(0), MacdPrevious(0), SignalCurrent(0),
SignalPrevious(0), MaCurrent(0), MaPrevious(0);

MacdCurrent = MACD(종가,12,26);
MacdPrevious = MACD(종가,12,26)[1];
SignalCurrent = XAverage(MacdCurrent,9);
SignalPrevious = XAverage(MacdCurrent,9)[1];
MaCurrent = XAverage(닫기, MAtrendPeriod);
MaPrevious = XAverage(닫기, MAtrendPeriod)[1];

변수: StopLoss(0);
MarketPosition = 0이면 시작
MacdCurrent < 0인 경우
및 MacdCurrent > SignalCurrent
및 MacdPrevious < 신호이전
및 AbsValue(MacdCurrent) > (MACDOpenLevelPoint)
및 MaCurrent > MaPrevious
그런 다음 시작
Buy Lot은 마감 시 이 바를 공유합니다.
끝;

MacdCurrent > 0인 경우
및 MacdCurrent < SignalCurrent
및 MacdPrevious > SignalPrevious
및 AbsValue(MacdCurrent) > (MACDOpenLevelPoint)
및 MaCurrent < MaPrevious
그런 다음 시작
Sell Lot은 마감 시 이 바를 공유합니다.
끝;
끝;

MarketPosition > 0이면 시작
MacdCurrent > 0인 경우
및 MacdCurrent < SignalCurrent
및 MacdPrevious > SignalPrevious
및 AbsValue(MacdCurrent) > (MACDCloseLevelPoint)
그런 다음 시작
ExitLong("CloseLong") 닫을 때 이 막대;
끝;

StopLoss = 0이면 StopLoss = EntryPrice - TralingStop 포인트;
StopLoss = MaxList(StopLoss,High - TralingStop 포인트);

ExitLong("TakeLong") EntryPrice + TakeProfit 포인트 제한의 다음 막대;
StopLoss Stop에서 ExitLong("StopLong") 다음 막대;
끝;

MarketPosition < 0이면 시작
MacdCurrent < 0인 경우
및 MacdCurrent > SignalCurrent
및 MacdPrevious < 신호이전
및 AbsValue(MacdCurrent) > (MACDCloseLevelPoint)
그런 다음 시작
ExitShort("CloseShort") 닫을 때 이 막대;
끝;

StopLoss = 0이면 StopLoss = EntryPrice + TralingStop 포인트;
StopLoss = MinList(StopLoss,Low + TralingStopPoints);

ExitLong("TakeShort") EntryPrice의 다음 막대 - TakeProfit 포인트 제한;
ExitLong("StopShort") StopLoss Stop의 다음 막대;
끝;


IF LastBarOnChart 다음 시작
R = TS.GO.Set("거래",TotalTrades);
R = TS.GO.Set("NetProfit",NetProfit);
R = TS.GO.Set("MaxDD", MaxIDDrawDown);
R = TS.GO.Set("PF",총이익/(0.001-총손실));
R = TS.GO.피트니스(0);
끝;
===================================================== ========================


파일:
macd_test.zip  32 kb
 
Renat :
:
필요할 때까지 시각화가 없습니다.
그러나 우리는 아마도 다음 버전에서 그것을 할 것입니다.

내가 할 수 있는 걸 보여줄게
전문가는 100% 이전될 수 없으며,
여기서 요점은 전문가가 아니기 때문에 대략적인 작업을 수행하겠습니다.
그리고 옵티마이저의 가능성?
절대 그렇지 않습니다. 본질은 디스플레이와 사용 용이성의 전체 복합물에 있으며 많은 자원 지출을 수반합니다.

프로그래머가 외부 옵티마이저와의 연결을 포함하기 위해 모든 코드를 샅샅이 살펴보고 거기에서 무언가를 계산하는 옵티마이저를 실행하도록 하는 것은 한 가지입니다. 그리고 그것은 돈을 위한 것입니다. 그리고 모든 Expert Advisor에 대해 일반 확인란 "유전적 최적화"를 설정하고, 정상 한계(수백억이 아님)를 선택하고, 결과를 얻고, 최적화 프로그램이 실행되는 동안 추가 프로그램 없이 바로 결과를 보는 것은 또 다른 문제입니다. 그리고 무료입니다.

우리는 지속적으로 시스템을 가능한 한 간단하고 편리하며 매끄럽게 만듭니다. 누군가는 "내 테스터가 10-100배 더 빠르다"고 주장하지만 그것을 증명하지는 않습니다. 누군가 "구형 진공 속의 말"과 관련된 가상의 문제에 대해 이야기합니다. 그리고 우리는 MetaTrader를 사용하는 수십만 명의 트레이더가 대량으로 작동하는 작업 시스템을 만듭니다. 그리고 우리는 시스템 구축이라는 우리의 이념 때문에 어떤 경쟁자들과도 큰 격차를 보이고 있습니다.

ps: 그런데 유전자 최적화 도구의 배포 키트가 MetaTrader의 배포 키트보다 큰 이유는 무엇입니까? 어떻게 부적절하게 작성합니까?

Renat, 당신 자신이 이것을 보여달라고 요구했습니다.
그게 뭐냐고 몇번이고 물어봤더니...
제가 예전에 글을 올렸을 때 질문을 했다면,
대화는 다르게 진행되었을 것이고 나는 Omega를 위해 이 MACD를 다시 작성할 필요가 없었을 것입니다.
나는 "나는 낙타가 아니다"라는 것을 증명하기 위해 다른 것들을 제쳐두어야 했다.

사실로.
당신은 당신이 얼마나 좋은 일을했는지 무료로 말합니다 ...
내가 이것에 대해 당신과 논쟁 했습니까 (나는 당신과 아무 것도 논쟁하지 않았습니다)?

나는 당신의 최적화 프로그램이 너무 많은 메모리를 소비한다는 사실에 주의를 기울였습니다.
나는 이것이 아직 GO가 없었을 때 옵티마이저의 이전 버전의 유산이라고 생각합니다.
이것은 수정하기 쉽고 최적화 프로그램을 더욱 향상시킬 것입니다.

속도를 늦추십시오. 나로부터 비판은 받지 않습니다.
나는 단지 당신을 돕고 싶었습니다.
 
세부 사항으로 자신의 입장을 변호하는 것은 완전히 다른 문제입니다. 그것이 정말로 그렇게 넓은 공간에 1000번의 반복만 있는 이유입니까? 매우 거칠어지고 있습니다. 저는 이 Expert Advisor를 MT4에서 15억 가치의 영역에 걸쳐 실행했고 18000 EURUSD H1 막대의 기록에 대해 4분 만에 4400개의 깨끗한 검색을 받았습니다.

물론 작업은 진공 상태의 구형 말의 영역에서 수행되며 MT4에서는 실제로 가능한 값의 범위가 매우 크기 때문에 특정 양의 메모리를 잘못 예약하려고 시도하고 있습니다. 검색 메커니즘). 이 순간을 수정합시다.

당신의 인내에 감사드립니다 - 당신은 우리가 테스터에 대해 더 깊이 파고들도록 했습니다.
 
Renat писал (а):

.... 그래서 이렇게 넓은 공간에 1000번의 반복만 있는 걸까요? 매우 거칠어지고 있습니다. 저는 이 Expert Advisor를 MT4에서 15억 가치의 영역에 걸쳐 실행했고 18000 EURUSD H1 막대의 기록에 대해 4분 만에 4400개의 깨끗한 검색을 받았습니다. ....
그리고 유전학에서 검색 속도는 매개변수 공간의 크기와 무관합니다.
목적 함수(적합성)의 품질에 따라 다릅니다.

또한 우리에게 알려진 다른 알고리즘보다 훨씬 빠른 원래 알고리즘을 사용합니다.
1000회 실행은 이미 약간 과잉입니다. 저는 일반적으로 솔루션을 평가하기 위해 100-200회 실행(여러 매개변수에 대해)을 사용합니다.
 
Renat писал (а):
예, 실제로 이 Expert Advisor는 테스트에서 과도한 양의 메모리를 소비하고 충돌합니다. 우리가 알아낼 것입니다.
제공된 코드에 감사드립니다.


레나트, 아직 소식이 없습니까?
 

제정신, 뉴스가있다. 메모리 누수를 발견했습니다. 컴파일러가 올바른 위치에 문자열 해제 명령을 삽입하지 않았습니다.

 
stringo писал (а):

제정신, 뉴스가있다. 메모리 누수를 발견했습니다. 컴파일러가 올바른 위치에 문자열 해제 명령을 삽입하지 않았습니다.


알겠습니다. 새 빌드를 기다리고 있습니다.
 
sane :
스트링고 :

제정신, 뉴스가있다. 메모리 누수를 발견했습니다. 컴파일러가 올바른 위치에 문자열 해제 명령을 삽입하지 않았습니다.


알겠습니다. 새 빌드를 기다리고 있습니다.

EA의 새 빌드 198에서 예제를 실행했습니다.







더 이상 과도한 메모리 소비가 없습니다. 유전자 최적화가 활성화된 상태에서 21600회 중 1088회 반복이 수행되었으며 계산에는 8분 31초가 소요되었습니다.

EA 자체에 대해 - 심각한 오류로 인해 절대 사용해서는 안 됩니다.
  • 잘못된 중지 수준 및 모든 로그가 이에 대한 메시지로 채워집니다.
  • SetOrder 기능의 경우 브로커로부터 전문가로부터 거래에 대한 심각한 금지를 받을 수 있습니다.

    이 기능에는 오래된 가격으로 거래하려는 5번의 시도가 있습니다. Expert Advisor의 작성자는 자신이 무엇을 하는지 전혀 이해하지 못합니다(그는 여전히 오래된 가격을 미끄러지지만 RefreshRates 를 사용하려고 시도합니다). 그리고 의미 있는 오류 처리가 전혀 없습니다.