分类
外汇交易 外汇基本面

为什么 MT4 对几乎每一位外汇交易者都是完美的

例: B站股票 Sell Call(1月7日截图)

深入理解pts,dts,time_base

来源于 https:// blog.csdn.net/bixinwei2 2/article/details/78770090

PTS:Presentation Time Stamp。PTS主要用于度量解码后的视频帧什么时候被显示出来

DTS:Decode Time Stamp。DTS主要是标识读入内存中的bit流在什么时候开始送入解码器中进行解码

首先,不同的封装格式,timebase是不一样的。另外,整个转码过程,不同的数据状态对应的时间基也不一致。拿mpegts封装格式25fps来说(只说视频,音频大致一样,但也略有不同)。非压缩时候的数据(即YUV或者其它),在ffmpeg中对应的结构体为AVFrame,它的时间基为AVCodecContext 的time_base ,AVRational。

能不能具体解释一下short, long, call, put?

期权交易 (分为四种: Buy Call, Sell Call, Buy Put, Sell Put)

Buy Call : (买涨期权- 你作为投资者有履约权利,但是没有履约义务)

例:B站股票Buy Call(1月7日截图)

如上图截图日期B站股价为23.10美金, 你现在和卖家(Robinhood)签订一份合约购买B站100股的期权, 在10天后的1月17日,无论B站股票涨跌你都以25美金每股收购。但是在此期间你要支付每股0.33美金来购买这个权利, 100股便是33美元。对于买家来说1月17日如果B站股票涨到了25美元以上, 那么卖家既可以赚股票上涨的钱,也可以赚到33美金的固定收入。对于买家来说, 只要股票在1月17日前涨到25.33 美金以上就有收益, 如果低于股票价格25.33 美金,那么就是亏损(可以选择放弃权利, 损失33美金)。

例如1月17日, B站股票涨到了28 美金每股, 那卖家必须以25美金合同价格卖给你100股。于是你的收益是 : (28-25)100-33 =267美金, 那么收益率是267/33*100%=809%

Sell Call(卖涨期权- 你作为投资者无履约权利,但是有履约义务)

例: B站股票 Sell Call(1月7日截图)

如上图截图日期B站股价为23.10美金, 你现在和买家签订一份合约购买B站100股的期权, 为什么 MT4 对几乎每一位外汇交易者都是完美的 在10天后的1月17日,无论B站股票涨跌你都要去市场上购买100股B站再以25美金每股卖出给买家。但是在此期间你收到每股0.33美金的权利金, 100股便是33美元。对于你来说1月17日如果B站股票只要不到25美元, 那么你可以空手套白狼拿到33 美金权利金

例如1月17日, B站股票涨到了28 美金每股, 那你家必须以25美金合同价格卖出100股。于是你的损失是 : (28-25)100-33 =267美金(随着股价上涨,损失可以无限大)

Buy Put(买跌期权- 你作为投资者有履约权利,但是没有履约义务)

例: B站股票 Buy Put(1月7日截图)

如上图截图日期B站股价为23.10美金, 为什么 MT4 对几乎每一位外汇交易者都是完美的 你现在和买家(Robinhood)签订一份合约购买B站100股的期权, 在10天后的1月17日,无论B站股票涨跌你都以25美金每股卖出。但是在此期间你要支付每股2美金来购买这个权利, 100股便是200美元。对于你来说1月17日如果B站股票跌到了23美元以下, 那么你就可以开始收益,跌越多收益越多。如果B站股价高于25美金,你可以放弃权利,损失200美金权利金。

Sell Put(卖跌期权- 你作为投资者无履约权利,但是有履约义务)

例: B站股票 Sell 为什么 MT4 对几乎每一位外汇交易者都是完美的 Put (1月7日截图)

如上图截图日期B站股价为23.10美金, 你现在和卖家签订一份合约购买B站100股的期权, 在10天后的1月17日,无论B站股票涨跌你都要去市场上购买100股B站再以25美金每股买入。但是在此期间你收到每股2美金的权利金, 100股便是200美元。对于你来说1月17日如果B站股票只要不到跌到23美元以下, 那么你可以空手套白狼拿到200美金权利金

例如1月17日, B站股票跌到了20 美金每股, 那你家必须以25美金合同价格买入100股。于是你的损失是 : (25-20)100-200 =300美金(随着股价下跌,损失最高2300美金)

重点!重点!重点!建议阅读并且理解完上面期权基本交易概念!

期权套利交易

例: B站股票 Sell Call(1月7日截图)

这个套利交易本质是击鼓传花,不建议买短期期权进行套利,高收益对应同时是高风险。期权的价值相对股票涨幅是超涨的,对应的跌幅也是超跌的。所以本身选择的股票就需要慎重考虑!

VS Code和Visual Studio哪个合适写C++?

十月份 ​

用vscode开发c++,你需要先学gcc, makefile, cmake, c++的编译过程,如何链接库,如何引入头文件,以及如何配置vscode中的launch.json, task.为什么 MT4 对几乎每一位外汇交易者都是完美的 json和c_cpp_properties.json。这些都弄完可能需要好几天,可是你得踩完这些坑,再去用IDE,日后才会省心。

如果你的 C++ 项目比较简单(比如只是命令行程序,不涉及UI),或者说必须跨平台(比如需要在 Linux 上运行),那么 VSCode 就足够了。虽然 VSCode 并不是功能完整的 IDE,不过应付这样的需求是没问题的。更何况敲命令、手写 Makefile 或者 CMakeList 本来就是 Linux 编程的必备技能。

如果你的项目很大很复杂,那么 VSCode 可能会力不从心。这时候你需要更专业的 IDE。简单来说:

  • 如果你的程序只在 Windows 平台上运行,那么首选 Visual 为什么 MT4 对几乎每一位外汇交易者都是完美的 Studio;
  • 如果你的程序需要在 Windows 以外的平台运行,那么首选 CLion。

另外,因为 Windows 平台对命令行极不友好,所以新手使用 VSCode 在 Windows 下编译运行可能会有些麻烦。建议直接用 WSL 环境,体验会更好。

强化学习之基于gym环境的DQN算法实战(Pytorch)

Ton10 于 2020-12-08 20:46:16 发布 4143 收藏 63

实战内容:

一、实际效果:

二、DQN算法:

NIPS-DQN:

Nature-DQN:

4、for episode in range(M):

6、 for step 为什么 MT4 对几乎每一位外汇交易者都是完美的 为什么 MT4 对几乎每一位外汇交易者都是完美的 in range(T):

7、 通过贪心策略选中下个动作action,其中Q(s, a)来自于eval_net的前向推理。

10、 当记忆库存满之后,抽取batch个大小的数据(sj, sj', aj, rj)送入2个网络中

11、 以损失函数L = *( rj + * max(Q2(sj';W_)) - Q1(sj,aj;W))^2 进行训练

12、 每隔C步,更新target_net的参数W_ = W

三、gym环境编写:

step1:创建新式环境类并继承于gym.Env,然后最重要的是写出基础六大方法: __init__、seed、step、reset、render、close 。这里要注意一下,一般step的输出为s1,r,is_done,info,s1一般都是numpy数组,其输入动作一般都是python数字。

step2:在这个基础上,还可以根据实际情况增加新的方法,比如用action如何控制状态啊这种。

step3:在主函数中导入新式环境,如果调用gym本身写好的环境,用env.make('Cartpole-v0')。

Note:这里说一下2个不常用但有时候会见到的2种用法

①:这里特别说一下这里的seed()方法,我们在gym自己编写的环境中总会看到seed这个方法,比如在CartPole-v0中:

这里的self.np_random是一个类的实例化对象,可以调用许多随机化的方法,比如uniform:

等效于random.uniform的作用。

再来说这个seed,这个seed是随机种子,和我们之前认知的一个道理,设置了相同的随机种子之后,下一步的随机化产生相同的结果,用完即消失。

比如还是这个CartPole环境,我们都知道初始化reset是随机位置:

用了env.为什么 MT4 对几乎每一位外汇交易者都是完美的 seed(1)之后:初始位置就固定了,这就是seed()的用法。

②:env.unwrapped方法

这个方法是gym的基类Env中的unwrapped方法,功能是解除限制,比如我们的CartPole、MoutainCar不是有时间限制嘛,200步之内。那么这个东西这么一写,就相当于解除了这个限制。

下图是我绘制的gym常用的类和函数、方法:

在Viewer里绘制一个几何图像的步骤如下:
1. 建立该对象需要的数据本身。
2. 使用rendering提供的方法返回一个Geom对象。
3. 对Geom对象进行一些对象颜色、线宽、线型、变换属性的设置,这其中有一个重要的属性就是变换属性,该属性负责对对象在屏幕中的位置、渲染、缩放进行渲染。
如果某对象在呈现时可能发生上述变化,则应建立关于该对象的变换属性。该属性是一个Transform对象,而一个Transform对象,包括translate、rotate和scale三个属性,每个属性都由以np.array对象描述的矩阵决定。
4. 将新建立的Geom对象添加至viewer的绘制对象列表里,如果在屏幕上只出现一次,将其加入到add_onegeom()列表中,如果需要多次渲染,则将其加入add_geom()。
5. 在渲染整个viewer之前,对有需要的geom的参数进行修改,修改主要基于该对象的Transform对象。
6. 调用Viewer的render()方法进行绘制。

gym的常用写法:

Note:

1、在窗口中,以窗口左下角为(0, 0)。

2、常用的还有画三角形(这个注意一下,gym的三角形是有一个支点的,便于控制旋转)、矩形、线、点,具体操作和上述画圆类似。