寻找神圣的 "圣杯"...。 - 页 9 1234567891011 新评论 TheCore 2009.03.05 23:48 #81 Hoper23 >> : 问题是,任务的目标很明确,但在MQL中实现的可能性似乎并不明确,因为我还不熟悉测试器-优化器的内置数组功能。我正试图重新阅读MQL手册,但我还没有找到这个块。而thecore自制的优化器与其说是不可靠,不如说是不太容易理解。这些变量的组成相当奇怪,没有注释,而且与上述链接中提到的工作版本有根本的不同。如果不难,亲爱的核心,解释你的观点的优化器,这样就可以适合所有19个参数和自动替换的结果。 从一个程序员口中听到这个消息,我觉得很奇怪,但我会试着把它分解(不是拼出来)。 1.假设你有一个有N个输入参数的函数 Function(n1,n2,...,n19)。 2.参数 n1从n1Min到n1Max变化,步长n1Step .... n19从n19Min到n19Max的变化,n19Step 你需要这样做。 - 遍历所有(对于线性方法)传入的参数或不是所有(对于快速收敛方法)传入的参数。 有很多快速收敛的方法,其中之一就是遗传算法。 - 每当你输入一批新的参数,你就会在输出端得到函数的结果。 - 你需要写一个块来分析这些结果,并决定结果是否是 好的。 我知道你在分析单元上遇到了麻烦。因为如果你不知道如何写一个函数或如何 或如何查看输入参数,这不适合我,这是为编程课或喜欢拼写的人准备的。 编程的基础知识。 分析单位做什么。 1.它选择你要分析的最古老的BAR_Y条,并将当前的Y时间数据滑入你的 功能。也就是说,你的函数认为BAR_Y是TimeCurrent。 2.现在,在历史深度中,你的Function(n1,n2,...,n19)如果是在第0条,会取多少条。 并获得一些结果。 例如,你的策略是沿着iMA3,iMA2,iMA1寻找一个极值。然后我们有iMA_Y+2,iMA_Y+1,iMA_Y 如果它是一个极值点,我们就停止,如果不是,我们就做Y++。 好的。我们在位置t找到极值点,即iMAt+2,iMAt+1,iMAt 现在我们需要计算TP或SL是否会被触发 也就是说,从t点开始,我们往下走,分析从Open[t]到High[t]再到Low[t]的距离。 然后从Open[t]到High[t-1]再到Low[t-1],如果我们没有达到TP或SL,我们再进一步--采取T-2,如此反复,直到成功为止。 TP或SL或两者都是。 我们已经找到了Function(n1,n2,...,n19)的FIRST条件。 让我们保存这个结果。 接下来我们做t--,继续分析,直到第0条。 4.我们转移Y--并重复这个过程。 因此,我们找到了截至当前时刻的函数Function(n1,n2,...,n19)的所有出现次数。 5.分析当前的时刻,看看过去是否有类似的情况,以及它们是如何结束的。 6.保存结果。 7.为Function(n1,n2,...,n19)取下一组参数n1,,n19并检查它 8.重复进行,直到我们的参数用完。 9.我们选择最佳的参数集或几个参数集,并根据它们的建议,设置买入、卖出或购买。 什么都不做。 这就是全部。 我希望它是困难的,因为它确实是困难的。 TheCore 2009.03.05 23:54 #82 Hoper23 >> : 问题是,任务的目的很明确,但用MQL语言实现的可能性似乎不清楚,因为我还不熟悉测试器-优化器的内置数组的功能。我正试图重新阅读MQL手册,但我还没有找到这个块。而thecore自制的优化器与其说是不可靠,不如说是不太容易理解。那里的变量写得相当怪异,没有注释,而且与上述链接中提到的工作版本有根本的不同。如果不难的话,亲爱的thecore,请解释一下你对优化器的看法,这样我就可以把所有的19个参数和自动完成的结果塞进去。 顺便说一下,不要从蛮力块开始--它比解析器更容易写。 如果你觉得我说的这些都太复杂,可以找找xeon的自动优化器。 它使用MetaTrader优化器。不要寻找内置的自动优化功能。没有了。 TheCore 2009.03.05 23:58 #83 Figar0 >> : 这里是 klot的指标,指标中嵌入了GA优化器。 我认为Hoper23不会对其进行基因分析,无论这个链接是否被破坏。 更为重要的是,它并没有被打破。 [删除] 2009.03.06 00:32 #84 这是我得到的东西 void Optimization() { int StartBar = iBarShift(Symbol(), 0, TimeCurrent()-60*( EndDate+ OptimDuration)); int EndBar = iBarShift(Symbol(), 0, TimeCurrent()-60* EndDate); int Count = 0; double CurRF = -999999; ArrayInitialize( EqualProfit, 0); ArrayInitialize( TransCount, 0); ArrayInitialize( MaxDrowDown, 0); for( S = Sstart; S <= Send; S += Sstep) for( O = Ostart; O <= Oend; O += Ostep) for( I = Istart; I <= Iend; I += Istep) for( G = Gstart; G <= Gend; G += Gstep) for( M = Mstart; M <= Mend; M += Mstep) for( CC = CCstart; CC <= CCend; CC += CCstep) for( CCI = CCIstart; CCI <= CCIend; CCI += CCIstep) for( F_EMA = F_EMAstart; F_EMA <= F_EMAend; F_EMA += F_EMAstep) for( S_EMA = S_EMAstart; S_EMA <= S_EMAend; S_EMA += S_EMAstep) for( SMA = SMAstart; SMA <= SMAend; SMA += SMAstep) for( stK = stKstart; stK <= stKend; stK += stKstep) for( stP = stPstart; stP <= stPend; stP += stPstep) for( stD = stDstart; stD <= stDend; stD += stDstep) for( W = Wstart; W <= Wend; W += Wstep) for( H = Hstart; H <= Hend; H += Hstep) for( C = Cstart; C <= Cend; C += Cstep) for( Skill = Skillstart; Skill <= Skillend; Skill += Skillstep) for( SkillMAX = SkillMAXstart; SkillMAX <= SkillMAXend; SkillMAX += SkillMAXstep) for( shirina = shirinastart; shirina <= shirinaend; shirina += shirinastep) { int CurTrans =0; double CurOpenPrice = 0; int EqualMax = 0; int EqualMin = 0; for(int i = StartBar; i >= EndBar; i--) { EqualMin = MathMin( EqualProfit[ Count], EqualMin); if( EqualProfit[ Count] > EqualMax) { MaxDrowDown[ Count] = MathMax( MaxDrowDown[ Count], EqualMax- EqualMin); EqualMax = EqualProfit[ Count]; EqualMin = EqualMax; } MaxDrowDown[ Count] = MathMax( MaxDrowDown[ Count], EqualMax- EqualMin); if( EqualProfit[ Count] != 0) if( CurRF < MaxDrowDown[ Count]/ EqualProfit[ Count]) { CurRF = MaxDrowDown[ Count]/ EqualProfit[ Count]; int Num = Count; int BestS = S; int BestO = O; int BestI = I; int BestG = G; int BestM = M; int BestCC = CC; int BestCCI = CCI; int BestF_EMA = F_EMA; int BestS_EMA = S_EMA; int BestSMA = SMA; int BeststK = stK; int BeststP = stP; int BeststD = stD; int BestW = W; int BestH = H; int BestC = C; int BestSkill = Skill; int BestSkillMAX = SkillMAX; int Bestshirina = shirina; } Count++; } // Цикл переменных Alert("Оптимизация завершена. Прибыль max ", EqualProfit[ Num]," пунктов. Сделок ", TransCount[ Num], ". Просадка ", MaxDrowDown[ Num]); Alert("Параметры: S = ", BestS, ", O = ", BestO, ", I = ", BestI, ", G = ", BestG, ", M = ", BestM, ", CC = ", BestCC, ", CCI = ", BestCCI, ", F_EMA = ", BestF_EMA, ", S_EMA = ", BestS_EMA, ", SMA = ", BestSMA, ", stK = ", BeststK, ", stP = ", BeststP, ", stD = ", BeststD, ", W = ", BestW, ", H = ", BestH, ", C = ", BestC, ", Skill = ", BestSkill, ", SkillMAX = ", BestSkillMAX, ", shirina = ", Bestshirina); LastOptim = TimeCurrent(); GlobalVariableSet("LastOptimization", LastOptim); if( CurRF < 0) if(MessageBox("Фактор восстановления меньше нуля./nПринимать данные оптимизированные параметры?", "Вопрос", MB_YESNO) == IDNO) return; BestS = S; BestO = O; BestI = I; BestG = G; BestM = M; BestCC = CC; BestCCI = CCI; BestF_EMA = F_EMA; BestS_EMA = S_EMA; BestSMA = SMA; BeststK = stK; BeststP = stP; BeststD = stD; BestW = W; BestH = H; BestC = C; BestSkill = Skill; BestSkillMAX = SkillMAX; Bestshirina = shirina; GlobalVariableSet("AutoS", S); GlobalVariableSet("AutoO", O); GlobalVariableSet("AutoI", I); GlobalVariableSet("AutoG", G); GlobalVariableSet("AutoM", M); GlobalVariableSet("AutoCC", CC); GlobalVariableSet("AutoCCI", CCI); GlobalVariableSet("AutoF_EMA", F_EMA); GlobalVariableSet("AutoS_EMA", S_EMA); GlobalVariableSet("AutoSMA", SMA); GlobalVariableSet("AutostK", stK); GlobalVariableSet("AutostP", stP); GlobalVariableSet("AutostD", stD); GlobalVariableSet("AutoW", W); GlobalVariableSet("AutoH", H); GlobalVariableSet("AutoC", C); GlobalVariableSet("AutoSkill", Skill); GlobalVariableSet("AutoSkillMAX", SkillMAX); GlobalVariableSet("Autoshirina", shirina); 进一步拖延--我不知道如何固定正数结果并自动替换成变量。 [删除] 2009.03.06 00:33 #85 Hoper23 писал(а)>> yyyyy....."带你到这个页面的链接已经 "死亡 "或被删除。" 不错的推荐!!!。有点类似于去死吧的方向。(无意冒犯,只是为了好玩)。 这是对我的感谢),对我的链接的感谢,对klot'y的实际准备好的解决方案的感谢),你有了测试器和优化器,只要稍微调整一下以适应你的需要。 而一切都会打开。 [删除] 2009.03.06 00:45 #86 回答不开!!!。 TheCore 2009.03.06 01:07 #87 Hoper23 >> : 这是我得到的东西 1.不要试图正面解决这个问题。 为什么你需要保存所有可能的解决方案的所有变体。 你不是在解决一个数学问题。你在看历史,看与你类似的情况 今天,现在要决定做什么。 因此,首先要描述目前的情况,并具体寻找。 这将减少大量的传递、变量和结果的数量。 下一步,停止--我不知道如何固定一个积极的结果并将其自动放入一个变量。 在第一阶段,我把它保存在一个文件中。在大约10,000-50,000个获胜选项的历史上收到。 然后在Excel中进行分析。 2.不要找一个完全匹配的。这不像是我们在描述一个正弦波。 3.先为一个变量写一个数据收集块,调试一下,然后再增加18个或你有多少个变量。 [删除] 2009.03.06 01:23 #88 很好。这个想法是符合逻辑的。那么,你如何解决对单一参数的组合进行优化的公式呢?整个问题是,在这个例子中,它们是相互关联的。由于我对MQL的了解有限,我还不知道另一个例子。 Combination = MathFloor((L1End-L1Start)/L1Step)*MathFloor((L2End-L2Start)/L2Step); [删除] 2009.03.06 02:33 #89 这种胡言乱语是为了优化线下的 extern int setWeek = 0; //День недели старта оптимизации extern int setHour = 02; //Час старта оптимизации extern int setMinute = 25; //Минута старта оптимизации extern int ProgNumber= 2; //номер программы оптимизации extern bool OptimStart=false; extern bool report=false; #include <MacroAutoOptimization.mqh> int init() { if(IsOptimization()){ string Str; int Cmd, Step, HandleStep; HandleStep=FileOpen("ExpertMessage.csv", FILE_CSV| FILE_READ| FILE_WRITE,0x7F); if( HandleStep>0){ Str = FileReadString( HandleStep); Cmd = StrToInteger(StringSubstr( Str,0,StringFind( Str,";",0))); Step = StrToInteger(StringSubstr( Str,StringFind( Str,";",0)+1,StringLen( Str)-StringFind( Str,";",0)-1))+1; FileSeek( HandleStep,0, SEEK_SET); FileWrite( HandleStep, Cmd+";"+ Step); FileClose( HandleStep); }} return(0); } int deinit() { Comment("Привет!"); return(0); } int start() { if(IsOptimization()==false && IsTesting()==false){ double Itog[][17]; int TecWeek=TimeDayOfWeek(TimeLocal()); int TecHour=TimeHour(TimeLocal()); int TecMinute=TimeMinute(TimeLocal()); if(! OptimStart){ if( TecWeek== setWeek){ if( TecHour== setHour){ if( TecMinute>= setMinute && TecMinute< setMinute+4){ if( AutoStart( ProgNumber, Itog)<0){Print("Оптимизация завершилась неудачей!");} deinitialization(); OptimStart=true; report=true; }}}} if( TecHour!= setHour){ OptimStart=false;} //Обнуление флага старта оптимизации if(ArrayRange( Itog,0)>0){ // Переменные для оптимизации stK = Itog[0][7]; stP = Itog[0][8]; stD = Itog[0][9]; W = Itog[0][10]; H = Itog[0][11]; C = Itog[0][12]; CCI = Itog[0][13]; F_EMA = Itog[0][14]; S_EMA = Itog[0][15]; SMA = Itog[0][16]; shirina = Itog[0][17]; S = Itog[0][18]; O = Itog[0][19]; I = Itog[0][20]; M = Itog[0][21]; G = Itog[0][22]; CC = Itog[0][23]; if( report){ Print("Новые параметры ", stK," | ", stP," | ", stD," | ", W," | ", H," | ", C," | ", CCI," | ", F_EMA," | ", S_EMA," | ", SMA," | ", shirina," | ", S," | ", O," | ", I," | ", M," | ", G," | ", CC); report=false; }}} 它配有一本圣经。 бла-бла-бла 而且还有一个biblah与之相配。 бла-бла-бла 没有任何作用......或者说,它把自己搞得一团糟,对CPU造成压力,但变量没有变化,而且做什么都很快--几秒钟就完事了。我不明白。 TheCore 2009.03.06 11:12 #90 Hoper23 >> : 这种胡言乱语是为了优化线下的 它配有一本圣经。 然后是biblah。 而它没有工作......或者说,它把自己搞得乱七八糟,给CPU带来压力,但变量没有变化,而且让一切变得很快--几秒钟就完事了。我不明白。 你已经开始使用xeon的 自动优化器工作了 TestCommander(自动优化)交易者的工具 所以问他。 顺便说一下,如果我没记错的话,这个产品已经支付了。 其中有一个帮助,一切都在那里解释得很清楚。 1234567891011 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
问题是,任务的目标很明确,但在MQL中实现的可能性似乎并不明确,因为我还不熟悉测试器-优化器的内置数组功能。我正试图重新阅读MQL手册,但我还没有找到这个块。而thecore自制的优化器与其说是不可靠,不如说是不太容易理解。这些变量的组成相当奇怪,没有注释,而且与上述链接中提到的工作版本有根本的不同。如果不难,亲爱的核心,解释你的观点的优化器,这样就可以适合所有19个参数和自动替换的结果。
从一个程序员口中听到这个消息,我觉得很奇怪,但我会试着把它分解(不是拼出来)。
1.假设你有一个有N个输入参数的函数
Function(n1,n2,...,n19)。
2.参数
n1从n1Min到n1Max变化,步长n1Step
....
n19从n19Min到n19Max的变化,n19Step
你需要这样做。
- 遍历所有(对于线性方法)传入的参数或不是所有(对于快速收敛方法)传入的参数。
有很多快速收敛的方法,其中之一就是遗传算法。
- 每当你输入一批新的参数,你就会在输出端得到函数的结果。
- 你需要写一个块来分析这些结果,并决定结果是否是
好的。
我知道你在分析单元上遇到了麻烦。因为如果你不知道如何写一个函数或如何
或如何查看输入参数,这不适合我,这是为编程课或喜欢拼写的人准备的。
编程的基础知识。
分析单位做什么。
1.它选择你要分析的最古老的BAR_Y条,并将当前的Y时间数据滑入你的
功能。也就是说,你的函数认为BAR_Y是TimeCurrent。
2.现在,在历史深度中,你的Function(n1,n2,...,n19)如果是在第0条,会取多少条。
并获得一些结果。
例如,你的策略是沿着iMA3,iMA2,iMA1寻找一个极值。然后我们有iMA_Y+2,iMA_Y+1,iMA_Y
如果它是一个极值点,我们就停止,如果不是,我们就做Y++。
好的。我们在位置t找到极值点,即iMAt+2,iMAt+1,iMAt
现在我们需要计算TP或SL是否会被触发
也就是说,从t点开始,我们往下走,分析从Open[t]到High[t]再到Low[t]的距离。
然后从Open[t]到High[t-1]再到Low[t-1],如果我们没有达到TP或SL,我们再进一步--采取T-2,如此反复,直到成功为止。
TP或SL或两者都是。
我们已经找到了Function(n1,n2,...,n19)的FIRST条件。
让我们保存这个结果。
接下来我们做t--,继续分析,直到第0条。
4.我们转移Y--并重复这个过程。
因此,我们找到了截至当前时刻的函数Function(n1,n2,...,n19)的所有出现次数。
5.分析当前的时刻,看看过去是否有类似的情况,以及它们是如何结束的。
6.保存结果。
7.为Function(n1,n2,...,n19)取下一组参数n1,,n19并检查它
8.重复进行,直到我们的参数用完。
9.我们选择最佳的参数集或几个参数集,并根据它们的建议,设置买入、卖出或购买。
什么都不做。
这就是全部。
我希望它是困难的,因为它确实是困难的。
问题是,任务的目的很明确,但用MQL语言实现的可能性似乎不清楚,因为我还不熟悉测试器-优化器的内置数组的功能。我正试图重新阅读MQL手册,但我还没有找到这个块。而thecore自制的优化器与其说是不可靠,不如说是不太容易理解。那里的变量写得相当怪异,没有注释,而且与上述链接中提到的工作版本有根本的不同。如果不难的话,亲爱的thecore,请解释一下你对优化器的看法,这样我就可以把所有的19个参数和自动完成的结果塞进去。
顺便说一下,不要从蛮力块开始--它比解析器更容易写。
如果你觉得我说的这些都太复杂,可以找找xeon的自动优化器。
它使用MetaTrader优化器。不要寻找内置的自动优化功能。没有了。
这里是 klot的指标,指标中嵌入了GA优化器。
我认为Hoper23不会对其进行基因分析,无论这个链接是否被破坏。
更为重要的是,它并没有被打破。
这是我得到的东西
进一步拖延--我不知道如何固定正数结果并自动替换成变量。yyyyy....."带你到这个页面的链接已经 "死亡 "或被删除。" 不错的推荐!!!。有点类似于去死吧的方向。(无意冒犯,只是为了好玩)。
这是对我的感谢),对我的链接的感谢,对klot'y的实际准备好的解决方案的感谢),你有了测试器和优化器,只要稍微调整一下以适应你的需要。 而一切都会打开。
回答不开!!!。
这是我得到的东西
1.不要试图正面解决这个问题。
为什么你需要保存所有可能的解决方案的所有变体。
你不是在解决一个数学问题。你在看历史,看与你类似的情况
今天,现在要决定做什么。
因此,首先要描述目前的情况,并具体寻找。
这将减少大量的传递、变量和结果的数量。
下一步,停止--我不知道如何固定一个积极的结果并将其自动放入一个变量。
在第一阶段,我把它保存在一个文件中。在大约10,000-50,000个获胜选项的历史上收到。
然后在Excel中进行分析。
2.不要找一个完全匹配的。这不像是我们在描述一个正弦波。3.先为一个变量写一个数据收集块,调试一下,然后再增加18个或你有多少个变量。
很好。这个想法是符合逻辑的。那么,你如何解决对单一参数的组合进行优化的公式呢?整个问题是,在这个例子中,它们是相互关联的。由于我对MQL的了解有限,我还不知道另一个例子。
这种胡言乱语是为了优化线下的
它配有一本圣经。
бла-бла-бла
而且还有一个biblah与之相配。
没有任何作用......或者说,它把自己搞得一团糟,对CPU造成压力,但变量没有变化,而且做什么都很快--几秒钟就完事了。我不明白。这种胡言乱语是为了优化线下的
它配有一本圣经。
然后是biblah。
而它没有工作......或者说,它把自己搞得乱七八糟,给CPU带来压力,但变量没有变化,而且让一切变得很快--几秒钟就完事了。我不明白。你已经开始使用xeon的 自动优化器工作了
TestCommander(自动优化)交易者的工具
所以问他。
顺便说一下,如果我没记错的话,这个产品已经支付了。
其中有一个帮助,一切都在那里解释得很清楚。