限价止损

这里介绍另一个很基础的止损方法----限价止损。
何为现价止损 ?
根据买入价确定止损价和止盈价, 一旦股价波动至这两个价位, 则卖出股票,否则继续持有。
用简单的Pseudocode 来写就是

if 现价> X * 买入价:
    止盈, 卖出股票
else if 现价 < Y * 买入价 :
    止损 , 卖出股票
else :
    什么事都没发生, 继续持有。

买入股票之后, 就类似一个人喝醉了, 股票的价格和人的行为都不受自己控制。股价触碰止盈/止损价就好比这个人看到一堵墙, 随后去扶它 (卖出)

'''
止损描述: 当前股价大于/小于 某一价格 进行 止盈/止损 
使用方法: 
0:  在init 中 设置止盈/止损比例, 

    止损:context.stoplossmultipler= 0.9 #亏损10% 触发止损
    止盈:context.stoppofitmultipler= 1.5 #盈利 50% 触发止盈

1: 复制 def stoploss 至script 
2: 设置 scheduler.run_daily(stopless)

'''

# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
import pandas as pd 
import numpy as np 
import time 
import datetime 

# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    context.to_buy = ('300033.XSHE','000025.XSHE','601766.XSHG')
    context.stoplossmultipler= 0.95 #止损 乘数 
    context.stoppofitmultipler= 1.5 #止盈 乘数
    # 实时打印日志
    #scheduler.run_daily(stoploss)
    logger.info("Interested at stock: " + str(context.to_buy))
    scheduler.run_monthly(position,1)
    scheduler.run_daily(stoploss)

def stoploss(context,bar_dict):
    for stock in context.portfolio.positions:
        if bar_dict[stock].last<context.portfolio.positions[stock].average_cost*context.stoplossmultipler:# 现价低于 原价一定比例
            order_target_percent(stock,0)
            print(str(stock)+'跌幅超过'+str((1-context.stoplossmultipler)*100) +'%  触发止损')
        elif bar_dict[stock].last>context.portfolio.positions[stock].average_cost*context.stoppofitmultipler:# 现价高于原价一定比例
            order_target_percent(stock,0)
            print(str(stock)+'涨幅幅超过'+str((context.stoppofitmultipler-1)*100) +'%  触发止盈')
    pass 

# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    # 开始编写你的主要的算法逻辑
    # bar_dict[order_book_id] 可以拿到某个证券的bar信息
    # context.portfolio 可以拿到现在的投资组合状态信息

    # 使用order_shares(id_or_ins, amount)方法进行落单

    # TODO: 开始编写你的算法吧!
    #position(context,bar_dict)
    #logger.info(type(context.now))
    pass




def position(context,bar_dict):
    if len(context.to_buy)!=0:
        for stock in context.to_buy:
            order_target_percent(stock,1/len(context.to_buy))

    else: 
        order_target_percent(stock,0)

results matching ""

    No results matching ""