2023年全站首发-精准获得外汇买卖时机(用群晖做平台,Python构建代码)

        现在众所周知,国内的资金投资都不太好做,不管是股票、基金、国债、理财、定额存款都没有很高的收益,既然国内不行,或者我们可以看看国外的投资方式。

        最近,在B站看到一个视频,就是介绍一种国外的投资方式"外汇",据视频中的美女所说,国外的外汇,比如美元、澳元每年都有周期性的涨跌,像美元可能因为美国大选或其他的重大事件,导致汇率变化,这时我们可以通过最基本的低买高抛的方式,来赚取外汇的福利。

a4967bfe41d5459abc16b90c5b9114ac.jpeg

 如上图,我们可以看到,在2022年6月份,美元其实是在一个低位的,这时其实就是我们能买入的好时机,而到2022年10月份左右,美元又到了一个高位,那这时我们可以抛出。

        这时,有人要提出问题了,汇率一直在变动,有没有一个方法可以在到达一个低位时,提醒我们买入;而到达高位时,提醒我们抛出,答案时肯定的,因为我们有万能的python可以为我们解决问题。

        为了能够给我们的python程序一个24小时在线的平台,我们可以利用我们手边常用的群晖NAS,因为群晖的底层系统是Linux,所以我们可以通过群晖先安装python3,来运行python程序。

        首先,用网页浏览器登录群晖管理界面,进入控制面板-终端机和SNMP(左边列拉到最后),然后点开启动SSH功能的勾,并确认端口号为22 ,然后点击应用。

371873cdb31846f2b39ea56d0d1836f2.png

注意上图标注4出的群晖IP地址。 

 接着打开我们的putty,在Host Name中输入我们群晖的域名或IP地址(上图的标注4),Port那就是上面图片的端口:22,然后点open。

aca5a2bff6e64ecaa03d7291ee893894.png

 

 然后是首次登录,会弹出如下图的界面点Accpet允许。

9a77a780a8d8486c8b8e1df1482fad64.png

进入后是这个界面,为了接下来方便运行python脚本,我们直接登录群晖的root账户,如不能登录root账户请看如下教程(https://zhuanlan.zhihu.com/p/340905701)

ccf03d7ab97344199ce119a52cfe240e.png

        可以看到显示root@DSM_Dong说明我们已经登录的root账户,这里说明下为什么不用普通账户登录,因为接下来要执行任务计划来定时运行python脚本,所以必须root账户,我已经试过了,普通账户不能正常运行任务计划。

        然后,我们还是回到群晖管理页面,点击套件中心,搜索python,安装python3套件,因为我的黑群晖是老版本6.1,所以python版本也是默认python3.5的,但是只要是python3就不影响我们使用。

f15d4f3080d74b4f96fea45462ecb1ed.png

 如果是首次安装您的套件,可能需要额外设置,看下图就可以了。

e68c937fa6b341a888a9d21c023af079.png

选择你要把套件安装的硬盘(我因为是演示,所以使用的虚拟机安装的群晖,硬盘分的小,此处每个人都不一样,通常安装在大的硬盘上或者SSD系统盘上),点击始终在此卷上安装套件,然后点下一步。

 626c038901834a12865656d032aa4c30.png

点应用即可开始安装套件。

149c9181b378442c903fb2b0b92a3c19.png

可以看到Python3套件已安装成功,我们到putty中试试看能不能运行。

 89fcd90fbc0f4dfeae333993f1316a07.png

如果出现上图的python3版本号提示那就对了,我们先按ctrl+z,退出python程序。

我们现在要安装pip,因为我们的python脚本要用到requests包,所以一定要安装pip,安装pip方法如下:

方法1:在putty中运行wget https://bootstrap.pypa.io/get-pip.py国外网站访问很慢,你可以选择慢慢等。方法2:用迅雷下载后上传到群晖,然后找到上传的目录安装pip,我现在介绍下第二个方法。

浏览器直接打开https://bootstrap.pypa.io/get-pip.py,会发现很快,可能是wget下载慢的原因,把打开的网页内容,全选复制新建一个get-pip.py(python脚本文件,安装pip的脚本),或者直接把https://bootstrap.pypa.io/get-pip.py复制到迅雷任务里,让迅雷下载,

2e5e4ef0ac2941849cf1fe2ee6290c39.png

 然后用群晖的file Station上传到一个你喜欢的目录,506933b902a4480286bf3368c671fb3f.png

然后右击上传get-pip.py,点属性,复制这个路径7388a63308424c7aaa2ac4c868d482d6.png

 putty中输入python3 +之前的路径,注意python3后有空格,这样按回车运行命令,即可安装好pip

64eee636d8c9407f87deca4ac062490e.png

在我这里有个坑,因为get-pip.py的当前版本最小只支持到python3.7,所以我们用下图红框中的网址(python3.5可用get-pip.py),再用迅雷下载后,上传到群晖并复制文件路径,再来一遍,如果你的群晖安装的python版本大于等于3.7则会直接安装成功。(注意最好把迅雷和群晖原来的get-pip.py文件删除再下载,省的搞不清版本了)

地址我放在这里方便大家迅雷下载(https://bootstrap.pypa.io/pip/3.5/get-pip.py)

 93b7e9130f664c15965c7e6a5fb57416.png

 1f99ddbf75ca4a058968a070616b486e.png

这里还有个坑,可以看到上图,下载很慢,我们可以把pip的默认源设置为国内源,我喜欢用清华源,具体如下:先ctrl+c取消安装pip,然后按如下命令操作(虽然有点麻烦,但是一劳永逸,加快安装速度,设置之后你安装任何包都很快)

配置pip源

mkdir ./.pip
vi ./.pip/pip.conf
#编辑内容:(注意:要进入linux的vi编辑方式,要先英文输入法按i 左下角有个-- INSERT --的字样就可以输入了,然后直接复制下面3句代码,右击putty窗体黑色空白处黏贴即可)
[global]
trusted-host = pypi.tuna.tsinghua.edu.cn
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
如果要保存,英文输入法下先按冒号(:),这时左下角的“-- INSERT --”的字样消失,再输入wq回车,如果输错不想保存可以按q!回车

260188e31a334a02830753f0893b85e7.png

注意上图中的INSERT字样保存时,不能存在,具体输入方法,看上面命令代码里的说明。

pip的国内源配置好后,我们可以继续刚刚的pip安装,输入:

python3 /volume2/disk2/pip_install/get-pip.py这里的红色字样替换为你刚刚上传群晖的get-pip.py

如果不出问题的话,可以看到pip很快安装成功了。(下图的successfully installed表示pip安装成功了)

9033d071a9df4eca9c6cbcdeaf633d2b.png

 上图中,我们注意到中间的有个pip的安装路径,但是它没有添加到系统环境中,我们添加一下,先直接用鼠标选中这个路径,在黑色空白处按一下鼠标右键复制下路径。

使用如下命令

export PATH="/volume1/@appstore/py3k/usr/local/bin:$PATH"

红色部分替换成你安装pip后的那个路径(如上图的红框)

 9a94bf74bad64ce4bea0f59ba033355c.png

 如果没有返回错误,那么我们的pip环境就设置成功了。我们可以输入pip命令验证下。(如下图)

 196693811c864807a84f3ebaa11cc3a2.png

 然后我们用pip安装下我们获取外汇的python脚本需要的requests库。

pip3 install requests

d8a44fe1834243dfb8bea568b3b75154.png

 至此,我们的putty上的设置完毕。

接着,我们的主角获取外汇脚本如下:

import requests
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import sys
import io


def Sendemail(subjectStr,msg):
    email_user = 'xxxxx@163.com'#填入自己发送消息的邮箱
    email_pw = 'xxxxxxxx'#填入自己发送消息的邮箱密码

    # 创建一个安全的 SSL/TLS 连接
    server = smtplib.SMTP_SSL('smtp.163.com', 465)#填入自己的邮箱的smtp域名

    # 登录到 163 邮箱账户
    server.login(email_user, email_pw)

    # 邮件内容
    from_address = email_user
    to_address = 'xxxxxxx@163.com'#填入自己接收消息的邮箱(可以和发送邮箱相同)
    subject = subjectStr
    body = msg

    msg = MIMEText(body, 'plain', 'utf-8')
    msg['From'] = Header(from_address)
    msg['To'] = Header(to_address)
    msg['Subject'] = Header(subject)

    # 发送邮件
    server.sendmail(from_address, to_address, msg.as_string())


    # 关闭连接
    server.quit()
    #print(subjectStr,msg)
    print('Email sent successfully')

def main():
    #print(sys.argv[0],sys.argv[1],sys.argv[2],sys.argv[3])
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding="utf-8")
    AUD_YN = int(sys.argv[1])#澳元
    CAD_YN = int(sys.argv[2])#加元
    GBP_YN = int(sys.argv[3])#英镑
    USD_YN = int(sys.argv[4])#"美元
    # 请替换为您自己的 API 密钥
    api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    #printList = ['USD','AUD','CAD','GBP']#"美元,澳元,加元,英镑"
    cnList = ['澳元(AUD)','加元(CAD)','英镑(GBP)','美元(USD)']
    priceList = [['澳元(AUD)',4.8,4.3,AUD_YN],['加元(CAD)',5.3,5.02,CAD_YN],['英镑(GBP)',9,8.4,GBP_YN],['美元(USD)',7,6.5,USD_YN]]#货币名称、是否买入(1已买/0未买)、抛出价位、买入价位.
    print(priceList)

    url = 'https://openexchangerates.org/api/latest.json?app_id=' + api_key
    response = requests.get(url)
    Arr = []

    if response.status_code == 200:
        data = response.json()
        rates = data['rates']
        usd_to_cny_rate = rates['CNY']
        cny_rates = {}
        for currency, rate in rates.items():
            cny_rates[currency] = usd_to_cny_rate / rate# 1外币 对 N人民币
            #rate / usd_to_cny_rate  1人民币 对 N外币
        # 打印人民币汇率信息
        print("----------当前汇率-------------")
        for currency, rate in cny_rates.items():
            for list in cnList:
                if list.find(currency) > 0:
                    print(list + ":" + str(rate))
                    Arr.append([list,rate])
                    break
        print("---------当前买卖意见----------")
        tempMsg = ""
        for ar in Arr:
            for price in priceList:
                if ar[0] == price[0]:
                    if ar[1] >= price[1]:
                        tempMsg = ar[0] + ":" + str(ar[1]) + "高于正常价位[" + str(price[1]) + "],不可买入,可抛"
                        print(tempMsg)
                        if price[3] == 1:
                            tempMsg = ar[0] + ":" + str(ar[1]) + "高于正常价位[" + str(price[1]) + "],不可买入,可抛"
                            Sendemail("请抛掉外汇",tempMsg)
                    elif ar[1] < price[1] and ar[1] >= price[2]:
                        tempMsg = ar[0] + ":" + str(ar[1]) + "低于正常价位[" + str(price[1]) + "-" + str(price[2]) + "],可买入,不要抛,不是最低点"
                        print(tempMsg)
                    elif ar[1] < price[2]:
                        tempMsg = ar[0] + ":" + str(ar[1]) + "接近最低点[" + str(price[2]) + "],可大量买入,不要抛,最低点"
                        print(tempMsg)
                        tempMsg = ar[0] + ":" + str(ar[1]) + "接近最低点[" + str(price[2]) + "],可大量买入,不要抛,最低点"
                        Sendemail("请买入外汇",tempMsg)
        
    else:
        print('获取汇率信息失败')

if __name__== "__main__":
    main()
    #输入命令:python3 E:\getForeignCurrency.py 0 0 0 1

关于我的代码的一些说明,其中的:

1.请填写自己的发送消息邮箱

    email_user = 'xxxxx@163.com'#填入自己发送消息的邮箱
    email_pw = 'xxxxxxxx'#填入自己发送消息的邮箱密码

2.请填写自己的接收消息的邮箱

to_address = 'xxxxxxx@163.com'#填入自己接收消息的邮箱(可以和发送邮箱相同)

3.# 请替换为您自己的 API 密钥
    api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

这里的api使用了Open Exchange Rates的免费API,每个月有免费额度1000次,平均下来每天可以用30+次,那么我们可以设置为每小时整点获取API,后通过Python自动比较设定好的价格区间,超过最高价和低于最低价时自动发邮件给我们,提示我们到银行APP买入卖出相应外汇。

这里我们到这个链接免费申请下API(https://openexchangerates.org/signup/free),填写下自己的姓名和邮箱即可注册,注册后请到自动打开的页面里,找到左侧的APIS,复制下你自己申请的API到我们的python代码中即可。

4.关于自定义设置买卖的最高最低价

请搜索这个脚本中的这句代码:

priceList = [['澳元(AUD)',4.8,4.3,AUD_YN],['加元(CAD)',5.3,5.02,CAD_YN],['英镑(GBP)',9,8.4,GBP_YN],['美元(USD)',7,6.5,USD_YN]]#货币名称、是否买入(1已买/0未买)、抛出价位、买入价位.

如上标注的,红色是最高价,蓝色是最低价,请自己按自己的需求修改。

5.关于这个python脚本的调用方法。

在这个脚本的最后有写,如下:

python3 E:\getForeignCurrency.py 0 0 0 1

上面标红色的是我自己的路径(这是在电脑PC端的路径,并非群晖路径,因为使用前,最好在电脑上运行代码测试下自己的邮箱和api密钥填的对不对),请按自己的实际脚本存放路径修改。

蓝色部分是相当于上面第4条备注中的绿色部分,即AUD_YN,CAD_YN,GBP_YN,USD_YN它们代表了你实际的买入情况,因为你没有买入所以就不需要接收超出最高价抛出的信息,这个参数0表示未买入,不发抛出消息;1表示已买入,需要发抛出消息,至于卖出会一直提醒你,以后有时间我在完善代码。

现在我们已经了解了这个脚本的使用方法。

我们要把它添加到群晖服务器中,让它24小时的每个整点都查询比较下外汇数据,适时的给我们提示邮件。

方法也很简单:

先把脚本上传到file station中,然后把文件的路径属性复制下。

0829851da1c74752bbb4d2f7827f356a.png

然后打开控制面板-任务计划

bd0e521606314e3998719fe733a7d0cb.png

 

然后点击新增-计划的任务-用户定义的脚本

5ae97f2295704e2bab8a66a5e4e69d14.png

接着常规-任务名称(填一个自己喜欢的任务名称)-用户账号(一定要选root),点上已启动的勾。

260f8cee002f434bb0a118d29d8e97cf.png

然后计划-在以下天中运行(每天)-运行频率(每1小时)

f5c2fac2470d4fcc845eb91f5878d3a8.png

然后切换到任务设置选项卡-填写如下信息即可。

25d957548199441eaedecc81ad9fbb6c.png

最后别忘了点确认。

        我们可以在设置后,在任务计划中,点右上的"启动"按钮启动脚本看看,如果可以成功,那就再耐心等到下个整点,看看是不是会发送美元汇率抛出的消息,如果成功了,我们可以把上图中的最后一个参数改回0,等待汇率最低谷买进消息即可。

我的教程介绍完毕,至于怎么通过银行app买入外汇,一般的银行app都有,如招行、中国银行等都有自己的外汇购汇,选择好自己的币种购买即可,记住最好是现汇购买,而不是现钞购买,因为现钞是有手续费的,算下来不合算,注意,因为汇率无时无刻的在变动,而且各种银行app中的汇率价格也不相同,大家可以多比较下,选择合适的操作,谢谢大家耐心看完本文,有任何问题都可以评论区提交给我,谢谢!

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虫鸣@蝶舞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值