BotVS趋势交易策略-RSI, 基于Python实现。

RSI简单买卖测试, 默认 70-100卖出,0-30买入

参数

代码

import math

def adjustFloat(v):
    return math.floor(v*1000)/1000;

# 取消挂起的订单
def cancelPendingOrders():
    while True:
        orders = exchange.GetOrders();
        if (not orders):
            if (len(orders) == 0):
                break;
            for j in range(len(records)):
                exchange.CancelOrder(orders[j].Id);
                Sleep(Interval);
        else:
            Sleep(Interval);

STATE_WAIT_BUY      = 0;
STATE_WAIT_SELL     = 1;
STATE_BUY           = 2;
STATE_SELL          = 3;
STATE_WAIT_SELL_ALL = 4;

State = STATE_WAIT_BUY;

def onTick(exchange):
    global State
    records = exchange.GetRecords();
    if (not records or len(records) < (RSIPeriod + 5)):
        return;

    rsi = TA.RSI(records, RSIPeriod);
    rsiValue = rsi[len(records) - 1]; #取最后一期的值为当前值
    if (State == STATE_WAIT_BUY and rsiValue >= RSIBuyL and rsiValue <= RSIBuyH):   # 买入点区间
        State = STATE_BUY;
    elif (State == STATE_WAIT_SELL and rsiValue >= RSISellL and rsiValue <= RSISellH):  # 卖出点区间
        State = STATE_SELL;
    elif (State != STATE_WAIT_SELL_ALL):
        return;

    # Buy or Sell, Cancel pending orders first
    cancelPendingOrders();

    account = exchange.GetAccount();
    ticker = exchange.GetTicker();
    if (not account or not ticker):
        return;

    # 买入
    if (State == STATE_BUY):
        price = ticker.Last + SlidePrice;
        amount = adjustFloat(account.Balance / price);
        if (amount >= exchange.GetMinStock()):
            if (exchange.Buy(price, amount)):
                State = STATE_WAIT_SELL;
    # 卖出
    else:
        if (account.Stocks > exchange.GetMinStock()):
            # STATE_WAIT_SELL or STATE_WAIT_SELL_ALL
            State = STATE_WAIT_SELL_ALL;
            exchange.Sell(ticker.Last - SlidePrice, account.Stocks);
        else:
            # No stocks, wait buy and log profit
            LogProfit(account.Balance);
            Log(account);
            State = STATE_WAIT_BUY;

def main():
    InitAccount = exchange.GetAccount();
    Log(InitAccount);
    if (InitAccount.Stocks > 0):
        raise Exception("必须空仓介入")

    while True:
        onTick(exchange);
        Sleep(30000);

BotVS趋势交易策略-RSI的更多相关文章

  1. BotVS趋势交易策略-MACD

    MACD低买高卖自动跟单滑动止损策略 , 基于Python实现. 交叉后前一柱指金叉后的第一柱的值, 交叉后前一柱指金叉前的最后一个柱的值, 滑动价格指下单时加的价格,比如买单会现价加上这个价格,卖单 ...

  2. BotVS趋势交易策略-MA均线

    1. 均线策略1号 思路:使用MA小时线,入市线金叉买入,出市线死叉时卖出.代码如下 import types def main(): STATE_IDLE = -1 state = STATE_ID ...

  3. 【海龟汤策略】反趋势交易策略源代码分享(基于BOTVS)

    策略介绍: 海龟之汤,简称“龟汤”,是个与海龟交易法则相反的交易策略,它利用了跟势交易(特别是海龟方式)在很多假突破方面的缺陷来获利(把海龟做成汤吃掉).上世纪八十年代早期,有个非常著名的交易员团体— ...

  4. WeQuant交易策略—RSI

    RSI指标策略 策略介绍 RSI(相对强弱指标),是通过一段时期内的平均收盘上涨和下跌数,计算价格上涨所产生的波动占整个波动的百分比,来分析市场买卖盘的意向和实力. 计算公式(以日为单位举例) RSI ...

  5. 用python的matplotlib和numpy库绘制股票K线均线和成交量的整合效果(含量化验证交易策略代码)

    在用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)一文里,我讲述了通过爬虫接口得到股票数据并绘制出K线均线图形的方式,在本文里,将 ...

  6. 用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)

    本人最近在尝试着发表“以股票案例入门Python编程语言”系列的文章,在这些文章里,将用Python工具绘制各种股票指标,在讲述各股票指标的含义以及计算方式的同时,验证基于各种指标的交易策略,本文是第 ...

  7. 用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略

    我的新书<基于股票大数据分析的Python入门实战>于近日上架,在这篇博文向大家介绍我的新书:<基于股票大数据分析的Python入门实战>里,介绍了这本书的内容.这里将摘录出部 ...

  8. 系统交易策略 hylt

    最令我尴尬的事情,莫过于很多朋友来到网站,不知道我说的是什么.大多数人以为鬼仆是推销软件的.其实这里理解是错的,特别是一些软件制作与经销商,更出 于推销的目的,故意夸大产品性能,模糊交易系统与一般行情 ...

  9. WeQuant交易策略—网格交易

    网格交易策略(Grid Trading) 策略介绍 网格策略本质上是一种低吸高抛的策略.标的物价格越低,吸纳的头寸越多:标的物价格越高,卖出的头寸越多.网格策略巧妙地借鉴了日常生活中渔翁撒网扑鱼的思路 ...

随机推荐

  1. IDEA使用01 创建java项目、创建web项目

    注意:本教程使用的开发环境是:(专业版) 1 创建javaSE项目 1.1 file -> new -> project 注意:如果是第一次使用,就需要配置 project SDK  , ...

  2. 二叉树 - 建立与遍历使用Java

    二叉树的遍历(traversing binary tree)是指从根节点出发,按照某种次序依次访问二叉树中所有节点,使得每个节点仅被访问一次 前序遍历:若二叉树为空,则空操作返回null.否则先访问根 ...

  3. Java创建连接池连接不同数据库

    在一个应用里面,可能涉及到连接多个不同数据库进行操作,而每次连接写不同的实现会很麻烦.前面已经会了用JDBC连接数据库,那么利用反射和工厂模式,可以实现连接不同的数据库,这样处理起来将会很方便.同时建 ...

  4. Hadoop笔记——技术点汇总

    目录 · 概况 · Hadoop · 云计算 · 大数据 · 数据挖掘 · 手工搭建集群 · 引言 · 配置机器名 · 调整时间 · 创建用户 · 安装JDK · 配置文件 · 启动与测试 · Clo ...

  5. 游戏里的动态阴影-ShadowMap实现原理

    ShadowMap是比较流行的实时阴影实现方案,原理比较简单,但真正实现起来还是会遇到很多问题的,我这里主要记录下实现方式 先看效果 凹凸地形上也有阴影 实现原理 ShadowMap技术是从灯光空间用 ...

  6. tensorflow l2_loss函数

    1.l2_loss函数 tf.nn.l2_loss(t, name=None) 解释:这个函数的作用是利用 L2 范数来计算张量的误差值,但是没有开方并且只取 L2 范数的值的一半,具体如下: out ...

  7. AI人工智能-Python实现人机对话

    [前言] AI 在人工智能进展的如火如荼的今天,我们如果不尝试去接触新鲜事物,马上就要被世界淘汰啦~ 本文拟使用Python开发语言实现类似于WIndows平台的“小娜”,或者是IOS下的“Siri” ...

  8. JPush 使用教程

    JPush 使用教程 自己使用的一些经验,为了方便直接从这里复制过去就行. 就当做个笔记,防止长时间忘记之后,还需要去官网看文档. 主要思路: sdk文件 + 三方依赖系统库 + 头文件 + 添加代理 ...

  9. Go的基本环境配置

    参考 https://golang.org/doc/install?download=go1.7.1.linux-amd64.tar.gz https://github.com/qlshine/the ...

  10. Java中实现十进制数转换为二进制的三种思路

    Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ...