Да и дальше взаимодействия с Оптимизатором нет никакого. в кеше Оптимизатора по каждому проходу хранятся все стат. Бонусом идет возможность запуска любого прохода из обновленной таблицы стандартными средствами в два щелчка
Да и дальше взаимодействия с Оптимизатором нет никакого. в кеше Оптимизатора по каждому проходу хранятся все стат. Бонусом идет возможность запуска любого прохода из обновленной таблицы стандартными средствами в два щелчка
Да и дальше взаимодействия с Оптимизатором нет никакого. в кеше Оптимизатора по каждому проходу хранятся все стат. Бонусом идет возможность запуска любого прохода из обновленной таблицы стандартными средствами в два щелчка
프레임 작업에 대해읽어보세요.
다음은 이 코드입니다:
inNum=0;
{ // 해당 최적화 입력 파라미터 읽기
Print("GLOC = ",GLOC);
트레이딩, 자동매매 시스템, 트레이딩 전략 테스트에 대한 포럼입니다.
라이브러리: 테스터 캐시
fxsaber, 2019.11.11 04:45 오후.
바이트 배열로 된 옵트 파일을 받았습니다. 다음으로, 이를 캐시에 공급해야 합니다.
말씀하신 대로 수정했습니다:
문자열 Sohran,Contr;
MTTESTER::GetSettings(Sohran); // 로봇의 현재 초기 설정을 읽어서 Sohran에 임시 저장합니다.
prWrite = MTTESTER::SetSettings2(Odinar); // Odinar를 로봇 설정으로 설정합니다.
prRead = MTTESTER::GetSettings(Contr); // 방금 설정한 로봇 설정을 읽습니다.
Print("prWriteSettings = ",prWrite," prReadSettings = ",prRead);
Print("SettingBeg OdinarContr ",Kol," PoseY = ",PoseY," Iteration ",IterNumber,"\n",Contr);
Run(Contr[0]); // 선택한 Y 파라미터 값에 대한 최적화 실행
int GLOC = MTTESTER::GetLastOptCache(Bytess); // 옵 파일을 바이트 배열로 가져옵니다.
TESTERCACHE<ExpTradeSummary> 캐시;
bool CL = Cache.Load(Bytess); // Bytess 바이트 배열을 Cache에 공급합니다.
ProfitNow = Cache[GetMaxProfitPos(Cache)].profit; // 최대 이익
int NomProchodaMaxProfit = Cache[GetMaxProfitPos(Cache)].Pass; // 최대 수익이 있는 패스 수
int IndexMaxProfit = GetMaxProfitPos(Cache); // 파라미터 값이 있는 배열의 인덱스 https://www.mql5.com/ru/forum/318998/page2#comment_13846951
Cache.GetInputs(IndexMaxProfit,Paramas);
ParamMax = Paramas[0,1].double_value; // 최대 수익이 달성된 파라미터 값입니다.
Alert("CL=",CL," GLOC = ",GLOC," GLOC," ProfitNow =",ProfitNow," ParamMax =",ParamMax," Odinar ",Kol," PoseY = ",PoseY," PosEq = ",PosEq," TypPar = ",TypPar," Iteration ",IterNumber");
반환합니다;
결과는 여전히 잘못되었습니다.
어떤 이유에서인지 이전 실행의 ProfitNow 및 ParamMax 데이터가 캐시에서 읽혀집니다.
안부, 알렉산더
어떤 이유로 이전 실행의 ProfitNow 및 ParamMax 데이터가 캐시에서 읽혀집니다.
최적화 후 이 스크립트에 올바른 값이 표시되나요?
그렇다면 최적화 직후에 옵트 파일이 준비되지 않은 것이 문제일 가능성이 높습니다. 실행 후 절전 모드로 전환해 볼 수 있습니다. 또는 실행이 제대로 작동하지 않습니다.
이 스크립트가 최적화 후 올바른 값을 표시하나요?
그렇다면 최적화 직후에 옵트 파일이 준비되지 않았을 가능성이 높습니다. 실행 후에 절전 모드로 전환해 볼 수 있습니다. 또는 실행이 제대로 작동하지 않습니다.
고마워요! 내일이 모든 것을 확인하겠습니다.
하지만 이제 새 매개 변수로 최적화를 설정하면 모든 것이 올바르게 작동한다는 것을 알았습니다.
그래서 요점은 테스터가 이전에 이미 작동했던 최적화를 다시 설정하면 실제로 다시 처리하지 않고 메모리에서 이전 결과를 검색한다는 것 같습니다.
테스터의 이러한 메모리를 미리 파괴하는 방법을 개발할 수는 없을까요?
따라서 테스터가 이전에 실행한 최적화를 다시 설정하면 실제로 다시 처리하지 않고 단순히 메모리에서 과거 결과를 검색한다는 것이 요점인 것 같습니다.
가설이 틀렸습니다. 문제는 여러분이 작성한 코드에 있습니다.
가설이 잘못되었습니다. 문제는 여러분이 작성한 코드입니다.
안녕하세요!
"문제는 내가 작성한 코드에 있다"는 말에 동의합니다. 오류는 그 안에 있으며 아직 수정 방법을 모르겠습니다.
그러나 실험적으로 실행을 실행하기 전에 모든 옵트 파일을 수동으로 제거하면 Run.
를 실행하기 전에 "C:\사용자\ASUSAppData\로밍\메타쿼츠\터미널\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" 폴더에서 모든 옵 파일을 수동으로 제거했습니다,
를 지우면 내 코드가 올바르게 작동하고 선택한 매개변수에 대해 최적화를 수행합니다.
이 폴더를 정리하지 않으면 테스터는 (변경되지 않은 동일한 데이터로) 반복 최적화를 수행하지 않고, 이 폴더에서 이미 존재하는
이 폴더에서 이미 존재하는 옵트 파일을 읽습니다. 이는 동일한 최적화를 수동으로 반복적으로 실행할 때 명확하게 확인할 수 있습니다.
실제 최적화는 처음 한 번만 수행된 다음 폴더에서 옵트 파일만 읽는 것을 볼 수 있습니다.
이렇게 반복적으로 읽으면 캐시의 내용이 업데이트되지 않는 것 같고, 이것이 제 코드에서 오류를 일으키는 원인인 것 같습니다.
해당 폴더를 지우면 오류를 해결하는 데 도움이 될 수 있습니다. 물론 이것은 나쁜 해결책이며 캐시에서 올바른 데이터를 복원 할 수 있다면 더 우아 할 것입니다.
하지만 어떻게 해야 할지 모르겠습니다. 지금은 이전 실제 최적화의 데이터가 캐시에 남아 있습니다(폴더에서 다시 읽은 데이터와 일치하지 않음).
안타깝게도 이 폴더는 MQL5에서 금지되어 있기 때문에 FolderClean을 사용하여 스크립트에서 정리할 수 없습니다.
이 폴더는 "샌드박스"에서 벗어나 있으며 전략 테스터에 의해서만 채워집니다.
C++를 사용하여 외부 애드온을 만들고 스크립트에서 실행해야 할 수도 있습니다.
안부, 알렉산더