@liaoliaopro
2017-07-08T06:27:03.000000Z
字数 20433
阅读 1083
修改日志:
下面通过一些典型场景来说明api如何使用。
典型如选股交易策略。比如,策略每日收盘前10分钟执行:选股->决策逻辑->交易->退出。可能无需订阅实时数据。实现如下
def init(context):schedule(algo, date_rule=daily, time_rule='14:50:00')def algo(context):f = get_fundmentals(fields='revenue,pe_ratio', filter='pe_ratio>55 and pe_ratio<60', order_by='-revenue', count=10)context.symbols = f.columns.values# 全仓平均买入每一个标的percent = 1.0/len(context.symbols)for stock in context.symbols:order_target_percent(stock, percent, position_side=PositionSide.Long)
同掘金2的事件模式。策略订阅的每个代码的每一个bar,都会触发策略逻辑
def init(context):subscribe('SHSE.600000', '1m')def on_bar(context, bars)# print current barprint bars
策略订阅代码时指定数据窗口大小与周期,平台创建数据滑动窗口,加载初始数据,并在新的bar到来时自动刷新数据。bar事件触发时,策略可以取到订阅代码的准备好的时间序列数据。
def init(context):subscribe('SHSE.600000', '1m', count=50)def on_bar(context, bars)# print current bar.print bars# print 'close' field of last 50 barsprint context.data('SHSE.600000', '1m', count=50, fields='close')
同场景3, 区别是策略订阅多个代码,并且要求同一频度的数据到齐后,再触发事件。
def init(context):subscribe('SHSE.600000,SZSE.000001', '1m', count=50, wait_group=True)def on_bar(context, bars)# print current bar of SHSE.600000, SZSE.000001.print bars# print last 50 bars. both series are updated with latest bars.print context.data('SHSE.600000', '1m', count=50, fields='close')print context.data('SZSE.000001', '1m', count=50, fields='close')
如果策略只关联一个账户,该账户是策略的默认账户。
def init(context):subscribe('SHSE.600000,SZSE.000001', '1m')def on_bar(context, bars)order_volume(bars[0].symbol, 10000)
def init(context):subscribe('SHSE.600000,SZSE.000001', '1m')def on_bar(context, bars)order_volume(bars[0].symbol, 10000, account=account('account_1'))order_volume(bars[1].symbol, 10000, account=account('account_2'))
掘金3策略只有两种模式,回测模式(backtest)与实时模式(live)。在加载策略时指定mode参数。
# for backtest moderun('strategy.py', mode=backtest, config, token)# for live moderun('strategy.py', mode=live, config, token)
无需实时数据驱动策略,无需交易下单,只是提取数据的场景。比如,在shell交互环境提取数据。
token用户函数调用的身份验证,token不正确,函数调用会抛出异常
from gmsdk import set_token, historyset_token('xxxx')history('SHSE.600000', '1d', 'open,high,low,close', '2015-01-01','2015-12-31')
13行代码完成一个均线突破策略.
def init(context):context.FAST = 30context.SLOW= 60context.symbol = 'SHSE.600000'subscribe(context.symbol, '1m', count=context.SLOW)def on_bar(context, bars)prices = context.data('SHSE.600000', '1m', context.SLOW, fields='close')fast_avg = talib.SMA(prices, context.FAST)slow_avg = talib.SMA(prices, context.SLOW)# 均线下穿,清仓if cross(slow_avg, fast_avg):order_target_percent(context.symbol, 0)# 均线上穿,满仓if cross(fast_avg, slow_avg):order_target_percent(context.symbol, 1)
初始化策略,策略启动时自动执行。可以在这里初始化策略配置参数。
init(context)
在自动时间执行策略算法,通常用于选股类型策略
schedule(algo_func, date_rule=daily | weekly | monthly, time_rule)
订阅行情,可以指定symbol, 数据滑窗大小,以及是否需要等待全部代码的数据到齐再触发事件。
subscribe(symbols=[symbol_1...symbol_n], frequency='1d', count=1, wait_group=False, unsubscribe_previous=False)
wait_group: 是否等待全部相同频度订阅的symbol到齐再触发on_bar事件。
unsubscribe_previous: 是否取消过去订阅的symbols
取消行情订阅,默认取消所有已订阅行情
unsubscribe(symbols='*', frequency='1d')
on_bar(context, bar)
on_tick(context, tick)
市场开市时触发本事件,可以在这里执行盘前初始化逻辑
on_bod(context, exchange, time)
市场收市时触发本事件,可以在这里执行盘后清理逻辑
on_eod(context, exchange, time)
查询当前行情快照,返回tick数据。回测时,返回回测时间点的tick数据(注:可能用当前数据bar模拟,基于效率考虑)。
current(symbol)
history(symbol, frequency, start_time, end_time, fields=None, skip_suspended=True, fill_missing=None | NaN | Last, adjust='pre' | 'post' | None, df=False)history_n(symbol, frequency, count, date=now(), fields=None, skip_suspended=True, fill_missing=None | NaN | Last, adjust='pre' | 'post' | None, df=False)
get_fundmentals(table, fields, filter, order_by=None, count=None, group_by=None, having=None)
get_instruments(exchange, sec_type, name=None, skip_suspended=True, skip_st=True, fields=None, start_date=None, end_date=None)
get_constituents(index, fields='symbol, weight', start_date=None, end_date=None)
get_sector(code, start_date=None, end_date=None)
get_industry(code, start_date=None, end_date=None)
get_concept(code, start_date=None, end_date=None)
get_trading_dates(exchange, start_date, end_date)
get_previous_trading_date(exchange, date)
get_next_trading_date(exchange, date)
get_divident(symbl, start_date, end_date)
get_benchmark_return(symbol, start_time, end_time, frequency='1d')
order_volume(symbol, volume, price=0, side=OrderSide, style=OrderType, position_effect=PositionEffect, account=account())
order_value(symbol, value, price=0, side=OrderSide, style=OrderType, position_effect=PositionEffect, account=account())
order_percent(symbol, percent, price=0, side=OrderSide, style=OrderType, position_effect=PositionEffect, account=account())
order_target_volume(symbol, volume, price=0, side=PositionSide, style=OrderType, account=account())
order_target_value(symbol, value, price=0, side=PositionSide, style=OrderType, account=account())
order_target_percent(symbol, percent, price=0, side=PositionSide, style=OrderType, account=account())
order_batch([order_1...order_n], combine=False, account=account())
order_cancel([order_1...order_n])
order_cancel_all()
order_close_all()
get_unfinished_orders()
get_orders()
account(account_id='default', all=False)
set_runtime_config([config 1...config n])
on_order_status(context, order)
on_execrpt(context, execrpt)
用户有时只需要提取数据,set_token后就可以直接调用数据函数,无需编写策略结构。
如果token不合法,访问需要身份验证的函数会抛出异常。
set_token(token)
回测过程中,now返回回测的当前时间点。
实时过程中,now返回wallclock的当前时间点。
now()
log(level, messge)
get_strerror(code)
get_version()
on_runtime_config(context, config)
on_backtest_finished(context, backtest_result)
on_error(context, code, info)
on_shutdown(context, code, info)
cross(series1, series2)
class Context():now # current timestampsymbols # subscribed symbolsruntime_configs # runtime configs, dictionarydata(symbol, frequency, count, fields) # sliding window for subscribed bars/ticks
class Account():cashpositions
//委托定义message Order {string strategy_id = 1; //策略IDstring account_id = 2; //账号IDstring username = 3; //账户登录名string cl_ord_id = 4; //委托客户端IDstring order_id = 5; //委托柜台IDstring ex_ord_id = 6; //委托交易所IDstring symbol = 7; //symbolint32 position_effect = 10; //开平标志,取值参考enum PositionEffectint32 side = 11; //买卖方向,取值参考enum OrderSideint32 order_type = 12; //委托类型,取值参考enum OrderTypeint32 order_duration = 13; //委托类型,取值参考enum OrderDurationint32 order_qualifier = 14; //委托类型,取值参考enum OrderQualifierint32 order_src = 15; //委托来源,取值参考enum OrderSrcint32 status = 16; //委托状态,取值参考enum OrderStatusint32 ord_rej_reason = 17; //委托拒绝原因,取值参考enum OrderRejectReasonstring ord_rej_reason_detail = 18; //委托拒绝原因描述double price = 19; //委托价格double stop_price = 20; //委托止损/止盈触发价格double volume = 21; //委托量double volume_nav_ratio = 22; //委托量与净值比double filled_volume = 23; //已成量double filled_vwap = 24; //已成均价double filled_amount = 25; //已成金额google.protobuf.Timestamp created_at = 26[(gogoproto.stdtime) = true]; //委托创建时间google.protobuf.Timestamp updated_at = 27[(gogoproto.stdtime) = true]; //委托更新时间}
//委托执行回报定义message ExecRpt {string strategy_id = 1; //策略IDstring account_id = 2; //账号IDstring username = 3; //账户登录名string cl_ord_id = 4; //委托客户端IDstring order_id = 5; //委托柜台IDstring exec_id = 6; //委托回报IDstring symbol = 7; //symbolint32 position_effect = 10; //开平标志,取值参考enum PositionEffectint32 side = 11; //买卖方向,取值参考enum OrderSideint32 ord_rej_reason = 12; //委托拒绝原因,取值参考enum OrderRejectReasonstring ord_rej_reason_detail = 13; //委托拒绝原因描述int32 exec_type = 14; //执行回报类型, 取值参考enum ExecTypedouble price = 15; //委托成交价格double volume = 16; //委托成交量double amount = 17; //委托成交金额google.protobuf.Timestamp created_at =18[(gogoproto.stdtime) = true]; //回报创建时间}
//资金定义message Cash {string account_id = 1; //账号IDstring username = 2; //账户登录名int32 currency = 3; //币种double nav = 4; //净值(cum_inout + cum_pnl + fpnl - cum_commission)double pnl = 5; //净收益(nav-cum_inout)double fpnl = 6; //浮动盈亏(sum(each position fpnl))double frozen = 7; //持仓占用资金double order_frozen = 8; //挂单冻结资金double available = 9; //可用资金//no leverage: available=(cum_inout + cum_pnl - cum_commission - frozen - order_frozen)//has leverage: fpnl =(fpnl>0 ? fpnl : (frozen < |fpnl|) ? (frozenr-|fpnl|) : 0)// available=(cum_inout + cum_pnl - cum_commission - frozen - order_frozen + fpnl)double cum_inout = 10; //累计出入金double cum_trade = 11; //累计交易额double cum_pnl = 12; //累计平仓收益(没扣除手续费)double cum_commission = 13; //累计手续费double last_trade = 14; //上一次交易额double last_pnl = 15; //上一次收益double last_commission = 16; //上一次手续费double last_inout = 17; //上一次出入金int32 change_reason = 18; //资金变更原因,取值参考enum CashPositionChangeReasonstring change_event_id = 19; //触发资金变更事件的IDgoogle.protobuf.Timestamp created_at = 20[(gogoproto.stdtime) = true]; //资金初始时间google.protobuf.Timestamp updated_at = 21[(gogoproto.stdtime) = true]; //资金变更时间}
//持仓定义message Position{string account_id = 1; //账号IDstring username = 2; //账户登录名string symbol = 3; //symbolint32 side = 6; //持仓方向,取值参考enum PositionSidedouble volume = 7; //总持仓量; 昨持仓量(volume-volume_today)double volume_today = 8; //今日持仓量double vwap = 9; //持仓均价double amount = 10; //持仓额(volume*vwap*multiplier)double price = 11; //当前行情价格double fpnl = 12; //持仓浮动盈亏((price-vwap)*volume*multiplier)double cost = 13; //持仓成本(vwap*volume*multiplier*margin_ratio)double order_frozen = 14; //挂单冻结仓位double order_frozen_today = 15; //挂单冻结今仓仓位double available = 16; //可平总仓位(volume-order_frozen); 可平昨仓位(available-available_today)double available_today = 17; //可平今仓位(volume_today-order_frozen_today)double last_price = 18; //上一次成交价double last_volume = 19; //上一次成交量double last_inout = 20; //上一次出入持仓量int32 change_reason = 21; //仓位变更原因,取值参考enum CashPositionChangeReasonstring change_event_id = 22; //触发资金变更事件的IDgoogle.protobuf.Timestamp created_at = 23[(gogoproto.stdtime) = true]; //建仓时间google.protobuf.Timestamp updated_at = 24[(gogoproto.stdtime) = true]; //仓位变更时间}
//绩效指标定义message Indicator{string account_id = 1; //账号IDdouble pnl_ratio = 2; //累计收益率(pnl/cum_inout)double pnl_ratio_annual = 3; //年化收益率double sharp_ratio = 4; //夏普比率double max_drawdown = 5; //最大回撤double risk_ratio = 6; //风险比率int32 open_count = 7; //开仓次数int32 close_count = 8; //平仓次数int32 win_count = 9; //盈利次数int32 lose_count = 10; //亏损次数double win_ratio = 11; //胜率google.protobuf.Timestamp created_at = 12[(gogoproto.stdtime) = true]; //指标创建时间google.protobuf.Timestamp updated_at = 13[(gogoproto.stdtime) = true]; //指标变更时间}
//按周期统计的指标(目前只有日频和分钟频)message IndicatorDuration {string account_id = 1; //账号ID//周期快照类指标double pnl_ratio = 2; //收益率快照double pnl = 3; //收益快照double cash = 4; //资金快照double fpnl = 5; //浮盈浮亏快照double frozen = 6; //持仓冻结快照repeated core.api.Position positions = 7; //持仓快照//周期累计类指标double cum_pnl = 8; //周期累计盈亏double cum_buy = 9; //周期累计买入额double cum_sell = 10; //周期累计卖出额google.protobuf.Duration duration = 11[(gogoproto.stdduration) = true]; //指标统计周期google.protobuf.Timestamp created_at = 12[(gogoproto.stdtime) = true]; //指标创建时间google.protobuf.Timestamp updated_at = 13[(gogoproto.stdtime) = true]; //指标创建时间}
//动态参数message RuntimeConfig {string key = 1; //参数键double value = 2; //参数值double min = 3; //可设置的最小值double max = 4; //可设置的最大值string name = 5; //参数名string intro = 6; //参数说明string group = 7; //组名bool readonly = 8; //是否只读}
Tick - Tick对象
message Tick {string symbol = 1;float open = 2;float high = 3;float low = 4;float price = 5;repeated Quote quotes = 6;double cum_volume = 7;double cum_amount = 8;int64 cum_position = 9;double last_amount = 10;int32 last_volume = 11;int32 trade_type = 12;google.protobuf.Timestamp created_at = 13[(gogoproto.stdtime) = true];}
message Bar {string symbol = 1;uint32 frequency = 2;float open = 3;float high = 4;float low = 5;float close = 6;double volume = 7;double amount = 8;int64 position = 9;float pre_close = 10;google.protobuf.Timestamp bob = 11[(gogoproto.stdtime) = true]; // begin of bargoogle.protobuf.Timestamp eob = 12[(gogoproto.stdtime) = true]; // end of bar}
message Quote {float bid_p = 1;int32 bid_v = 2;float ask_p = 3;int32 ask_v = 4;}
message OrderBook {string symbol = 1;repeated Quote quotes = 2;google.protobuf.Timestamp created_at = 3[(gogoproto.stdtime) = true];}
message Trade {string symbol = 1;float price = 2;int32 last_volume = 3;double last_amount = 4;double cum_volume = 5;double cum_amount = 6;int32 trade_type = 7;google.protobuf.Timestamp created_at = 8[(gogoproto.stdtime) = true];}
message InstrumentInfo {string symbol = 1;int32 sec_type = 2;string exchange = 3;string sec_id = 4;string sec_name = 5;string sec_abbr = 6;google.protobuf.Timestamp listed_date = 7[(gogoproto.stdtime) = true];google.protobuf.Timestamp delisted_date = 8[(gogoproto.stdtime) = true];}
message Instrument {string symbol = 1;int32 is_st = 2;int32 is_suspended = 3;double multiplier = 4;double margin_ratio = 5;double price_tick = 6;float settle_price = 7;int64 position = 8;float pre_close = 9;double upper_limit = 10;double lower_limit = 11;double adj_factor = 12;google.protobuf.Timestamp created_at = 13[(gogoproto.stdtime) = true];}
message Divident {string symbol = 1;double cash_div = 2;double share_div_ratio = 3;double share_trans_ratio = 4;double allotment_ratio = 5;double allotment_price = 6;google.protobuf.Timestamp created_at = 7[(gogoproto.stdtime) = true];}
message VirtualContract {string vsymbol = 1;string symbol = 2;google.protobuf.Timestamp created_at = 3[(gogoproto.stdtime) = true];}
//委托状态enum OrderStatus {OrderStatus_Unknown = 0;OrderStatus_New = 1; //已报OrderStatus_PartiallyFilled = 2; //部成OrderStatus_Filled = 3; //已成OrderStatus_DoneForDay = 4; //OrderStatus_Canceled = 5; //已撤OrderStatus_PendingCancel = 6; //待撤OrderStatus_Stopped = 7; //OrderStatus_Rejected = 8; //已拒绝OrderStatus_Suspended = 9; //挂起OrderStatus_PendingNew = 10; //待报OrderStatus_Calculated = 11; //OrderStatus_Expired = 12; //已过期OrderStatus_AcceptedForBidding = 13; //OrderStatus_PendingReplace = 14; //}
//委托方向enum OrderSide {OrderSide_Unknown = 0;OrderSide_Buy = 1; //买入OrderSide_Sell = 2; //卖出}
//委托类型enum OrderType {OrderType_Unknown = 0;OrderType_count = 1; //限价委托OrderType_Market = 2; //市价委托OrderType_Stop = 3; //止损止盈委托}
//委托时间属性enum OrderDuration {OrderDuration_Unknown = 0;OrderDuration_FAK = 1; //即时成交剩余撤销(fill and kill)OrderDuration_FOK = 2; //即时全额成交或撤销(fill or kill)OrderDuration_GFD = 3; //当日有效(good for day)OrderDuration_GFS = 4; //本节有效(good for section)OrderDuration_GTD = 5; //指定日期前有效(goodl till date)OrderDuration_GTC = 6; //撤销前有效(good till cancel)OrderDuration_GFA = 7; //集合竞价前有效(good for auction)}
//委托成交属性enum OrderQualifier {OrderQualifier_Unknown = 0;OrderQualifier_BOC = 1; //对方最优价格(best of counterparty)OrderQualifier_BOP = 2; //己方最优价格(best of party)OrderQualifier_B5TC = 3; //最优五档剩余撤销(best 5 then cancel)OrderQualifier_B5TL = 4; //最优五档剩余转限价(best 5 then count)}
//委托回报类型enum ExecType {ExecType_Unknown = 0;ExecType_New = 1; //已报ExecType_DoneForDay = 4; //ExecType_Canceled = 5; //已撤销ExecType_PendingCancel = 6; //待撤销ExecType_Stopped = 7; //ExecType_Rejected = 8; //已拒绝ExecType_Suspended = 9; //挂起ExecType_PendingNew = 10; //待报ExecType_Calculated = 11; //ExecType_Expired = 12; //过期ExecType_Restated = 13; //ExecType_PendingReplace = 14; //ExecType_Trade = 15; //成交ExecType_TradeCorrect = 16; //ExecType_TradeCancel = 17; //ExecType_OrderStatus = 18; //委托状态ExecType_CancelRejected = 19; //撤单被拒绝}
//开平标志enum PositionEffect {PositionEffect_Unknown = 0;PositionEffect_Open = 1; //开仓PositionEffect_Close = 2; //平仓,具体语义取决于对应的交易所PositionEffect_CloseToday = 3; //平今仓PositionEffect_CloseYesterday = 4; //平昨仓}
//持仓方向enum PositionSide {PositionSide_Unknown = 0;PositionSide_Long = 1; //多方向PositionSide_Short = 2; //空方向}
run(strategy, mode, config, token)
stop()
集成ta-lib138个指标函数
附表:ta-lib支持指标集合AD Chaikin A/D LineADOSC Chaikin A/D OscillatorADX Average Directional Movement IndexADXR Average Directional Movement Index RatingAPO Absolute Price OscillatorAROON AroonAROONOSC Aroon OscillatorATR Average True RangeAVGPRICE Average PriceBBANDS Bollinger BandsBETA BetaBOP Balance Of PowerCCI Commodity Channel IndexCDL2CROWS Two CrowsCDL3BLACKCROWS Three Black CrowsCDL3INSIDE Three Inside Up/DownCDL3LINESTRIKE Three-Line StrikeCDL3OUTSIDE Three Outside Up/DownCDL3STARSINSOUTH Three Stars In The SouthCDL3WHITESOLDIERS Three Advancing White SoldiersCDLABANDONEDBABY Abandoned BabyCDLADVANCEBLOCK Advance BlockCDLBELTHOLD Belt-holdCDLBREAKAWAY BreakawayCDLCLOSINGMARUBOZU Closing MarubozuCDLCONCEALBABYSWALL Concealing Baby SwallowCDLCOUNTERATTACK CounterattackCDLDARKCLOUDCOVER Dark Cloud CoverCDLDOJI DojiCDLDOJISTAR Doji StarCDLDRAGONFLYDOJI Dragonfly DojiCDLENGULFING Engulfing PatternCDLEVENINGDOJISTAR Evening Doji StarCDLEVENINGSTAR Evening StarCDLGAPSIDESIDEWHITE Up/Down-gap side-by-side white linesCDLGRAVESTONEDOJI Gravestone DojiCDLHAMMER HammerCDLHANGINGMAN Hanging ManCDLHARAMI Harami PatternCDLHARAMICROSS Harami Cross PatternCDLHIGHWAVE High-Wave CandleCDLHIKKAKE Hikkake PatternCDLHIKKAKEMOD Modified Hikkake PatternCDLHOMINGPIGEON Homing PigeonCDLIDENTICAL3CROWS Identical Three CrowsCDLINNECK In-Neck PatternCDLINVERTEDHAMMER Inverted HammerCDLKICKING KickingCDLKICKINGBYLENGTH Kicking - bull/bear determined by the longer marubozuCDLLADDERBOTTOM Ladder BottomCDLLONGLEGGEDDOJI Long Legged DojiCDLLONGLINE Long Line CandleCDLMARUBOZU MarubozuCDLMATCHINGLOW Matching LowCDLMATHOLD Mat HoldCDLMORNINGDOJISTAR Morning Doji StarCDLMORNINGSTAR Morning StarCDLONNECK On-Neck PatternCDLPIERCING Piercing PatternCDLRICKSHAWMAN Rickshaw ManCDLRISEFALL3METHODS Rising/Falling Three MethodsCDLSEPARATINGLINES Separating LinesCDLSHOOTINGSTAR Shooting StarCDLSHORTLINE Short Line CandleCDLSPINNINGTOP Spinning TopCDLSTALLEDPATTERN Stalled PatternCDLSTICKSANDWICH Stick SandwichCDLTAKURI Takuri (Dragonfly Doji with very long lower shadow)CDLTASUKIGAP Tasuki GapCDLTHRUSTING Thrusting PatternCDLTRISTAR Tristar PatternCDLUNIQUE3RIVER Unique 3 RiverCDLUPSIDEGAP2CROWS Upside Gap Two CrowsCDLXSIDEGAP3METHODS Upside/Downside Gap Three MethodsCMO Chande Momentum OscillatorCORREL Pearsons Correlation Coefficient (r)DEMA Double Exponential Moving AverageDX Directional Movement IndexEMA Exponential Moving AverageHT_DCPERIOD Hilbert Transform - Dominant Cycle PeriodHT_DCPHASE Hilbert Transform - Dominant Cycle PhaseHT_PHASOR Hilbert Transform - Phasor ComponentsHT_SINE Hilbert Transform - SineWaveHT_TRENDLINE Hilbert Transform - Instantaneous TrendlineHT_TRENDMODE Hilbert Transform - Trend vs Cycle ModeKAMA Kaufman Adaptive Moving AverageLINEARREG Linear RegressionLINEARREG_ANGLE Linear Regression AngleLINEARREG_INTERCEPT Linear Regression InterceptLINEARREG_SLOPE Linear Regression SlopeMA All Moving AverageMACD Moving Average Convergence/DivergenceMACDEXT MACD with controllable MA typeMACDFIX Moving Average Convergence/Divergence Fix 12/26MAMA MESA Adaptive Moving AverageMAX Highest value over a specified periodMAXINDEX Index of highest value over a specified periodMEDPRICE Median PriceMFI Money Flow IndexMIDPOINT MidPoint over periodMIDPRICE Midpoint Price over periodMIN Lowest value over a specified periodMININDEX Index of lowest value over a specified periodMINMAX Lowest and highest values over a specified periodMINMAXINDEX Indexes of lowest and highest values over a specified periodMINUS_DI Minus Directional IndicatorMINUS_DM Minus Directional MovementMOM MomentumNATR Normalized Average True RangeOBV On Balance VolumePLUS_DI Plus Directional IndicatorPLUS_DM Plus Directional MovementPPO Percentage Price OscillatorROC Rate of change : ((price/prevPrice)-1)*100ROCP Rate of change Percentage: (price-prevPrice)/prevPriceROCR Rate of change ratio: (price/prevPrice)ROCR100 Rate of change ratio 100 scale: (price/prevPrice)*100RSI Relative Strength IndexSAR Parabolic SARSAREXT Parabolic SAR - ExtendedSMA Simple Moving AverageSTDDEV Standard DeviationSTOCH StochasticSTOCHF Stochastic FastSTOCHRSI Stochastic Relative Strength IndexSUM SummationT3 Triple Exponential Moving Average (T3)TEMA Triple Exponential Moving AverageTRANGE True RangeTRIMA Triangular Moving AverageTRIX 1-day Rate-Of-Change (ROC) of a Triple Smooth EMATSF Time Series ForecastTYPPRICE Typical PriceULTOSC Ultimate OscillatorVAR VarianceWCLPRICE Weighted Close PriceWILLR Williams %RWMA Weighted Moving Average