UM外汇真的能稳赚不亏吗有实现稳定盈利的可能吗?

在外汇市场里,大多数人总以为想要赚钱,只能靠自己老老实实交易,其实赚钱的途径不止一条,就是稍微偏门点。比如做推盘,延迟,赠金,剥头皮,套利套息等,这些方法其实和技术都没啥关系,搞得就是市场和平台的一些漏洞。外汇推盘这个名词很多人没听过,其实就类似于以前股票的控盘,之所以叫推盘,不叫控盘,是因为实在控不了盘,只能短时间推动一波,推完就跑。那推一下价格怎么赚钱呢?这里就涉及到外汇平台的AB仓,我们把流到国际市场的仓位都叫A仓,把不流到国际市场,自己和客户对赌的叫B仓。因为A仓会直接影响国际市场的报价,而B仓无论你下多少仓位,都对国际市场的报价毫无影响。这样我们就可以构建一个赚钱的策略,以做多为例,先用A仓买入国际盘,用来拉升瞬时价格,当然需要一定量的资金,不然就无效,同时用B仓在国内对赌盘里也埋伏多头仓位,当国际盘拉升价格时,B仓就会出现大量的浮盈,直接盈利平仓就行。当B盈利平仓后,A再进行平仓。B仓产生的盈利,减去A仓推盘一拉一平的损耗,最终就可以赚取一大笔固定的利润。很多人会觉得那A仓平了不是也可以赚钱吗?那是散户的错觉,真正到能影响市场价格的单量下去时,既然能把价格瞬间拉起来,平仓时也就能把价格瞬间砸下去,所以这个A仓是很难赚钱的。既然原理不难,那是不是可以直接推了?当然不行,你既然要用有限的资金去影响价格,肯定要避开最主流的品种和时间,不然就会吃力不讨好。推盘有个特点:往往发生在亚洲盘清淡时间段,尤其是交易量小的货币对。在盘面上的表现就是某个叉盘,在清淡时段原本是小幅横盘的,突然一个阳线拉升上去,然后又突然被打回来,而此时压根没有重要的数据。推盘这个玩法,其实之前国内现货流行的时候,聪明的国人就已经研究出推盘的方法,用来赚国内那些吃头寸的现货平台了,原理和上面说的一模一样,也是用一大笔钱去拉国际盘,比如在清淡时间一口气砸几千手原油,然后在国内十几个对赌平台,每个平台买个几百万,坐等出金,因为当时现货国家明文规定,只要客户盈利,是必须给出金的。看到这里或许你有点心痒痒了,不过最好还是冷静一下,因为现货现在国家已经不让玩了,外汇平台也把这种推盘的方式定为违规交易了,你就算赚了钱,你也不一定出得了金……或许有人比较聪明,不用新账户去搞,而是去收购平台的老账户,再通过媒体,舆论等方式给与平台施压,但平台也不是傻子,但凡要让他们出血的事,总会想办法去补漏的。2 价格延迟你现在看到的外汇价格,几乎每家平台都一样的,但这不代表以前也这样,我刚出来做外汇时,就看到过不同平台报价之间是有偏差的,有的快有的慢,有的高有的低,打个比方,如果有一家平台的欧元报价比其他几家慢了一些,导致价格有了几个点的偏差,那这个漏洞就形成了。我记得当时有一种插件,专门用来延迟的薅羊毛,只要偏差减去点差成本是正的,这个生意就可以做,因为这是完全零风险的,天天用软件去守株待兔就行。当然现在这种事情基本不存在了,任何漏洞都存在于初期,所以赚钱都得趁早,等大家都知道有那么回事时,赚钱的难度就会大大增加,且平台也会吃一堑长一智,直到这个漏洞不再是漏洞为止。3 赠金赠金算是散户最熟悉的一种漏洞,原理非常简单,比如A平台给你赠金1000美金,你用这1000美金重仓做一个多单,去B平台建立同仓位的空单对冲,最终一定会一个翻倍,一个爆仓。如果A平台爆仓,反正这1000美金是赠送的没成本,B平台1000美金变成2000美金,你赚1000美金,如果B平台爆仓,那A平台变成2000美金,扣除B平台1000美金的亏损,你还是净赚1000美金。虽然每个平台对赠金的使用和出金细节略有差异,但通过这个赠金来稳定薅羊毛的原理是不变的,关键这种玩法消除了市场波动的风险,最后不仅个人,甚至各种机构都开始来疯狂薅羊毛。但是,这种天上掉馅饼的事情,小搞搞可以,当大家都赚钱时,是不是平台亏了,平台会无休止的做慈善吗?所以后来就爆发了著名的铁汇事件,铁汇平台因为赠金名声大振,也因为赠金被太多人薅羊毛,导致财务负债严重,最后人家以违规套利为由,直接不让人出金了。还是那句话,永远要想清楚,你赚的钱,来自谁的亏损?如果这个问题没想明白,那就是一个定时炸弹,赠金的事情,你说中国人有错吗?也没错,既然平台搞赠金,那我就对冲获利,那平台有错吗?也不能全怪平台,人家赠金是为了多搞点客户,结果被客户搞死了,所以最后只能对客户耍赖皮了。最近几年,赠金的活动越来越少,甚至现在澳洲监管都明文规定不能向客户提供赠金,所以这个漏洞也将成为历史。4 剥头皮有没有发现很多平台对挂单距离有限制,比如止损止盈必须要在5个点以上等等,知道为什么这么限制吗?就是用来限制那些剥头皮策略的。那为什么很多平台禁止客户剥头皮呢?主要还是剥头皮的速度太快了,平台来不及把单子抛给市场,只能被迫和客户对赌,那客户剥头皮赚的钱,就是平台的亏损,老让平台亏,人家不乐意呗。剥头皮策略的原理很简单,就是赚一两个点就跑,快进快出,可以人工,也可以用EA。那是不是你去剥头皮也一定能赚钱呢?那就想简单了。剥头皮这个东西,模拟和实盘差距是非常大的,模拟赚得让你兴奋到跳起来的策略,实盘可能让你亏出血,为啥?因为实盘有点差,滑点,卡盘,插件等因素来搞你。我相信有好的剥头皮策略存在,在一定的时间空间内,确实可以赚钱,但我个人不会走剥头皮策略的路线,因为这玩意有几个缺陷,第一个就是自己人工操作的话,看似快进快出很酷,实则很累,用生命在换钱啊!其二,交易成本太高,自己拿计算器算算就知道了,就像开了一家公司,赚了100万,光交税就得70万。其三,这个模式容错很低,但凡平台点差,滑点等交易环境发生一点变化,自己的策略就可能亏损。当然,如果你能处理好我上面说的三个问题,那你也可以试试,毕竟我剥头皮也算不上专家。总结分享这些市场上偏门的赚钱策略,目的不是让大家去这么做,因为现在很多漏洞都已经补上了,而是为了让你打开眼界,打开思维。1 任何东西,开始的时候漏洞最多,赚钱最容易,越往后越规范,赚钱的难度越大。2 但凡是漏洞,都要思考谁在买单,如果这个买单者会改进,反攻,你也无法持续获利,比如推盘,延迟,赠金等。看到这里,或许你能理解,为什么我总说交易的最高境界,要利用人性的弱点,因为散户的天性和习惯是极难改变的,并且他们不像平台会反击,他们习惯赌博和失败的感觉。我的交易策略也是基于市场的漏洞,只不过这个漏洞是基于人性的,比较持久,不用担心短时间内会突然失效。李嘉诚说:做生意要记住,手中永远要有一样产品,是天塌下来你也能赚钱的。在外汇市场,你是否有一样东西,无论市场环境怎么变,你都能赚钱呢?欢迎大家留言讨论。
自从我做了外汇,就一直听到这样的说法:如果我一天可以赚到10个点(这是很容易就可以做到的),那么,一年之后,我就......今天,我又再次听到了这种声音,当然,细节有了一点变化,点数不是10个点,而是20点:如果我每天都可以赚到20点,按照一万美金下两手的仓位,我一个月就能赚50%啊!这让一年才能赚50%的我很惭愧,呵呵。既然有这么多的交易者有这种想法,咱们索性聊一下:每天都赚10点、20点,有没有可能做到?首先给出答案:有可能。但是,对于个人投资者来说,几乎不可能。论证如下:交易从本质上来说,是一个靠天吃饭的事情,当我们确定了一个系统化的进出规则之后,市场不给我们进场条件,我们就只有等,而一旦走出进场条件,就必须进场,所以,能不能进场,不是我们说了算的,要看市场给不给机会;进场之后,市场顺我们的交易方向走,我们就能赚钱,而一旦市场往反向走,我们就只有止损,所以,进场之后,能不能赚钱,也不是我们说了算的,要看市场走向。既然交易的盈亏完全取决于市场走势,市场走势又是混沌的,所以,我们的盈亏也必然是混沌的。体现在资金曲线上,就是一个很有趣的现象:一个可盈利的交易系统的资金曲线图,跟一个上涨走势的折线图基本没有什么区别,请看下面两幅图:图一:图二:这两幅图,哪个是价格走势图,哪个是资金曲线图,你能分得清楚吗?如果分不清,如果你也认为,两者确实很相似,那么,我请问:在一个上涨走势中,价格是稳定上涨的吗?是没有回撤、每天上涨幅度都一样的吗?如果不是,那么,你期待你的资金曲线图没有回撤、每天的上涨幅度都一样,可能吗?所以,希望每天都赚10点、20点,是不可能的。为什么我又说,这是可能的呢?我们假设一个有非常奇怪的交易系统,每天的盈亏完全等同于厦门当天的最高气温,那么,我们在具体的某一天能不能赚钱,能赚到多少,是完全不确定的,比如,前两天厦门下了一场雨,就极其阴凉,雨过天晴,今天就特别炎热。昨天和今天的气温,居然相差如此之大,我们能说什么呢?还是那个概念:混沌。但是,我们想,即便我们不知道厦门今天会是多高的气温,但春天秋天温度略低,我们赚的少;夏天气温高,我们赚得多;冬天会到零度以下,我们会发生亏损,是不是完全确定的?而一年的时间,气温高低会完成一个转换周期,是不是也是完全确定的?所以,混沌的现象,在宏观上(即,在未过临界水平的情况下),是有秩序的。在这种情况下,我们提出一个概念,就是“稳定度”。如果某一个交易系统,每天的盈亏幅度都大致相当,我们称之具有“以天为单位的稳定度”,简称,“日度稳定”;如果每月的盈亏幅度大致相当,就是月度稳定。我们虚构的天气的系统,就是年度稳定的:厦门每年的平均气温大致相当。想要实现某一个时间周期的稳定度,充分必要条件是:一:在这个时间周期内,我们做了多笔交易,比如,天气系统做了365笔交易;二:这些交易完成了盈亏、大小和持续时间的转换,比如,天气系统完成了春夏秋冬各种情况的转换;三:所有交易的盈亏相抵,总盈亏是基本一致的。那么,有没有可能把一个年度稳定的方法转为日度稳定呢?换句话说,能不能把一个一年才能完成的“一、二、三”条件,在一天里面完成呢?很容易。比如这个天气系统,我们在厦门生活,自然需要一年才能完成365笔交易,但是,如果我们在天庭生活,天上一天,地上一年,我们4分钟就可以做完一笔交易,自然可以实现一天做365笔交易,进而可以实现“日度稳定”了。所以我说,日度稳定是有可能的。当然你说,交易系统的盈亏变化情况,和气温的变化不一样,稳定度没有那么高。或许吧,但是,如果你在看自己的方法的时候,不是看一时甚至某一笔,而是让方法经历快速上涨、快速下跌、慢速上涨、慢速下跌、宽幅震荡、窄幅震荡等不同的节奏,那么,你会发现,盈亏的大小和持续时间的变化,与气温的变化其实是大致仿佛的,因而,讨论起来,道理也是一样的。如果我们在某一个时间段内(比如一年内),做了某些交易,且,这些交易的是盈是亏、盈亏幅度、盈利周期或亏损周期的持续时间、总体盈亏状况,与前一个该时段(去年)或后一个该时段(明年),大致相当,那么,我们也可以说我们实现了该时段的盈利稳定(年度稳定)。那么,一个年度稳定的方法,如何实现月度稳定、周度稳定甚至日度稳定呢?降低交易周期。比如,在小时图上可以实现月度稳定,在M3上就可以实现日度稳定。那么,具体怎么衡量我们可以实现什么程度的稳定呢?首先,你需要计算出来,你需要多少笔交易才可以经历不同的市场节奏及不同的盈亏状况,一般来说,可能需要上百笔甚至几百笔交易;其次,你需要大致计算,你完成一次交易,需要多少根K线,方法有不同,K线数量自然也不同,有多有少,比如,我们去年淘汰的一个方法,需要180根左右的K线完成一次交易;最后,两者相乘,就得到了你完成盈亏轮换需要的K线数量,再乘以你的交易周期,就得到了你可以实现什么程度的稳定。我们随便举个例子:100笔交易完成盈亏轮换;每一次交易需要100根K线;交易周期是M5,这样的话,我们实现的稳定程度是五万分钟,如果是每天4小时交易,基本就是年度稳定了。反过来计算,如果前面两个数字依然是100、100,每天交易四小时,想要实现日度稳定,我们需要交易什么周期。答案是,1.44秒。也就是说,我们需要在1.44秒K线上做交易,144秒完成一次交易,我们才可能在这种情况下实现日度稳定。这对散户来说,可能吗?几乎不可能。所以,我们有时候也会听到有实现了日度稳定的,但这样的情况,基本都是做高频的。原因就在于这里。只有高频,才能够实现,在一天里面,就做出足够的交易。当然,这种情况下,还有一个额外的条件:交易费用几乎为0,这对散户来说,也是几乎不可能具有的。所以,有没有可能实现每天盈利10点、20点呢?我的回答是,有可能。但是,对于个人投资者来说,几乎不可能。当然你说,你这里讨论的都是系统交易的情况,而不是我们惯常使用的自主交易啊。之所以不详细讨论自主交易,原因很简单:你总得先实现了盈利,再讨论盈利的稳定度吧。自主交易,连盈利都无法实现,谈什么盈利的稳定度?!这话可能有些冒失了。我在其他文章的讨论中,从未否认自主交易盈利的可能性,但是,一旦你给自己的交易加上一个盈利的期望,基本就决定了,你的交易是不可能盈利的。试问:如果实现了10点、20点的收益,你就收手不做了,那么,在适合你的交易日里,你是不是就不可能赚足利润;而一旦你亏损了,是不是就着急扳回损失,甚至要求自己务必实现收益目标,而一旦如此,你是不是就会大幅亏损?能赚的钱赚不到;不必亏的钱亏损了,这样做交易,还想要盈利,可能吗?
这个让我怎么回答呢?其实做外汇,做期货,做股票,最重要的是心态,其次才是专业知识,一个好的交易员,也就是你说的能够长久稳定收益的人,其实心态是很平静的,但是就这样的也是实战锻炼出来,也不是说天生,所以他也是钱亏出来的,我做金融11年了,还没有听说长久稳定盈利这么夸张的,起码我是没有见到圈子里面有这样的人,但是我相信会有。在这里呢,其实我想说的是是人类就有心态这个说法,神仙都有七情六欲,真正没有心态的是机器人,所以这里我推荐你做AI智能量化软件,带上策略,让机器人帮你盯盘:给你推荐一个算法可以学习下:种群优化算法:灰狼优化器(GWO)1. 概述灰狼算法是 2014 年开发出的一种元启发式随机群体智能算法。 它的思路是基于灰狼群狩猎模型。 狼群内有四种类型阶层:阿尔法、贝塔、德尔塔、和欧米茄。 阿尔法阶层在群体决策和管理方面拥有最大的“权重”。 接下来是贝塔和德尔塔阶层,它们服从阿尔法截仓,并拥有对狼群内其余阶层成员的压制。 欧米茄阶层的狼总是服从其余的统治阶层狼。在狼的阶层数学模型中,阿尔法阶层狼被认为是狼群中的主导狼,它的命令应该由狼群成员执行。 贝塔阶层的从属狼协助阿尔法阶层制定决策,被认为是阿尔法角色的最佳候选。 德尔塔阶层狼应该服从阿尔法和贝塔阶层,但它们支配着欧米茄阶层。 欧米茄阶层狼被认为是狼群的替罪羊,也是重要性最低下的个体。 它们只允许在最后才能进食。 阿尔法阶层被认为是最有利的解。第二和第三最佳解分别是贝塔和德尔塔阶层。 欧米茄阶层则认为是解的残料。 假设最适者的狼(阿尔法、贝塔、和德尔塔),即最接近猎物的狼,然后接近的是其余的狼。 每次接近后,就能判定谁是这个阶段的阿尔法、贝塔和德尔塔,然后狼群再次重新排列。 编队持续进行,直至狼群聚集在一起,这将是以最小距离进行攻击的最优方向。在算法过程中,执行 3 个主要阶段,其中狼群搜索猎物、包围、和攻击猎物。 搜索揭示出阿尔法、贝塔和德尔塔 — 最接近猎物的狼。 而其余的,服从占主导地位的指挥,也许会开始包围猎物,或继续随机移动,以便寻找最佳选项。2 条所述情况。 算法说明图 1 示意性地展示狼群的阶层结构。阿尔法阶层起着主导作用。图例 1. 狼群中的社会阶层数学模型和算法社会阶层:优等解是由阿尔法(α)狼形成的。二等解由贝塔(β)狼形成。三等解由德尔塔(δ)狼形成。其它可能的解,由欧米茄伏(ω)狼形成。包围猎物:当已经有最佳解的阿尔法、贝塔、和德尔塔在场时,进一步的行动取决于欧米茄。图例 2. 狩猎阶段:搜索、包围、攻击。算法的所有迭代都表现为三个阶段:搜索、包围、和狩猎。 该算法的规范版本具有引入的a 计算比率,以提高算法的收敛性。 该比率在每次迭代时递减,直至为零。 只要比率超过 1,狼群的初始化就会持续进行。 在这个阶段,猎物的位置是完全未知的,所以狼群应该是随机分布的。在“搜索”阶段之后,判定适应度函数的值,然后才有可能进入“包围”阶段。 在此阶段,a 比率大于 1。 这意味着阿尔法、贝塔和德尔塔正在远离它们之前的位置,从而可以优调估算猎物的位置。 当 a 比率等于 1 时,“攻击”阶段开始,而比率在迭代结束前趋于 0。 这导致狼群接近猎物,表明已经找到了最佳位置。 虽然,如果在这个阶段,其中某只狼找到了更好的解,那么猎物的位置和狼群的层次结构将会更新,但比例仍然趋于 0。 变化的过程由非线性函数表示。 这些阶段示意如图例 2 所示。欧米茄阶层的狼,其行为在所有世代都是不变的,包括遵循当前占主导地位的个体位置之间的几何中心。 在图例 3 中,阿尔法、贝塔和德尔塔在随机方向上偏离它们之前的位置,半径由系数给出,欧米茄移动到它们之间的中心,但在半径内有一定程度偏离它的概率。 半径决定了 a比率,正如我们记得的那样,它的变化导致半径成比例地减小。图例 3. 欧米茄相对阿尔法、贝塔和德尔塔的的运动图GWO 算法的伪代码如下:1) 随机初始化灰狼种群。2) 计算种群每只个体成员的体质状况。3) 狼群领导者:-α = 具有最佳体质值的成员-β = 第二等强大的成员(就体质值而言)-δ = 第三等强大的成员(就体质值而言)根据 α、β、δ 方程更新所有欧米茄狼的位置4) 计算种群中每个成员的体质。5) 重复步骤 3。我们继续讨论算法代码。 我对原始版本所做的唯一补充就是能够设置狼群中主导狼的数量。 现在,您可以设置任意数量的主导者,最多可达整个狼群。 对于特定任务这可能很实用。如往常一样,我们从算法的基本单元 — 狼开始,这是问题的解。 这是一个包含坐标数组和猎物值(适应度函数)的结构。 对于主导者和次等成员,结构是相同的。 这简化了算法,并允许我们在循环操作中使用相同的结构。 甚至,在所有迭代过程中,狼的角色会多次变化。 角色由排序后在数组中的位置唯一确定。 主导者位于数组的开头。//——————————————————————————————————————————————————————————————————————————————
struct S_Wolf
{
double c []; //coordinates
double p;
//prey
};
//——————————————————————————————————————————————————————————————————————————————狼群由一个紧凑且易于理解的类代表。 在此,我们声明要优化的参数范围和步长,最佳生产位置,最佳解的值,和辅助函数。//——————————————————————————————————————————————————————————————————————————————
class C_AO_GWO //wolfpack
{
//============================================================================
public: double rangeMax
[]; //maximum search range
public: double rangeMin
[]; //manimum search range
public: double rangeStep []; //step search
public: S_Wolf wolves
[]; //wolves of the pack
public: double cB
[]; //best prey coordinates
public: double pB;
//best prey
public: void InitPack (const int
coordinatesP,
//number of opt. parameters
const int
wolvesNumberP,
//wolves number
const int
alphaNumberP,
//alpha beta delta number
const int
epochCountP);
//epochs number
public: void TasksForWolves
(int epochNow);
public: void RevisionAlphaStatus ();
//============================================================================
private: void
ReturnToRange (S_Wolf &wolf);
private: void
SortingWolves ();
private: double SeInDiSp
(double In, double InMin, double InMax, double Step);
private: double RNDfromCI
(double Min, double Max);
private: int
coordinates;
//coordinates number
private: int
wolvesNumber;
//the number of all wolves
private: int
alphaNumber;
//Alpha beta delta number of all wolves
private: int
epochCount;
private: S_Wolf wolvesT
[];
//temporary, for sorting
private: int
ind
[];
//array for indexes when sorting
private: double val
[];
//array for sorting
private: bool
searching;
//searching flag
};
//——————————————————————————————————————————————————————————————————————————————
传统上,类声明后跟初始化。 而在此,我们重置为狼群适应度的最小 “double” 值,并分配数组的大小。//——————————————————————————————————————————————————————————————————————————————
void C_AO_GWO::InitPack (const int
coordinatesP,
//number of opt. parameters
const int
wolvesNumberP,
//wolves number
const int
alphaNumberP,
//alpha beta delta number
const int
epochCountP)
//epochs number
{
MathSrand (GetTickCount ());
searching = false;
pB
= -DBL_MAX;
coordinates
= coordinatesP;
wolvesNumber = wolvesNumberP;
alphaNumber
= alphaNumberP;
epochCount
= epochCountP;
ArrayResize (rangeMax,
coordinates);
ArrayResize (rangeMin,
coordinates);
ArrayResize (rangeStep, coordinates);
ArrayResize (cB,
coordinates);
ArrayResize (ind, wolvesNumber);
ArrayResize (val, wolvesNumber);
ArrayResize (wolves,
wolvesNumber);
ArrayResize (wolvesT, wolvesNumber);
for (int i = 0; i < wolvesNumber; i++)
{
ArrayResize (wolves
[i].c, coordinates);
ArrayResize (wolvesT [i].c, coordinates);
wolves
[i].p = -DBL_MAX;
wolvesT [i].p = -DBL_MAX;
}
}
//——————————————————————————————————————————————————————————————————————————————每次迭代时调用的第一个公开方法最令人难以理解,也是体量最庞大的。 此处是算法的主要逻辑。 事实上,该算法的性能是严格由等式描述的概率机制提供的。 我们来逐步研究此方法。 在第一次迭代中,当预期猎物的位置未知时,在检查标志后,我们只需依从来自优化参数最大值和最小值的生成值,即可将狼发往随机方向。//----------------------------------------------------------------------------
//space has not been explored yet, then send the wolf in a random direction
if (!searching)
{
for (int w = 0; w < wolvesNumber; w++)
{
for (int c = 0; c < coordinates; c++)
{
wolves [w].c [c] = RNDfromCI (rangeMin [c], rangeMax [c]);
wolves [w].c [c] = SeInDiSp
(wolves [w].c [c], rangeMin [c], rangeMax [c], rangeStep [c]);
}
}
searching = true;
return;
}在算法描述的规范版本中,存在运算向量的方程。 然而,它们以代码的形式表达更加清晰。 欧米茄狼的计算是在阿尔法、贝塔、和的额尔塔狼之前进行的,因为我们需要使用前面的主导者数值。提供三个狩猎阶段(搜索、包围、和攻击)的主要组成部分是a比率。 它代表对当前迭代和总迭代次数的非线性依赖性,并且趋于 0。 等式的下一个组成部分是 Ai 和 СiAi = 2.0 * a * r1 - a;Ci = 2.0 * r2;其中 r1 和 r2 是在 [0.0;1.0] 范围内的随机数。在表达式中Xn += wolves [abd].c [c] - Ai * (Ci * wolves [abd].c [c] - wolves [w].c [c]);狼的坐标根据领头狼的平均值进行调整。 由于可以在算法中指定任意数量的主导者,因此坐标求和是在循环中执行的。 之后,所得数额除以主导者的数量。 我们分别针对每个坐标执行此操作,每次生成新的 r1 和 r2 值。 正如我们所见,欧米茄狼的新位置是根据主导狼的位置调整的,同时考虑到它们自己当前的位置。//----------------------------------------------------------------------------
double a
= sqrt (2.0 * (1.0 - (epochNow / epochCount)));
double r1 = 0.0;
double r2 = 0.0;
double Ai = 0.0;
double Ci = 0.0;
double Xn = 0.0;
double min = 0.0;
double max = 1.0;
//omega-----------------------------------------------------------------------
for (int w = alphaNumber; w < wolvesNumber; w++)
{
Xn = 0.0;
for (int c = 0; c < coordinates; c++)
{
for (int abd = 0; abd < alphaNumber; abd++)
{
r1 = RNDfromCI (min, max);
r2 = RNDfromCI (min, max);
Ai = 2.0 * a * r1 - a;
Ci = 2.0 * r2;
Xn += wolves [abd].c [c] - Ai * (Ci * wolves [abd].c [c] - wolves [w].c [c]);
}
wolves [w].c [c] = Xn /= (double)alphaNumber;
}
ReturnToRange (wolves [w]);
}此处计算主导者。 为每个坐标计算每个坐标的 a、Ai 和 Ci 比率。 唯一的区别是主导者的位置会随着当前最佳猎物的坐标和它们自身的位置而变化。 主导者围着猎物转圈,或远或近,并在攻击中控制着次要狼群。//alpha, beta, delta----------------------------------------------------------
for (int w = 0; w < alphaNumber; w++)
{
for (int c = 0; c < coordinates; c++)
{
r1 = RNDfromCI (min, max);
r2 = RNDfromCI (min, max);
Ai = 2.0 * a * r1 - a;
Ci = 2.0 * r2;
wolves [w].c [c] = cB [c] - Ai * (Ci * cB [c] - wolves [w].c [c]);
}
ReturnToRange (wolves [w]);
}这是每次迭代时调用的第二个公开方法。 在此处更新群中主导者的状态。 事实上,狼是按体质值排序的。 如果找到的猎物坐标比整个群体中保存的猎物坐标更好,那么我们就需更新数值。//——————————————————————————————————————————————————————————————————————————————
void C_AO_GWO::RevisionAlphaStatus ()
{
SortingWolves ();
if (wolves [0].p > pB)
{
pB = wolves [0].p;
ArrayCopy (cB, wolves [0].c, 0, 0, WHOLE_ARRAY);
}
}
//——————————————————————————————————————————————————————————————————————————————
3. 测试函数您已经知道 Skin、Forest 和 Megacity 等函数。 这些测试函数满足测试优化算法的所有复杂性标准。 不过,有一个功能没有被考虑在内。 它理应实现,以便提高测试的客观性。 其需求如下:全局极值不应位于范围的边界上。 如果算法没有超界检查,则可能会出现的状况就是算法展示出完美的结果。 而事实上这是由于内部缺陷,这些数值都位于边界上。全局极值不应位于范围坐标的中心。 在这种情况下,算法将考虑在某个范围内生成平均值。全局最小值应位于坐标中心。 这是必要的,以便排除第 2 条所述情况。测试函数结果的计算应考虑以下情况:在整个函数域(当函数是多变量时)随机生成的数字将给出大约最大值 50% 的平均结果,尽管实际上这些结果是偶然获得的。考虑到这些需求,修改了测试函数的边界,并将范围的中心偏移到函数值的最小值。 我再次总结一下。 如此做是必要的,以便所获测试优化算法的结果合理性和客观性最大化。 因此,在新测试函数上,基于随机数生成的优化算法很自然地展现出较低的总体结果。 更新后的评级表位于文章末尾。Skin 函数。 具有多个局部极值的平滑函数,可能会混淆优化算法,因为它可能会在其中一个极值处卡顿。 唯一的全局极值的特征是其附近的数值变化较弱。 这个函数清楚地显示了该算法可被切分到正在研究领域的能力,远不止专注于单个领域。 特别是,蜂群(ABC)算法的行为方式。图例 4. Skin 测试函数Forest 函数。 该函数具有多个平滑极值,和若干个不可微极值。 这是对优化算法的一个有价值的测试,用来找寻“大海捞针”的能力。 找到单个全局最大值是一项非常困难的任务,尤其是在函数包含许多变量的情况下。 蚁群算法(ACO)在这项任务中以特征行为而著称,它以令人难以置信的方式为目标铺平了道路。图例 5 Forest 测试函数Megacity 函数。 该函数是一个具有一个全局极值,和几个局部极值的离散优化问题。 极其复杂的表面为需要研究的梯度提供了优秀的测试算法。 一个完全均匀的“下限”增加了额外的复杂性,这也是一个最小值,它没有提供有关全局最大值的可能方向的任何信息。图例 6 Megacity 测试函数在测试函数的代码中添加传入参数是否超出数值范围的检查。 在函数的先前版本中,优化算法可能会不公平地获得大于函数在其定义范围内实际应具有的函数值。4. 测试结果由于对测试函数进行了更改,测试台也已随之更新。 在测试台屏幕的右侧,您仍然可以看到优化算法的收敛图。 绿线代表具有两个变量的函数收敛结果。 蓝线代表具有 40 个变量的函数。 红线表示具有 1000 个变量的函数。 较大的黑色圆圈表示函数的全局最大值的位置。 较小的黑色圆圈表示当前优化算法求解值的位置。 白线的十字准线表示检验函数的几何中心,并对应于全局最小值。 引入此功能是为了更好地直观感知测试算法的行为。 白点表示平均中间解。 彩色小点表示相应维度的坐标对。 彩色示意测试函数维度的序号位置。更新后的表格中可以看到之前关于新测试台的文章中讨论的优化算法的测试结果。 为了在视觉上更清晰,关于收敛速度的指示线已从表格中删除 — 它可以在测试台的动画上直观地判定。 添加了包含算法描述的列。ACOm (蚁群优化) 测试结果:2022.11.28 12:17:00.468
Test_AO_ACO (EURUSD,M1)
=============================2022.11.28 12:17:06.382
Test_AO_ACO (EURUSD,M1)
1 Skin's; Func runs 10000 result: 4.8442032230782982022.11.28 12:17:06.382
Test_AO_ACO (EURUSD,M1)
Score: 0.982292022.11.28 12:17:14.191
Test_AO_ACO (EURUSD,M1)
20 Skin's; Func runs 10000 result: 4.0433836107362872022.11.28 12:17:14.191
Test_AO_ACO (EURUSD,M1)
Score: 0.791082022.11.28 12:17:55.578
Test_AO_ACO (EURUSD,M1)
500 Skin's; Func runs 10000 result: 1.25801706516810262022.11.28 12:17:55.578
Test_AO_ACO (EURUSD,M1)
Score: 0.126022022.11.28 12:17:55.578
Test_AO_ACO (EURUSD,M1)
=============================2022.11.28 12:18:01.491
Test_AO_ACO (EURUSD,M1)
1 Forest's; Func runs 10000 result: 1.76787661002345382022.11.28 12:18:01.491
Test_AO_ACO (EURUSD,M1)
Score: 1.000002022.11.28 12:18:09.508
Test_AO_ACO (EURUSD,M1)
20 Forest's; Func runs 10000 result: 1.09743815005858552022.11.28 12:18:09.508
Test_AO_ACO (EURUSD,M1)
Score: 0.620772022.11.28 12:18:53.348
Test_AO_ACO (EURUSD,M1)
500 Forest's; Func runs 10000 result: 0.203677260284540422022.11.28 12:18:53.348
Test_AO_ACO (EURUSD,M1)
Score: 0.115212022.11.28 12:18:53.348
Test_AO_ACO (EURUSD,M1)
=============================2022.11.28 12:18:59.303
Test_AO_ACO (EURUSD,M1)
1 Megacity's; Func runs 10000 result: 4.62022.11.28 12:18:59.303
Test_AO_ACO (EURUSD,M1)
Score: 0.383332022.11.28 12:19:07.598
Test_AO_ACO (EURUSD,M1)
20 Megacity's; Func runs 10000 result: 5.282022.11.28 12:19:07.598
Test_AO_ACO (EURUSD,M1)
Score: 0.440002022.11.28 12:19:53.172
Test_AO_ACO (EURUSD,M1)
500 Megacity's; Func runs 10000 result: 0.28522022.11.28 12:19:53.172
Test_AO_ACO (EURUSD,M1)
Score: 0.023772022.11.28 12:19:53.172
Test_AO_ACO (EURUSD,M1)
=============================2022.11.28 12:19:53.172
Test_AO_ACO (EURUSD,M1)
All score for C_AO_ACOm: 0.4980520084646583(人工蜂群)测试结果:2022.11.28 12:35:47.181
Test_AO_ABCm (EURUSD,M1)
=============================2022.11.28 12:35:52.581
Test_AO_ABCm (EURUSD,M1)
1 Skin's; Func runs 10000 result: 4.9183799866125872022.11.28 12:35:52.581
Test_AO_ABCm (EURUSD,M1)
Score: 1.000002022.11.28 12:35:59.454
Test_AO_ABCm (EURUSD,M1)
20 Skin's; Func runs 10000 result: 3.40738258058463742022.11.28 12:35:59.454
Test_AO_ABCm (EURUSD,M1)
Score: 0.639222022.11.28 12:36:32.428
Test_AO_ABCm (EURUSD,M1)
500 Skin's; Func runs 10000 result: 1.06844649273533372022.11.28 12:36:32.428
Test_AO_ABCm (EURUSD,M1)
Score: 0.080762022.11.28 12:36:32.428
Test_AO_ABCm (EURUSD,M1)
=============================2022.11.28 12:36:38.086
Test_AO_ABCm (EURUSD,M1)
1 Forest's; Func runs 10000 result: 1.7662454566698982022.11.28 12:36:38.086
Test_AO_ABCm (EURUSD,M1)
Score: 0.999082022.11.28 12:36:45.326
Test_AO_ABCm (EURUSD,M1)
20 Forest's; Func runs 10000 result: 0.355561251360043352022.11.28 12:36:45.326
Test_AO_ABCm (EURUSD,M1)
Score: 0.201122022.11.28 12:37:22.301
Test_AO_ABCm (EURUSD,M1)
500 Forest's; Func runs 10000 result: 0.066917111499620262022.11.28 12:37:22.301
Test_AO_ABCm (EURUSD,M1)
Score: 0.037852022.11.28 12:37:22.301
Test_AO_ABCm (EURUSD,M1)
=============================2022.11.28 12:37:28.047
Test_AO_ABCm (EURUSD,M1)
1 Megacity's; Func runs 10000 result: 12.02022.11.28 12:37:28.047
Test_AO_ABCm (EURUSD,M1)
Score: 1.000002022.11.28 12:37:35.689
Test_AO_ABCm (EURUSD,M1)
20 Megacity's; Func runs 10000 result: 1.96000000000000022022.11.28 12:37:35.689
Test_AO_ABCm (EURUSD,M1)
Score: 0.163332022.11.28 12:38:11.609
Test_AO_ABCm (EURUSD,M1)
500 Megacity's; Func runs 10000 result: 0.338800000000000052022.11.28 12:38:11.609
Test_AO_ABCm (EURUSD,M1)
Score: 0.028232022.11.28 12:38:11.609
Test_AO_ABCm (EURUSD,M1)
=============================2022.11.28 12:38:11.609
Test_AO_ABCm (EURUSD,M1)
All score for C_AO_ABCm: 0.4610669021761763ABC(人工蜂群)测试结果:2022.11.28 12:29:51.177
Test_AO_ABC (EURUSD,M1)
=============================2022.11.28 12:29:56.785
Test_AO_ABC (EURUSD,M1)
1 Skin's; Func runs 10000 result: 4.8906799839502052022.11.28 12:29:56.785
Test_AO_ABC (EURUSD,M1)
Score: 0.993392022.11.28 12:30:03.880
Test_AO_ABC (EURUSD,M1)
20 Skin's; Func runs 10000 result: 3.80354307446041332022.11.28 12:30:03.880
Test_AO_ABC (EURUSD,M1)
Score: 0.733812022.11.28 12:30:37.089
Test_AO_ABC (EURUSD,M1)
500 Skin's; Func runs 10000 result: 1.1958401002273332022.11.28 12:30:37.089
Test_AO_ABC (EURUSD,M1)
Score: 0.111182022.11.28 12:30:37.089
Test_AO_ABC (EURUSD,M1)
=============================2022.11.28 12:30:42.811
Test_AO_ABC (EURUSD,M1)
1 Forest's; Func runs 10000 result: 1.76670705074492982022.11.28 12:30:42.811
Test_AO_ABC (EURUSD,M1)
Score: 0.999342022.11.28 12:30:50.108
Test_AO_ABC (EURUSD,M1)
20 Forest's; Func runs 10000 result: 0.37898548060952752022.11.28 12:30:50.108
Test_AO_ABC (EURUSD,M1)
Score: 0.214372022.11.28 12:31:25.900
Test_AO_ABC (EURUSD,M1)
500 Forest's; Func runs 10000 result: 0.074513084812738132022.11.28 12:31:25.900
Test_AO_ABC (EURUSD,M1)
Score: 0.042152022.11.28 12:31:25.900
Test_AO_ABC (EURUSD,M1)
=============================2022.11.28 12:31:31.510
Test_AO_ABC (EURUSD,M1)
1 Megacity's; Func runs 10000 result: 10.22022.11.28 12:31:31.510
Test_AO_ABC (EURUSD,M1)
Score: 0.850002022.11.28 12:31:38.855
Test_AO_ABC (EURUSD,M1)
20 Megacity's; Func runs 10000 result: 2.022022.11.28 12:31:38.855
Test_AO_ABC (EURUSD,M1)
Score: 0.168332022.11.28 12:32:14.623
Test_AO_ABC (EURUSD,M1)
500 Megacity's; Func runs 10000 result: 0.375599999999999932022.11.28 12:32:14.623
Test_AO_ABC (EURUSD,M1)
Score: 0.031302022.11.28 12:32:14.623
Test_AO_ABC (EURUSD,M1)
=============================2022.11.28 12:32:14.623
Test_AO_ABC (EURUSD,M1)
All score for C_AO_ABC: 0.46043003186219245PSO(粒子群优化)测试结果:2022.11.28 12:01:03.967
Test_AO_PSO (EURUSD,M1)
=============================2022.11.28 12:01:09.723
Test_AO_PSO (EURUSD,M1)
1 Skin's; Func runs 10000 result: 4.902760497137152022.11.28 12:01:09.723
Test_AO_PSO (EURUSD,M1)
Score: 0.996272022.11.28 12:01:17.064
Test_AO_PSO (EURUSD,M1)
20 Skin's; Func runs 10000 result: 2.32506685620245662022.11.28 12:01:17.064
Test_AO_PSO (EURUSD,M1)
Score: 0.380802022.11.28 12:01:52.880
Test_AO_PSO (EURUSD,M1)
500 Skin's; Func runs 10000 result: 0.9433316877698922022.11.28 12:01:52.881
Test_AO_PSO (EURUSD,M1)
Score: 0.050892022.11.28 12:01:52.881
Test_AO_PSO (EURUSD,M1)
=============================2022.11.28 12:01:58.492
Test_AO_PSO (EURUSD,M1)
1 Forest's; Func runs 10000 result: 1.65777694785666022022.11.28 12:01:58.492
Test_AO_PSO (EURUSD,M1)
Score: 0.937722022.11.28 12:02:06.105
Test_AO_PSO (EURUSD,M1)
20 Forest's; Func runs 10000 result: 0.257044141270183932022.11.28 12:02:06.105
Test_AO_PSO (EURUSD,M1)
Score: 0.145402022.11.28 12:02:44.566
Test_AO_PSO (EURUSD,M1)
500 Forest's; Func runs 10000 result: 0.085848054508313332022.11.28 12:02:44.566
Test_AO_PSO (EURUSD,M1)
Score: 0.048562022.11.28 12:02:44.566
Test_AO_PSO (EURUSD,M1)
=============================2022.11.28 12:02:50.268
Test_AO_PSO (EURUSD,M1)
1 Megacity's; Func runs 10000 result: 12.02022.11.28 12:02:50.268
Test_AO_PSO (EURUSD,M1)
Score: 1.000002022.11.28 12:02:57.649
Test_AO_PSO (EURUSD,M1)
20 Megacity's; Func runs 10000 result: 1.11999999999999992022.11.28 12:02:57.649
Test_AO_PSO (EURUSD,M1)
Score: 0.093332022.11.28 12:03:34.895
Test_AO_PSO (EURUSD,M1)
500 Megacity's; Func runs 10000 result: 0.2682022.11.28 12:03:34.895
Test_AO_PSO (EURUSD,M1)
Score: 0.022332022.11.28 12:03:34.895
Test_AO_PSO (EURUSD,M1)
=============================2022.11.28 12:03:34.895
Test_AO_PSO (EURUSD,M1)
All score for C_AO_PSO: 0.40836715689743186RND(随机)测试结果:2022.11.28 16:45:15.976
Test_AO_RND (EURUSD,M1)
=============================2022.11.28 16:45:21.569
Test_AO_RND (EURUSD,M1)
1 Skin's; Func runs 10000 result: 4.9155227501141942022.11.28 16:45:21.569
Test_AO_RND (EURUSD,M1)
Score: 0.999322022.11.28 16:45:28.607
Test_AO_RND (EURUSD,M1)
20 Skin's; Func runs 10000 result: 2.5845466881998472022.11.28 16:45:28.607
Test_AO_RND (EURUSD,M1)
Score: 0.442762022.11.28 16:46:02.695
Test_AO_RND (EURUSD,M1)
500 Skin's; Func runs 10000 result: 1.01613362372637922022.11.28 16:46:02.695
Test_AO_RND (EURUSD,M1)
Score: 0.068272022.11.28 16:46:02.695
Test_AO_RND (EURUSD,M1)
=============================2022.11.28 16:46:09.622
Test_AO_RND (EURUSD,M1)
1 Forest's; Func runs 10000 result: 1.46956809438945332022.11.28 16:46:09.622
Test_AO_RND (EURUSD,M1)
Score: 0.831262022.11.28 16:46:17.675
Test_AO_RND (EURUSD,M1)
20 Forest's; Func runs 10000 result: 0.203735331126044752022.11.28 16:46:17.675
Test_AO_RND (EURUSD,M1)
Score: 0.115242022.11.28 16:46:54.544
Test_AO_RND (EURUSD,M1)
500 Forest's; Func runs 10000 result: 0.05389098168273252022.11.28 16:46:54.544
Test_AO_RND (EURUSD,M1)
Score: 0.030482022.11.28 16:46:54.544
Test_AO_RND (EURUSD,M1)
=============================2022.11.28 16:47:00.219
Test_AO_RND (EURUSD,M1)
1 Megacity's; Func runs 10000 result: 10.02022.11.28 16:47:00.219
Test_AO_RND (EURUSD,M1)
Score: 0.833332022.11.28 16:47:08.145
Test_AO_RND (EURUSD,M1)
20 Megacity's; Func runs 10000 result: 1.082022.11.28 16:47:08.145
Test_AO_RND (EURUSD,M1)
Score: 0.090002022.11.28 16:47:49.875
Test_AO_RND (EURUSD,M1)
500 Megacity's; Func runs 10000 result: 0.288400000000000052022.11.28 16:47:49.875
Test_AO_RND (EURUSD,M1)
Score: 0.024032022.11.28 16:47:49.875
Test_AO_RND (EURUSD,M1)
=============================2022.11.28 16:47:49.875
Test_AO_RND (EURUSD,M1)
All score for C_AO_RND: 0.38163317904126015基于 Skin 测试函数的 GWO基于 Forest 测试函数的 GWO基于 Megacity 测试函数的 GWOGWO 测试结果。2022.11.28 13:24:09.370
Test_AO_GWO (EURUSD,M1)
=============================2022.11.28 13:24:14.895
Test_AO_GWO (EURUSD,M1)
1 Skin's; Func runs 10000 result: 4.9141758880652222022.11.28 13:24:14.895
Test_AO_GWO (EURUSD,M1)
Score: 0.999002022.11.28 13:24:22.175
Test_AO_GWO (EURUSD,M1)
20 Skin's; Func runs 10000 result: 2.74190924353094052022.11.28 13:24:22.175
Test_AO_GWO (EURUSD,M1)
Score: 0.480332022.11.28 13:25:01.381
Test_AO_GWO (EURUSD,M1)
500 Skin's; Func runs 10000 result: 1.52278485927981882022.11.28 13:25:01.381
Test_AO_GWO (EURUSD,M1)
Score: 0.189242022.11.28 13:25:01.381
Test_AO_GWO (EURUSD,M1)
=============================2022.11.28 13:25:06.924
Test_AO_GWO (EURUSD,M1)
1 Forest's; Func runs 10000 result: 1.48225801518198422022.11.28 13:25:06.924
Test_AO_GWO (EURUSD,M1)
Score: 0.838442022.11.28 13:25:14.551
Test_AO_GWO (EURUSD,M1)
20 Forest's; Func runs 10000 result: 0.154773951492669152022.11.28 13:25:14.551
Test_AO_GWO (EURUSD,M1)
Score: 0.087552022.11.28 13:25:56.900
Test_AO_GWO (EURUSD,M1)
500 Forest's; Func runs 10000 result: 0.045172982324573192022.11.28 13:25:56.900
Test_AO_GWO (EURUSD,M1)
Score: 0.025552022.11.28 13:25:56.900
Test_AO_GWO (EURUSD,M1)
=============================2022.11.28 13:26:02.305
Test_AO_GWO (EURUSD,M1)
1 Megacity's; Func runs 10000 result: 12.02022.11.28 13:26:02.305
Test_AO_GWO (EURUSD,M1)
Score: 1.000002022.11.28 13:26:09.475
Test_AO_GWO (EURUSD,M1)
20 Megacity's; Func runs 10000 result: 1.22022.11.28 13:26:09.475
Test_AO_GWO (EURUSD,M1)
Score: 0.100002022.11.28 13:26:48.980
Test_AO_GWO (EURUSD,M1)
500 Megacity's; Func runs 10000 result: 0.26242022.11.28 13:26:48.980
Test_AO_GWO (EURUSD,M1)
Score: 0.021872022.11.28 13:26:48.980
Test_AO_GWO (EURUSD,M1)
=============================2022.11.28 13:26:48.980
Test_AO_GWO (EURUSD,M1)
All score for C_AO_GWO: 0.41577484361261224灰狼优化算法(GWO)是最近基于模拟灰狼群狩猎的生物启发优化算法之一。 平均而言,该算法已经证明了自身在各种类型的函数上都非常有效,无论是在查找极值的准确性方面,还是在收敛速度方面。 在某些测试中,它被证明是最好的。 “灰狼”优化算法的主要性能指标优于粒子群优化算法,在仿生优化算法类中被认为是“常规”的。与此同时,灰狼优化算法的计算复杂度可与粒子群优化算法相媲美。 由于GWO 优化算法的众多优点,自该算法首次发布以来,在短时间内涌现出众多关于其修订版的工作。 该算法的唯一缺点是发现 Forest 尖锐极大函数的坐标精度低。所发现的极值精度低表现在 Forest 函数的所有维度上,结果是表中所有参与者中最差的。 事实证明,该算法对平滑 Skin 函数有效,尤其是在较大维度 Skin 函数的情况下。 GWO 也是表中第三个在 Megacity 函数上实现 100% 全局最大值的排名。算法说明SkinForestMegacity (离散)最终结果2 参数 (1 F)40 参数 (20 F)1000 参数 (500 F)2 参数 (1 F)40 参数 (20 F)1000 参数 (500 F)2 参数 (1 F)40 参数 (20 F)1000 参数 (500 F)ACOm蚁群优化0.982290.791080.126021.000000.620770.115210.383330.440000.023770.49805222ABCm人工蜂群 M1.000000.639220.080760.999080.201120.037851.000000.163330.028230.46106556ABC人工蜂群0.993390.733810.111180.999340.214370.042150.850000.168330.031300.46043000GWO灰狼优化器0.999000.480330.189240.838440.087550.025551.000000.100000.021870.41577556PSO粒子群优化0.996270.380800.050890.937720.145400.048561.000000.093330.022330.40836667RND随机0.999320.442760.068270.831260.115240.030480.833330.090000.024030.38163222结束语:优点:1. 高速。2 条所述情况。 高收敛性平滑函数,且具有大量变量。缺点:1. 非通用。2 条所述情况。 在局部极端处卡顿。3. 离散和不可微函数的可扩展性低。

我要回帖

更多关于 外汇真的能稳赚不亏吗 的文章

 

随机推荐