Python网络通信 ali24

概述

在我们平时生活工作中,常常会接触到网络通信的内容,不管你是普通的用户,还是通信行业内的开发人员,都无法避免与网络通信打交道。我在初步学习 python 的过程中,对python的网络通信问题做了总结,所以写下这篇文章作为记录,也希望能给其他初学者一些引导和启发。这篇文章的主要内容如下:

1. 在深入讲解之前,我们先介绍一些背景信息;

2. 介绍套接字的概念;

3. 展示如何用Python来实现简单的网络应用程序。

客户端/服务器架构(C/S架构)

什么是客户端/服务器架构?总的来说,某一个特定的对象,并没有严格的客户端或者服务器之分,区分的标准在于,在实现网络通信的过程中,该对象的行为模式决定了它是客户端还是服务端。

服务器:为一个或者多个客户端(用户)提供所需“服务"的一系列硬件或者软件。工作流程可以简单概括为:等待请求、响应并提供服务、等待下一个请求。

客户端:因特定请求而联系服务器,接收服务并处理相关事务的一方。客户端可以持续向服务器发送请求,也可以在结束事务请求后不再发出请求。

因特网上典型的C/S架构

通信端点与套接字(socket)

在服务器相应客户端的请求之前,双方需要进行一系列的准备工作。首先需要创建一个通信端点,服务器通过该通信端点监听客户端的请求(当然,实际的网络通信中,处理不同类型的消息会使用不同类型的通信端点,从而进行区分)。

在网络通信中,我们常用的一种通信端点为套接字(socket),在通信开始之前,网络应用程序都需要创建套接字。

套接字的分类

1. 基于文件的套接字

UNIX 套接字是我们所讲的套接字的第一个家族,并且拥有一个“家族名字”:AF_UNIX(又名 AF_LOCAL,在 POSIX1.g 标准中指定),它代表地址家族(address family):UNIX。

包括 Python 在内的大多数受欢迎的平台都使用术语地址家族及其缩写 AF;其他比较旧的系统可能会将地址家族表示成域(domain)或协议家族(protocol family),并使用其缩写 PF 而非 AF。类似地,AF_LOCAL(在 2000~2001 年标准化)将代替 AF_UNIX。然而,考虑到后向兼容性,很多系统都同时使用二者,只是对同一个常数使用不同的别名。Python 本身仍然在使用 AF_UNIX。

2. 面向网络的套接字

它也有自己的家族名字 AF_INET,或者地址家族:因特网。另一个地址家族 AF_INET6 用于第 6 版因特网协议(IPv6)寻址。(还有其他的地址家族,这些要么是专业的、过时的、很少使用的,要么是仍未实现的。)在所有的地址家族之中,目前 AF_INET 是使用得最广泛的。

总的来说,Python 只支持 AF_UNIX、AF_NETLINK、AF_TIPC 和 AF_INET 家族。下面的内容中,我们将使用 AF_INET。

套接字地址:主机-端口对

正如我们在现实生活中打电话一样,套接字的通信需要一些记号用作识别功能。我们打电话的时候,可以通过区号和电话号码的组合找到要呼叫的用户;在socket通信中,我们通过主机-端口对找到通信的对象。

我们都知道,通过url或者ip地址,我们可以在互联网中找到特定的主机。在每一台主机中,不同的端口号会用作不同的通信用途。只要确定的主机和端口号,就可以在网络中唯一确定一个”通信端点“,也就是找到了所要进行通信的套接字的地址了。

需要说明的是,有效的端口号范围是0~65535(小于1024的端口号预留给了系统)。一般来说,其余的端口号我们都可以根据实际的需要进行使用。

面向连接的套接字与无连接的套接字

1. 面向连接的套接字(TCP)

也称为虚拟电路或流套接字。主要提供序列化的、可靠的、不重复的数据,它可以将消息拆分成多个片段,确保每一条片段都顺利到达目的地,然后按照顺序组合在一起,最后将完整的消息传递给正在等待的应用程序。

实现的主要协议是传输控制协议(TCP)。创建TCP套接字时,必须使用SOCK_STREAM作为套接字类型。

2. 无连接的套接字(UDP)

又称为数据报类型的套接字。在传输过程中无法保证其顺序性、可靠性、重复性,事实上所发送的报文有可能最后并没有到达,也有可能存在重复的消息。

我们之所以还继续使用数据报,这是相对于面向连接的套接字来看的。由于维护TCP连接需要大量的开销,发送数据报能够保证成本更加”低廉“,所以通常能提供更好的性能,并且可能更适合某一些类型的应用程序。

实现的主要协议是用户数据报协议(UDP)。创建UDP套接字,必须使用SOCK_DGRAM作为套接字类型。

Python中的网络编程

socket()模块函数

要创建套接字,必须使用socket.socket()函数,它的一般语法如下:

socket(socket_family, socket_type, protocol=0)

其中,socket_family是AF_UNIX或者AF_INET,socket_type是SOCK_STREAM或者SOCK_DGRAM,protocol通常省略,默认为0 。

在python编程中,我们首先在文件最开始的地方引用需要用到的模块,在这里,我们使用“from socket import *",通过这样的引用,就可以向下面这样直接创建套接字:

  1. tcpSock = socket(AF_INET, SOCK_STREAM)
  2. udpSock = socket(AF_INET, SOCK_DGRAM)

成功创建套接字后,我们就可以调用套接字对象的内置方法进行其他的操作了。具体的内容可以查看python的文档。

TCP通信

1. 创建TCP服务器

以下是一个TCP服务器程序,它接受客户端发送的字符串,将其打上时间戳之后,再返回给客户端。二话不说,先贴代码:

TCP时间戳服务器

第1~4行:

声明运行环境,导入socket模块和time.ctime()。

第6~10行:

指定主机地址、工作端口号、接收缓存的长度。HOST和PORT共同组成ADDR,体现的就是上面我们所说的”主机-端口对“。服务器端的HOST为空,表示它可以使用任意可用的地址。

第12~14行:

创建套接字 ,把套接字绑定到服务器地址,开启TCP监听。

第16~32行:

进入服务器的无限循环,不断等待接收客户端的连接。在第18行,我们通过accept()获取到客户端的tcpCliSock和addr,于是后续可以通过这个tcpCliSock专门处理该客户端的事务(从而与其他请求的客户端区分开来)。在第22行,使用recv()接收消息,如果消息为空,则跳出循环,关闭当前客户端的连接,然后继续等待连接;如果不为空,则把消息解析出来,添加时间戳,经过重新编码成ASCII字节后,通过send()发送回去给客户端。在这个程序里,第32行不会执行,只是用于提醒编写程序的人,在使用这一套程序时,必须要考虑到合理科学的退出方式,正确地调用close()方法。

这里需要强调的是,由于python的编码问题,所以我们的消息在主机端时要进行解码后才能正确显示(如decode()),进行编码后才能发送到网络端去(如encode(),bytes())。不管是在服务器还是客户端,我们都需要考虑到这个情况。

2. 创建TCP客户端

创建客户端比服务器要简单很多。客户端与服务器建立连接,发送字符串给服务器,从服务器接收添加了时间戳的消息并打印。发送空字符串即可关闭套接字,退出这次连接。代码实例如下:

TCP时间戳客户端

第1~3行:

声明运行环境,导入socket模块。

第5~9行:

指定主机地址、工作端口号、接收缓存的长度。HOST和PORT共同组成ADDR,体现的就是上面我们所说的”主机-端口对“。这里的HOST为服务器端所在主机的地址,由于我是在本地进行通信测试的,所以地址设置为127.0.0.1(localhost)。在实际网络通信的时候,根据具体的情况进行相应的修改。客户端填写的PORT必须与服务器填写的PORT对应才能正常通信。

第11~12行:

创建套接字 ,主动调用并通过connect()连接到服务器。

第14~25行:

进行无限循环:客户端填写要发送的消息,发送后等待接收服务器的回复,接收到结果后将结果打印。当客户端输入的内容为空,或者服务器断开连接、客户端接收失败时,即退出循环,调用close()函数,关闭客户端的套接字。

同样的,发送消息前,我们需要对数据进行编码,接收的结果,也需要进行解码后才能正常显示出来。如果我们想要将代码改成相应的ipv6的形式,我们只需要把HOST改成“::1”,sock_family改成AF_INET6即可。

UDP通信

1. 创建UDP服务器

UDP服务器实现的功能与TCP基本一致,主要的区别在于UDP服务器不是面向连接的,所以只需要等待客户端的请求,回复消息即可,不需要将成功连接的客户端“转换”到一个独立的套接字的操作。示例代码如下:

UDP时间戳服务器

第1~4行:

声明运行环境,导入socket模块和time.ctime()。

第6~10行:

与TCP相同,指定主机地址、工作端口号、接收缓存的长度。HOST和PORT共同组成ADDR,体现的就是上面我们所说的”主机-端口对“。服务器端的HOST为127.0.0.1,表示它使用本地主机地址。

第12~13行:

创建套接字 ,把套接字绑定到服务器地址,绑定后直接等待接收,不需要监听。

第15~24行:

进入服务器的无限循环,不断等待接收客户端的连接。在第17行,使用recvfrom()接收消息,同时获取通信客户端的地址对信息。紧接着把消息解析出来,添加时间戳,经过重新编码成ASCII字节后,通过sendto()发送回去给客户端,此时由于服务器没有与客户端维护连接,所以要指定发送的地址对信息。同样的,在这个程序里,第24行不会执行,只是用于提醒编写程序的人,在使用这一套程序时,必须要考虑到合理科学的退出方式,正确地调用close()方法。

2. 创建UDP客户端

原理非常简单,上面都有提及到,就不作详细说明了。直接贴代码:

UDP时间戳客户端

关于服务器退出的问题

最后再提以下服务器退出的问题。在开发中,一种相对比较友好的退出方式是:将服务器的while部分放在一个try-except的try子句中,并监控EOFError和KeyboardInterrupt异常,这样就可以在except或者finally子句中关闭服务器的套接字。


作为交易员,交易的核心是什么,怎么理解的?

交易的核心就是:轻仓多品种分散,入场试错,截断亏损,让利润奔跑。

无数的人被少数短期暴富的故事吸引,从此走上了一条艰难的交易修行之路。

交易行业,九死一生,每个人的悟性不同,悟道的时候也不同,交易之路每一步都算数,很多人其实是背上负债的行囊继续上路。

一开始,大家都认为交易只要掌握了一定的交易技术,赚钱就像吃饭一样简单,信手拈来,把市场当成取款机,从此走上人生巅峰。

但是当你真正能够盈利以后,你会发现,交易其实就是一个靠天赏饭的游戏。

你唯一能作的就是尽人事,听天命。

因为就算你有一套能够盈利的交易系统,如果市场不来行情,你一样得亏,而市场什么时候来,没人知道,你只能控制好风险,等风来。

所以你要在风来的时候,控制好风险,所谓的交易高手,无非是比普通交易者更能控制好风险,你不要为利润而交易,要为安全而交易。

利润是市场给的,不是你的技术和能力给的,好多人认为盈利需要靠自己技能,其实这点是错的,市场是随机的,市场有不是涨就是跌,你买对的了市场自然给你利润,所以盈利是市场给的。

你只要保证自己能活着,不管行情怎么变,你都死不掉,到最后你会发现其实赚钱自然就来了,而且是稳定盈利的那种。

如果你总是因为利润去设计交易,你就会陷入重仓交易,频繁交易,亏损死抗,浮亏加仓,赚了点就跑等等错误的交易行为,最终必然失败。

市场走势是不确定的,你不知道哪个品种会出现行情,所以你需要轻仓多品种分散,入场只是一个试错的开始。

市场走势要么趋势,要么震荡,而趋势行情不常有,大多人驾驭不了趋势跟踪,因为它反人性,你想成为赚钱的少数人,就要坚定的与趋势为伍。

因为交易的核心优势来源于你在趋势行情中持有仓位,而截断亏损,让利润奔跑是趋势跟踪的最佳手段。

不管你是采用主观预测的方法入场,还是技术入场,还是夜观天象的,入场都不重要,因为入场环节本身就是一个试错的过程,跟你是不是趋势跟踪没有矛盾。

入场以前你可以有自己的预测,但是市场根本不会管你怎么预测,你的预测在市场走势面前毫无作用。

有些人认为,通过分析基本面,研究技术指标和自身的主观经验,可以提高预测的准确率,提高交易的胜率,也有人认为,价格完全不可预知,胜率的提高来自于牺牲盈亏比。

这两个观点的争论古已有之,包括经济学家,诺贝尔经济学奖获得者也在争论。

但是,交易是否成功,重点都不在此,重点在于你入场以后如何处理你的持仓,亏了怎么办,赚了又怎么办,在大多数都被挡在简单的入场关。

对交易系统的认知层次较高的人,交易形式并不重要,一招一式都返璞归真。相反,即便是圣杯在手,没有内功催动,也将无法走到最后。

你只要保证自己能活着,不管行情怎么变,你都死不掉,到最后你会发现其实赚钱自然就来了,而且是稳定盈利的那种

入场以前你可以有自己的预测,但是市场根本不会管你怎么预测,你的预测在市场走势面前毫无作用。

这两个观点的争论古已有之,包括经济学家,诺贝尔经济学奖获得者也在争论。

交易的底层逻辑是什么?

洞见交易的底层逻辑,你才有成功的可能。

底层逻辑就是事物运作的基本规律,人和人最大的不同,就是底层逻辑的不同。底层逻辑,能决定一个人的思维模型、行为特点、能力结构,甚至能决定一个人的命运。

巴菲特说,要想彻底了解这个世界,有一个好办法:先把本领域的事情研究透,挖出其中的底层逻辑,只要你能做到这一步,就很容易搞定其他领域的事。

如果你依然无法参透世界,那是因为你对自己的领域悟得还不够透。只要你能挖掘到底层逻辑,你就可以窥见整个世界的真相。

交易领域也是如此,大多数人都在研究各种技术分析,没有悟透技术分析的底层逻辑,整个交易生涯都在交易的入场关徘徊,注定死路一条。

交易的底层逻辑就是截断亏损,让利润奔跑。

很多交易高手也都是用趋势跟踪的方法实现长期稳定的收益。而具体的实现方法可以不同,因为每个人性格,风险偏好不同,所以你要去打造属于自己的交易方法,当然你也可以参考别人的。

华尔街没有新新鲜事,历史总是会重演,因为人性永不变,只要市场存在波动,趋势一定会产生,交易大道历史已经证明并给出,我们要作的是就是认可并一致性的执行,而不是各种创新。

市面上有上百种交易策略,大多都是昙花一现,只有趋势交易才能长期稳定获利,趋势交易理念才是真正的王道。

交易想要盈利靠的是系统化交易,就是处理收益和风险的能力,入场后亏损了怎么处理,盈利后怎么处理的能力,至于基本面还是技术面那只是系统化交易中中的一环,比如有些人通过均线这个指标来指导入场出场是可以的,但这不是全部。

真正能在市场上取得成功的,并不是那一些高胜率的人。

实际上他们大多数时间的都在经历一连串的小亏损,然后在大约1/3的情况下追到一波趋势行情,从而大幅盈利,然后覆盖前面的那些小亏损,从而保证在整体上获利。

很多人都在追求各种各种高胜率的技术分析方式,我见过很多交易的十几年二十几年的人,还在用着非常复杂的交易系统,一个简单的入场信号,他们都要叠加各种理论去相互验证,得到确认的结果才会入场。

但是成功的交易者都知道,入场仅仅是一个试错的开始,大道至简,简单才是更有效的。

技术分析有用吗?

作为作来人,我要告诉你,技术分析没啥用,你会发现,技术分析你研究得越深,最终亏的越多。

技术分析是一个坑,每个交易新手都会经历一遍,记得当初的我,总是在追求极致的技术分析,我认为只有把技术分析练好了,我的交易就能稳定盈利。

然后我花了大量的时间,把市面上所有的有关技术分析的理论都研究透,胜率也提高了,入场点也找准了,可是就是赚不到钱,明明胜率提高了,进场了总会浮盈,但就是赚不到钱。

直到后来,我认知到,市场走势是不确定的,技术分析并不能预测未来行情走势,真正让你的赚钱的核心是,你入场后如何处理你的单子,你赚了怎么办,亏了怎么办,你是不是能够作到截断亏损,让利润奔跑。

市面上的技术分析,种类繁多,分析面广泛,涉及各种知识,散户不花几年时间,都不能把基础概念学明白,即使所有概念了然于胸,依然不能稳定盈利,多数以不断止损收尾。

各种流派,各种五花八门的方法,有预言家,梦想家,实用主义者,从魔幻级别的占星术到周期分析,波浪理论,形态分析,基本面分析,资本面分析,江恩理论,到各种技术指标和成交量分析等等,不一而足。

洞察力比较低的人就会花费很多的时间和精力在里面出不来,曾经我也是这其中的一份受害者,只有少部分人可以跳出这个怪圈,开始顿悟交易的本质,每想起自己之前走过的那些弯路,踩过的那些坑,自己能走出来实在是万幸的。

更可恶的是,在散户已经努力学习应用各种技术而交易持续亏损的时候,一些大V、专家站出来,打着帮助散户的名义,指点江山,继续收割散户。

在你学习后无法做到稳定盈利,又有一些大V、专家不断在你耳边吹风,告诉你你的交易系统还不够完善,让你不断质疑,质疑自己学的还不够,有些悟性高的交易者,渐渐终于开始质疑这些所谓的技术本身。

如果你是想通过技术分析,试图找到某种交易圣杯,那么就是死路一条。所谓的交易圣杯,不是拥有无敌的方法,而是在面对不确定的走势面前,拥有坚不可摧的信仰。

一套交易系统就是一个观察视角,比如你用20的均线,你就是以20日的视角给混沌的走势添加自己观察的角度。

在你的角度来看,市场被你分为了两部分,均线以上做多,均线以下做空,那么结果也是分成两部分,盈利的行情和亏损的行情。

而这部分盈利的行情就是你这套交易系统的优势区,亏损的行情就是你这套系统的磨损期。不管你如何设计你的交易系统,你总会逃不过磨损期。

交易系统的不完美是常态,关键在于取舍。任何一套交易系统都不可能在所有的行情中赚钱。

接受自己交易系统的优点和缺点,明白自己交易系统的优势区和不利区分别在哪里,你才能够在不确定的走势中坚持执行自己的交易规则,这才是让你稳定盈利的根本。

90%的人根本不知道什么才是真正的技术分析,技术分析只能解释过去行情,没办法预测行情。

大多数人研究了很多年的技术分析,基本上涉及到的都懂,但就是不赚钱,所以就质疑技术分析没用。

这是因为大多数人的技术分析都用错了,他们都试图通过技术分析找到最佳的入场信号,预测行情走势,但市场是不确定的,不管你技术分析研究得多透彻,你就是没办法去找到确定性。

技术分析只是是你交易逻辑的载体,你想盈利,靠的不是技术分析,而是处理风险和收益的交易技术。

所有的技术指标,价格形态都是K线的数据体现,K线先变化技术指标才会变,所有的技术指标都是滞后的,技术指标只有解释行情,不能预测行情。

基本面决定了价格走势,这是毋庸置疑的,供需影响价格,当供大于求,价格下路,当供小于求,价格上涨,比如小麦减产,必定会导致价格上升,反之价格就会下降。

问题在于你如何能比别人能更准,更早,更全面的掌握基本面信息,影响人们的判断是多方面的,所以通过研究基本面是很难精准的去把握价格走势的,这也是为什么很多基本面分析师本身自己并不交易;

交易想要盈利靠的是系统化交易,就是处理收益和风险的能力,入场后亏损了怎么处理,盈利后怎么处理的能力,至于基本面还是技术面那只是系统化交易中的一环。

只有当某一刻,你真正认识到走势是不确定的,不管你怎么找,就是找不到确定的是入场点,没有谁可以预测下一根K线是涨是跌,这个时候,你才会真正的走进交易的大门。

你会开始思考,既然走势是不确定的,那我怎么赚钱?你会把精力放在研究如何更好的出场上,思考入场以后赚了怎么办,亏了又怎么办?

这个时候,一般有两种思维模式。

一种是:亏了死扛等回本,赚了一点就跑。

还有一种是:亏了就果断止损,赚了就拿着让利润奔跑。

前一种是震荡思维模式,后一种是趋势跟踪模式,新手一般都是前者,如果你认可并坚定的执行后者,那么恭喜你,你已经战胜了大多数人。

趋势交易选择的关键进场点位突破还是回调进场?

趋势交易的入场点,一般有两种,要么突破直接入,要么等回调再入,我建议前者。

虽然突破入场有可能遇到假信号,但是回调再入,也一样可能遇到假信号,市场是不确定的,不管你从哪里入,都有可能亏损。

但是回调再入有个问题,你不知道哪里可以获得支撑,而且回调以后谁告诉你还能回来,万一转变行情走势了呢?

入场早了被套,入场晚了跟不上,所以交易时机也很关键。

利弗莫尔也曾说过:“无论怎样,我都会耐心等待股市到达我说的关键点才出手,那些关键点是我以前的交易时机,这种方式让我总能从交易中获利,无论何时,我都会鼓起勇气,保持耐心,等待这样的信号,从不例外”。

利弗摩尔的交易逻辑核心其实就是突破交易,追求最低阻力方向顺势而为。

利弗摩尔花了近40年建立起一个交易系统,它的本质是:追求市场阻力最小的方向。入场方式是典型的突破入场,突破前高后买进,突破前低后卖出,就是让投资者闻风丧胆的追涨杀跌的交易模式。

时至今日,突破交易仍然是很多顶级交易者的入场方式,因为突破对于趋势启动来说至关重要,追涨杀跌这种方式很反人性,只有当你对趋势跟踪有了深刻的理解时,你才能够自由运用。

趋势跟踪必须是果断迅速的,因为追踪趋势需要高风险控制,要控制止损,止损必须迅速果断。

任何一波行情的启动初期,都难以通过对早期市场走势作出判断,接下来的市场将如何发展没有人可以知道。

但是趋势的启动有个明显的规律,这个规律就是,市场需突破至最小阻力水平,即需先创下新高,然后一次又一次的高点和一些小的回调,构成了整个趋势。

因此我们的交易逻辑可以在最小的阻力水平突破之后的位置入场试错。

若为趋势,维持或增加仓位,若价格反向跌破止损位,就在亏损的时候认错出场,停止亏损。

市场有无数种走势,我们没有办法去抓住所有的行情,每一个人只能去把握属于自己的机会,弱水三千,只取一瓢,所以我们必须去设计一套交易规则,耐心等待信号。

属于我们的交易规则,我们才入场交易,不属于我们的交易规则,即使行情再好,错过也不可惜。

交易是自由的,没有人可以限制你,但是交易想要成功,靠的是你极强的自律能力,你需要通过设定交易规则来限制自己的自由,不可随心所欲的交易。

所谓的自由,不是随心所欲,而是自我主宰。

交易也是如此,到了你的入场规则你就入场,到了你的止损规则,你就止损,盈利了,没有触发你的出场规则你就持有,让利润奔跑。

为什么理查德丹尼斯搞出一个机械交易系统给海龟,这么确定一定能赚钱?

想当初,我刚看到海龟交易法则时,读完以后也是一脸不屑,这不就是追涨杀跌吗,这不是找死吗,再说了,他把这套交易系统公布出来,全世界那么多人都知道了,肯定失效了,没用了。

然后就丢在一边,自己又亏了几年,随着自己的交易认知水平上来以后,才慢慢认识到海龟的精髓,然后又重新拿起来再细细品读,发现这几年走的弯路,人家在里面早早就给你总结出来了,只是你当初看不懂而已。

海龟交易这套系统一直是有效的,只是能够驾驭他的人很少。海龟交易系统是一套完整的具有加仓策略的趋势跟踪交易系统,交易系统越简单,执行起来就不那么简单。

因为它抓的是大级别的趋势行情,而这种大级别的趋势行情一年也就两三次,你会经常连续亏损大半年,然后一波全部赚回来创新高,更极端的,也会出现连续小亏两三年,然后一个月全部赚回过去的亏损。

这种交易系统注定是不适合大多数散户的,因为散户是没有耐心的,三个月不赚钱就会抛弃,如果你要用它的逻辑,可以进行一定的优化升级。

当然国内外很多基金的策略也都有配置海龟策略,因为他们追求的是长期稳定盈利,并不看短期。

投机市场几百年,交易大道早已确定,我们要做的不是创新,而是坚定的去执行。

很多人总是让我推荐一本有关交易领域的书,海龟交易法则无疑是我的首选。海龟交易法则这本书也被评为最伟大的5本教育书籍之一。

有些书讲策略讲指标讲各种圣杯,有些书侧重讲作者自己的交易经历,希望引起共鸣,只有海龟交易法则,把一套完整的交易策略展现在世人眼前,他清楚的展示了如何构建一套具有增项收益预期的交易系统和逻辑。

海龟交易法则带着傲慢向世人宣布,稳定获利的策略就在这里,拿去执行就能赚钱。

但是我经常听到的是海龟交易法则用的人太多了,早已经失效,海龟交易法则只适用于以前的那种市场,如今的市场早已经变了。真理总是掌握在少数人手中,这种法则太多人知道了根本不会起作用。

其实海龟交易法则从来没有失效,因为人性从来没有改变,华尔街没有新鲜事,我认识的国内包括国外的交易大牛,机构顶级交易者,他们的交易策略很多也都是从海归交易法则演变而来的。

海龟交易法则之所以很多人没办法坚定的执行,就是因为海归交易法则是趋势跟踪策略,正确率低,经常会遇到连续亏损,而且它有加仓策略,所以导致它的回撤也就相对较大。

它是一套反人性的交易系统,但是交易你想稳定获利就必须要跟大多数人不一样,你就必须要反人性。

正如作者柯蒂斯所言:重要的不是交易系统,而是交易员执行交易系统的能力。

海龟交易法似乎在嘲笑那些鄙视它的,它的交易系统清晰可见,它从未改变过,看它的人们来来往往,但又有多少人能够真正的理解并能坚定的执行呢?

我经常说适合你的交易系统才是最好的交易系统,因为只有你自己去摸索出符合自己的风险偏好的交易系统,你在实战中才能更好的去执行。

趋势交易中如何应对错综复杂的线图走势?

趋势交易遇到震荡行情出现连续止损是正常的,很多人受不了,就会经常干预修改自己的交易系统,其实这不过是徒劳无功。

不管你怎么优化改进,只要你是趋势跟踪策略,必然会有一波震荡行情会让你连续亏损。

我曾经说过,连续止损是好东西,它验证是你对趋势交易的忠诚。

大多数人因为受不了连续止损,所以坚持不了趋势交易,正因为大多数人坚持不了,所以趋势交易才能长期有效。

趋势交易遇到连续止损,有三种处理方式:

新手:停止交易。

大多数新手还没有形成自己的交易系统,当他们认为当下是震荡行情的时候他们就会停止交易,但如果你停止交易,那么你有可能错过后面的大行情。

中手:去小周期寻找交易机会。

比如在日线级别的震荡,在15分钟级别来看也是一波小的趋势。这些人不会放过任何的交易机会,他们会尽可能的去缩小交易周期,在日内小级别上去寻求各种交易机会,很容易陷入频繁交易,最终也是得不偿失的。

高手:直接趟过去。

管他震荡不震荡,他们有了一套自己的交易系统,有了一套自己的交易规则,所有的信号都是一视同仁,在他们的眼里没有所谓的震荡和趋势,他们有轻仓分散,有良好的资金管理,无所畏惧,不管震荡多久,他们都能够很好的小亏损活着。

他们知道行情是不确定的,未来的走势是不可预测的,他们知道盈亏同源,没有谁可以知道震荡何时结束,趋势何时开始,所以他们会坚定的一致性执行自己的交易系统,只要没有达到自己的最大回撤,他们就会坚定的执行。

既然我们没有办法提前判断什么时候是趋势,什么时候是震荡,那么我给的建议就是强行包容。

从本质上而言,当你的交易系统的交易效率已经达到了一个极限值之后,任何对系统的修改,都是自己在解决一个问题的同时引发出另外一个新的问题。

如果你不断的修改来修改去,永远也没有一个尽头,永远不可能达到一个最佳的状态。

对于趋势交易者,连续亏损是正确的,正因为有连续亏损,所以才让大多数人有了心态问题,没办法坚持一致性执行,最终导致落败。

想当年,当我历尽千辛万苦,好不容易设计出来了一套具有正向收益预期的交易系统,也进行了大量的历史回测,觉得没问题了,以为这次一定能成,然后开始实盘交易,没想到一上实盘就遇到连续3个月的盘整行情,导致我一上来就亏损。

这让我心情很低落,但是我没有放弃,开始分析其中的原因,然后再优化修改,没想到第4个月就出来了大行情,但因为我修改了原来的交易系统,所以导致只赚了一点小钱。

如果我没人修改原来的交易系统,肯定是大赚,把过去三个月的亏损全部赚回来,还有盈余。

所以即使你的交易系统很完善,但如果没有执行力,也不能取得收益。

我经常说一致性执行交易员的最后一关,因为人性是很难战胜的,人性会追求完美,经常亏损就会怀疑是不是自己的交易系统失效了,然后就会干预,从而破坏一致性执行。

交易做到了不预测、只跟随,后面应该怎么做?

市场走势是不确定的,不预测,只跟随,核心就是:入场试错,截断亏损,让利润奔跑。

作交易要有概率思维,要有试错的逻辑,入场以后如果不是趋势,就设好止损离场,如果是一波趋势,就是持有让利润奔跑。

止损很多人作得到,但是让利润奔跑大多数人作不到,因为跑着跑着利润就没了,或者跑着跑着盈利变亏损,所以很多人会选择主动止盈。

但只要你主动止盈了,你就违背了交易的本质,最终你是很难赚到钱的。

不预测,只跟随,说的是市场走势是不确定的,没人可以预测,走势为王,不要与市场作对,跟随市场才能赚钱。

你可以有你的预判,这个只能作为你入场交易的依据,但是如果市场走势与你的预判相反时,以市场为主,果断止损,千万不要再去找各种理由让你死扛亏损,亏损加仓。

你的预判,在市场浩浩荡荡的走势面前一文不值。

为什么说市场不可预测?

市场行为的基本动力相当简单,任何市场上只有三种主要力量,即认为价格低估的交易者,认为价格高估的交易者,以及注意观察和准备决定价格是高是低的交易者。

实际上第3种人是潜在的力量,支持交易者价格高低信念的东西通常不重要,因为大部分人是以没有纪律和组织的随机方式交易,人总是善变的。

我们不知道的事情也很多,而且除非我们学会解读所有交易者的心理,否则我们永远也不知道未来的行情怎么走。

比如我们不知道有多少交易者,可能在场边观望和准备入市,我们不知道他们想要买进多少,卖出多少,我们也不知道有多少交易者随时会改变方向。

交易高手不再预测行情而是跟随,走势为王,你的所有预测,所有研究,在市场走势面前一文不值。

在我刚开始交易的前几年,觉得交易不预测那不是扯淡吗?你做交易入场就是第一步,而入场没办法预测正确怎么交易?

这种思维是大多数交易新手的思维,当你认识到交易是不可预测的,入场只是一个试错的开始的时候,这种底层思维开始转变的时候,你才开始真正走进投机交易的大门。

只要市场存在,波动一定会发生,趋势总是存在,但是趋势什么时候会到来?没有谁可以提前预测,所以我们只能入场去试错,试对了我们就持有,试错了我们就止损。

为什么很多能够长期稳定获利的交易高手,总是提到趋势跟踪?

跟踪二字本身就代表了不预测,因为价格才是最真实的存在,趋势什么时候会发生我们不知道,但是我们只要坚持在会发生趋势的必然形态出现时入场,我们就一定能够跟上。

如何确定合适的止损点位?

常见的止损方法有以下几种:

1.最大金额止损:

你得明确自己能接受的最大亏损是多少,比如有些人单笔最大止损为1%,你10万的账户,每次止损就设1000。

2.通过ATR来设定止损点

ATR是这个品种最近一段时间的平均波动大小,能反映市场的波动性,你可以根据ATR的数值来动态调整止损点。比如对于波动大的品种,你止损跟着大,然后仓位降下来,对于

波动小的品种,你止损就跟着小,然后仓位大一点。

3.技术止损:

常用的就是找支撑位和阻力位来设定止损点,支撑位是价格容易反弹的位置,阻力位则是价格容易回调的位置。你可以把止损点设在支撑位或阻力位的稍外侧,给市场留出一点

波动空间,减少因为小波动就触发止损的情况。

这种本人不推荐,因为支撑位和阻力位是比较主观的东西,你在盘中根本不知道哪里有支撑和阻力。

4.分段止损:

就是当价格下跌到一定程度时,先减仓一部分,如果价格继续下跌,再清仓。这样既能降低亏损幅度,又能给市场留出一些回转的空间。

5.跟踪止损:

当你盈利时,可以不断提高止损点,锁住已有收益。这样,就算后续市场回调,你也能在更高的价位止盈,保护你的利润。

止损是我们唯一可以控制的,风险第一,其次才是利润,如果你连风险都控制不好,不管你赚了多少钱,有一天还是会还给市场的。

止损不可过大,也不可过小。

大止损虽然不容易扫损,胜率高,但是亏一次可能要吃掉你很多利润,而小止损虽然每次都小亏,但是很容易就扫掉了,会拉低你的胜率,积小成多,也会慢慢吃掉你的本金。

一套交易系统并不意味着你的单次止损减少了,整体风险就会减少。

因为总体风险并不只取决于止损本身,是由三方面决定的。

首先是你的仓位大小,其次是你进场的频率,第三是你的止损点,这三个因素决定了你的整个交易系统整体风险的大小。

一个交易系统,如果仓位固定,它能够同时减少止损和进场次数,那么它将降低你的总体风险。反之,如果你不能降低止损的频率,那么你的风险很可能不会降低,反而会变得

更大。

仓位和止损的设计有三种方式供你选择。

1.重仓小止损

这种方式一般是日内交易者比较喜欢的,日内短线,快进快出,不隔夜,止损小,所以仓位设计可以偏重一点,这样整体的风险也是可控的。

2.重仓大止损

这种方式一般是基本面爱好者喜欢设的,他们看好一个方向,就重仓赌一个方向,他们觉得短期回调只是暂时,只要扛下去就会回来,所以他们的止损都会设得比较大。

这种方式不会频繁止损,如果赌对了方向,一次收益也很可观,但如果方向错了,一次亏损可能就会抹平你前面的所有收益,所以不推荐。

2.轻仓大止损

这种方式一般是日线级别趋势跟踪交易者所选择的方式,他们要的是较大级别的趋势行情,单子基本都会隔夜,为了防止隔夜引起的跳空风险,他们的止损就会设置的大一点,

止损大,能抓的行情也大,但是止损设置的大的同时仓位就要轻一点,防止单次止损过大,还没等来你要的趋势行情就要爆仓了

3.轻仓小止损

这种方式是三种方式比较稳妥的,如果你做的是级别大一点的行情,一开始账户还没有盈利,可以选择这一种方式,等你的账户盈利了,再放大止损去抓取更大的行情,因为盈

亏同源,你止损小承担的风险小,那么你所能抓的行情就很有限,当你有了一定的盈利以后,适当的放宽仓位也是一种不错的选择。

当然如果坚持这种方式做下去也是不错的,这样你的资金净值曲线看起来就相对平滑一点,不会出现大起大落,依靠时间的力量去慢慢赚钱,追求长期稳定的收益。

无论采用哪种止损方式,最重要的是坚持纪律和原则,一旦设定了止损点就不要轻易改变。

交易是一场持久战,保护本金才是生存和发展的关键。
粤ICP备18147235号

粤公网安备 44030502008378号