You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3502 lines
96 KiB

  1. /*
  2. copyright (c) 2018 jones
  3. http://www.apache.org/licenses/LICENSE-2.0
  4. 开源项目 https://github.com/jones2000/HQChart
  5. jones_2000@163.com
  6. 系统录入的指标
  7. */
  8. import
  9. {
  10. IFrameSplitOperator,
  11. } from './umychart.framesplit.wechat.js'
  12. /*
  13. 指标数据脚本 系统内置指标都写在这里
  14. Name指标名字
  15. Args:参数 { Name:名字, Value= }
  16. Description指标描述信息
  17. IsMainIndex是否是主图指标 true=主图指标 false=副图指标
  18. KLineType:K线设置 -1=主图不显示K线(只在主图有效) 0=在副图显示K线 1=在副图显示K线(收盘价线) 2=在副图显示K线(美国线)
  19. InstructionType: 1=专家指示 2=五彩K线
  20. FloatPrecision: 小数位数 缺省=2
  21. StringFormat: 1=带单位万/亿 2=原始格式 缺省=1
  22. YSplitScale: Y固定刻度 [1,8,10]
  23. YSpecificMaxMin: 固定Y轴最大最小值 { Max: 9, Min: 0, Count: 3 };
  24. OutName:动态输出变量名字 [{Name:原始变量名, DynamicName:动态名字格式}] {Name:"MA1", DynamicName:"MA{M1}"};
  25. YAxis:{ FloatPrecision:小数位数, StringFormat: EnableRemoveZero } //Y轴刻度输出格式
  26. */
  27. //周期条件枚举
  28. var CONDITION_PERIOD =
  29. {
  30. MINUTE_ID: 101, //分钟 走势图
  31. MULTIDAY_MINUTE_ID: 102, //多日分钟 走势图
  32. HISTORY_MINUTE_ID: 103, //历史分钟 走势图
  33. //K线周期
  34. KLINE_DAY_ID: 0,
  35. KLINE_WEEK_ID: 1,
  36. KLINE_MONTH_ID: 2,
  37. KLINE_YEAR_ID: 3,
  38. KLINE_MINUTE_ID: 4,
  39. KLINE_5_MINUTE_ID: 5,
  40. KLINE_15_MINUTE_ID: 6,
  41. KLINE_30_MINUTE_ID: 7,
  42. KLINE_60_MINUTE_ID: 8
  43. };
  44. //自定义的指标脚本
  45. function CustomIndexScript()
  46. {
  47. this.DataMap = new Map(); //key=指标id, value=data {ID:, Name:指标名字, Description:指标描述信息 Args:参数 ......}
  48. this.Get = function (id)
  49. {
  50. if (!this.DataMap.has(id)) return null;
  51. return this.DataMap.get(id);
  52. }
  53. this.Add = function (data)
  54. {
  55. this.DataMap.set(data.ID, data);
  56. }
  57. }
  58. var g_CustomIndex = new CustomIndexScript();
  59. function JSIndexScript()
  60. {
  61. this.DataMap = new Map(
  62. [
  63. ['MA', this.MA], ['均线', this.MA], ['BOLL', this.BOLL], ['BBI', this.BBI],['BOLL副图', this.BOLL2],
  64. ["MA4", this.MA4], ["MA5", this.MA5], ["MA6", this.MA6], ["MA7", this.MA7], ["MA8", this.MA8],
  65. ['DKX', this.DKX], ['MIKE', this.MIKE], ['PBX', this.PBX],
  66. ['ENE', this.ENE], ['MACD', this.MACD], ['KDJ', this.KDJ],["MACD2", this.MACD2],
  67. ['VOL', this.VOL], ['VOL2', this.VOL2],['成交量', this.VOL], ['RSI', this.RSI], ['BRAR', this.BRAR],
  68. ['WR', this.WR], ['BIAS', this.BIAS], ['OBV', this.OBV],
  69. ['DMI', this.DMI], ['CR', this.CR], ['PSY', this.PSY],
  70. ['CCI', this.CCI], ['DMA', this.DMA], ['TRIX', this.TRIX],
  71. ['VR', this.VR], ['EMV', this.EMV], ['ROC', this.ROC],
  72. ['MIM', this.MIM], ['FSL', this.FSL], ['CYR', this.CYR],
  73. ['MASS', this.MASS], ['WAD', this.WAD], ['CHO', this.CHO],
  74. ['ADTM', this.ADTM], ['HSL', this.HSL], ['BIAS36', this.BIAS36],
  75. ['BIAS_QL', this.BIAS_QL], ['DPO', this.DPO], ['OSC', this.OSC],
  76. ['ATR', this.ATR], ['NVI', this.NVI], ['PVI', this.PVI],
  77. ['UOS', this.UOS], ['CYW', this.CYW], ['LON', this.LON],
  78. ['NDB', this.NDB], ['SKDJ', this.SKDJ], ['KD', this.KD], ['FKX', this.FKX],
  79. ['DKCOL', this.DKCOL], ['UDL', this.UDL], ['MFI', this.MFI], ['LWR', this.LWR],
  80. ['MARSI', this.MARSI], ['CYD', this.CYD], ['CYF', this.CYF], ['TAPI', this.TAPI],
  81. ['VMACD', this.VMACD], ['QACD', this.QACD], ['VPT', this.VPT], ['WVAD', this.WVAD],
  82. ['DBQR', this.DBQR], ['JS', this.JS], ['CYE', this.CYE], ['QR', this.QR], ['GDX', this.GDX],
  83. ['JLHB', this.JLHB], ['PCNT', this.PCNT], ['BTX', this.BTX], ['AMO', this.AMO],
  84. ['VRSI', this.VRSI], ['HSCOL', this.HSCOL], ['DBQRV', this.DBQRV], ['DBLB', this.DBLB],
  85. ['ACD', this.ACD], ['EXPMA', this.EXPMA], ['EXPMA_S', this.EXPMA_S], ['HMA', this.HMA],
  86. ['LMA', this.LMA], ['VMA', this.VMA], ['AMV', this.AMV], ['BBIBOLL', this.BBIBOLL],
  87. ['ALLIGAT', this.ALLIGAT], ['ZX', this.ZX], ['XS', this.XS], ['XS2', this.XS2],
  88. ['SG-XDT', this.SG_XDT], ['SG-SMX', this.SG_SMX], ['SG-LB', this.SG_LB], ['SG-PF', this.SG_PF],
  89. ['RAD', this.RAD], ['SHT', this.SHT], ['ZLJC', this.ZLJC], ['ZLMM', this.ZLMM], ['SLZT', this.SLZT],
  90. ['ADVOL', this.ADVOL], ['CYC', this.CYC], ['CYS', this.CYS], ['CYQKL', this.CYQKL],["SQJZ", this.SQJZ],["XT", this.XT],["CFJT", this.CFJT],
  91. ["CYX",this.CYX],["WAVE",this.WAVE],
  92. ['SCR', this.SCR], ['ASR', this.ASR], ['SAR', this.SAR], ['TJCJL', this.TJCJL], ['量比', this.VOLRate],
  93. ['EMPTY', this.EMPTY], //什么都不显示的指标
  94. ['操盘BS点', this.FXG_BSPoint],
  95. ['EMA', this.EMA3], ['EMA4', this.EMA4], ['EMA5', this.EMA5],['EMA6', this.EMA6],
  96. ['CJL2', this.CJL], //期货持仓量
  97. ["持仓量", this.VOL_POSITION], //成交量+持仓量
  98. //指南针
  99. ["ZNZ_CBAND", this.ZNZ_CBAND],["ZNZ_RPY2",this.ZNZ_RPY2],["ZNZ_RPY1", this.ZNZ_RPY1],
  100. ['飞龙四式', this.Dragon4_Main], ['飞龙四式-附图', this.Dragon4_Fig],
  101. ['资金分析', this.FundsAnalysis], ['融资占比', this.MarginProportion],
  102. ['负面新闻', this.NewsNegative], ['机构调研', this.NewsResearch], ['董秘连线', this.NewsInteract], ['涨跌趋势', this.UpDownAnalyze],
  103. //外包指标
  104. ['放心股-操盘BS点', this.FXG_BSPoint],
  105. ['放心股-涨停多空线', this.FXG_INDEX],
  106. ['放心股-涨停吸筹区', this.FXG_INDEX2],
  107. ['放心股-量能黄金点', this.FXG_INDEX3],
  108. //五彩K线(函数COLOR_开头)
  109. ['五彩K线-十字星', this.COLOR_KSTAR1], ['五彩K线-早晨之星', this.COLOR_KSTAR2], ['五彩K线-黄昏之星', this.COLOR_KSTAR3], ['五彩K线-长十字', this.COLOR_SHI1],
  110. ['五彩K线-身怀六甲', this.COLOR_K220], ['五彩K线-三个白武士', this.COLOR_K300], ['五彩K线-三只乌鸦', this.COLOR_K310], ['五彩K线-光头阳线', this.COLOR_K380],
  111. ['五彩K线-光脚阴线', this.COLOR_K390], ['五彩K线-垂死十字', this.COLOR_K134], ['五彩K线-早晨十字星', this.COLOR_K140], ['五彩K线-黄昏十字星', this.COLOR_K150],
  112. ['五彩K线-射击之星', this.COLOR_K160], ['五彩K线-倒转锤头', this.COLOR_K165], ['五彩K线-锤头', this.COLOR_K170], ['五彩K线-吊颈', this.COLOR_K180],
  113. ['五彩K线-穿头破脚', this.COLOR_K190], ['五彩K线-出水芙蓉', this.COLOR_CSFR], ['五彩K线-乌云盖顶', this.COLOR_WYGD], ['五彩K线-曙光初现', this.COLOR_SGCJ],
  114. ['五彩K线-十字胎', this.COLOR_SZTAI], ['五彩K线-剑', this.COLOR_SWORD], ['五彩K线-平顶', this.COLOR_PINGDING], ['五彩K线-平底', this.COLOR_PINGDI],
  115. ['五彩K线-大阳烛', this.COLOR_DAYANZHU], ['五彩K线-大阴烛', this.COLOR_DAYINGZHU],
  116. ['五彩K线-好友反攻', this.COLOR_HYFG], ['五彩K线-跳空缺口', this.COLOR_TKQK],
  117. ['五彩K线-双飞乌鸦', this.COLOR_SFWY], ['五彩K线-上升三部曲', this.COLOR_SSSBQ], ['五彩K线-下跌三部曲', this.COLOR_XDSBQ], ['五彩K线-长下影', this.COLOR_CHXY],
  118. ['五彩K线-长上影', this.COLOR_CHSY], ['五彩K线-分离', this.COLOR_FENLI],
  119. //交易系统
  120. ['交易系统-BIAS', this.TRADE_BIAS], ['交易系统-CCI', this.TRADE_CCI], ['交易系统-DMI', this.TRADE_DMI], ['交易系统-KD', this.TRADE_KD],
  121. ['交易系统-BOLL', this.TRADE_BOLL], ['交易系统-KDJ', this.TRADE_KDJ], ['交易系统-MA', this.TRADE_MA], ['交易系统-MACD', this.TRADE_MACD],
  122. ['交易系统-MTM', this.TRADE_MTM], ['交易系统-PSY', this.TRADE_PSY], ['交易系统-ROC', this.TRADE_ROC], ['交易系统-RSI', this.TRADE_RSI],
  123. ['交易系统-VR', this.TRADE_VR], ['交易系统-DPSJ', this.TRADE_DPSJ],
  124. ['TEST', this.TEST] //测试用
  125. ]
  126. );
  127. }
  128. JSIndexScript.AddIndex = function (aryIndex) //添加自定义指标
  129. {
  130. for (var i in aryIndex)
  131. {
  132. g_CustomIndex.Add(aryIndex[i]);
  133. }
  134. }
  135. //修改指标属性
  136. JSIndexScript.ModifyAttribute=function(indexInfo, attribute)
  137. {
  138. if (!attribute) return;
  139. if (attribute.Args) indexInfo.Args=attribute.Args; //外部可以设置参数
  140. if (IFrameSplitOperator.IsNumber(attribute.FloatPrecision)) indexInfo.FloatPrecision=attribute.FloatPrecision;
  141. if (IFrameSplitOperator.IsNumber(attribute.StringFormat)) indexInfo.StringFormat=attribute.StringFormat;
  142. if (IFrameSplitOperator.IsBool(attribute.IsSync)) indexInfo.IsSync=attribute.IsSync;
  143. if (IFrameSplitOperator.IsBool(attribute.IsShortTitle)) indexInfo.IsShortTitle=attribute.IsShortTitle;
  144. if (attribute.TitleFont) indexInfo.TitleFont=attribute.TitleFont;
  145. if (attribute.Lock) indexInfo.Lock=attribute.Lock;
  146. if (IFrameSplitOperator.IsNumber(attribute.YSplitType)) indexInfo.YSplitType=attribute.YSplitType;
  147. if (IFrameSplitOperator.IsBool(attribute.IsShowIndexTitle)) indexInfo.IsShowIndexTitle=attribute.IsShowIndexTitle;
  148. if (IFrameSplitOperator.IsNumber(attribute.KLineType)) indexInfo.KLineType=attribute.KLineType;
  149. if (attribute.YAxis)
  150. {
  151. var item=attribute.YAxis;
  152. if (!indexInfo.YAxis) indexInfo.YAxis={ };
  153. if (IFrameSplitOperator.IsNumber(item.FloatPrecision)) indexInfo.YAxis.FloatPrecision=item.FloatPrecision;
  154. if (IFrameSplitOperator.IsNumber(item.StringFormat)) indexInfo.YAxis.StringFormat=item.StringFormat;
  155. if (IFrameSplitOperator.IsBool(item.EnableRemoveZero)) indexInfo.YAxis.EnableRemoveZero=item.EnableRemoveZero;
  156. }
  157. }
  158. JSIndexScript.prototype.Get=function(id)
  159. {
  160. var data = g_CustomIndex.Get(id);
  161. if (data) return data;
  162. var func=this.DataMap.get(id);
  163. if (func)
  164. {
  165. var data=func();
  166. data.ID=id;
  167. return data;
  168. }
  169. console.log(`[JSIndexScript::Get] can't find index by id=${id}`);
  170. return null;
  171. }
  172. JSIndexScript.prototype.MA=function()
  173. {
  174. let data=
  175. {
  176. Name: 'MA', Description: '均线', IsMainIndex: true, StringFormat:2,
  177. Args:[ { Name:'M1', Value:5}, { Name:'M2', Value:10 }, { Name:'M3', Value:20} ],
  178. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" }],
  179. Script: //脚本
  180. 'MA1:MA(CLOSE,M1);\n\
  181. MA2:MA(CLOSE,M2);\n\
  182. MA3:MA(CLOSE,M3);'
  183. };
  184. return data;
  185. }
  186. JSIndexScript.prototype.MA4 = function () {
  187. let data =
  188. {
  189. Name: 'MA', Description: '均线', IsMainIndex: true, StringFormat: 2,
  190. Args: [{ Name: 'M1', Value: 5 }, { Name: 'M2', Value: 10 }, { Name: 'M3', Value: 20 }, { Name: 'M4', Value: 60 }],
  191. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" } ],
  192. Script: //脚本
  193. 'MA1:MA(CLOSE,M1);\n\
  194. MA2:MA(CLOSE,M2);\n\
  195. MA3:MA(CLOSE,M3);\n\
  196. MA4:MA(CLOSE,M4);'
  197. };
  198. return data;
  199. }
  200. JSIndexScript.prototype.MA5 = function () {
  201. let data =
  202. {
  203. Name: 'MA', Description: '均线', IsMainIndex: true, StringFormat: 2,
  204. Args: [{ Name: 'M1', Value: 5 }, { Name: 'M2', Value: 10 }, { Name: 'M3', Value: 20 }, { Name: 'M4', Value: 60 }, { Name: 'M5', Value: 0 }],
  205. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" },{Name:'MA5',DynamicName:"MA{M5}" } ],
  206. Script: //脚本
  207. 'MA1:MA(CLOSE,M1);\n\
  208. MA2:MA(CLOSE,M2);\n\
  209. MA3:MA(CLOSE,M3);\n\
  210. MA4:MA(CLOSE,M4);\n\
  211. MA5:MA(CLOSE,M5);'
  212. };
  213. return data;
  214. }
  215. JSIndexScript.prototype.MA6 = function () {
  216. let data =
  217. {
  218. Name: 'MA', Description: '均线', IsMainIndex: true, StringFormat: 2,
  219. Args:
  220. [
  221. { Name: 'M1', Value: 5 }, { Name: 'M2', Value: 10 }, { Name: 'M3', Value: 20 }, { Name: 'M4', Value: 60 },
  222. { Name: 'M5', Value: 0 }, { Name: 'M6', Value: 0 }
  223. ],
  224. OutName:
  225. [
  226. {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" },
  227. {Name:'MA5',DynamicName:"MA{M5}" } ,{ Name:'MA6',DynamicName:"MA{M6}" }
  228. ],
  229. Script: //脚本
  230. 'MA1:MA(CLOSE,M1);\n\
  231. MA2:MA(CLOSE,M2);\n\
  232. MA3:MA(CLOSE,M3);\n\
  233. MA4:MA(CLOSE,M4);\n\
  234. MA5:MA(CLOSE,M5);\n\
  235. MA6:MA(CLOSE,M6);'
  236. };
  237. return data;
  238. }
  239. JSIndexScript.prototype.MA7 = function () {
  240. let data =
  241. {
  242. Name: 'MA', Description: '均线', IsMainIndex: true, StringFormat: 2,
  243. Args:
  244. [
  245. { Name: 'M1', Value: 5 }, { Name: 'M2', Value: 10 }, { Name: 'M3', Value: 20 }, { Name: 'M4', Value: 60 },
  246. { Name: 'M5', Value: 0 }, { Name: 'M6', Value: 0 }, { Name: 'M7', Value: 0 }
  247. ],
  248. OutName:
  249. [
  250. {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" },
  251. {Name:'MA5',DynamicName:"MA{M5}" } ,{ Name:'MA6',DynamicName:"MA{M6}" } ,{ Name:'MA7',DynamicName:"MA{M7}" }
  252. ],
  253. Script: //脚本
  254. 'MA1:MA(CLOSE,M1);\n\
  255. MA2:MA(CLOSE,M2);\n\
  256. MA3:MA(CLOSE,M3);\n\
  257. MA4:MA(CLOSE,M4);\n\
  258. MA5:MA(CLOSE,M5);\n\
  259. MA6:MA(CLOSE,M6);\n\
  260. MA7:MA(CLOSE,M7);'
  261. };
  262. return data;
  263. }
  264. JSIndexScript.prototype.MA8 = function () {
  265. let data =
  266. {
  267. Name: 'MA', Description: '均线', IsMainIndex: true, StringFormat: 2,
  268. Args:
  269. [
  270. { Name: 'M1', Value: 5 }, { Name: 'M2', Value: 10 }, { Name: 'M3', Value: 20 }, { Name: 'M4', Value: 60 },
  271. { Name: 'M5', Value: 0 }, { Name: 'M6', Value: 0 }, { Name: 'M7', Value: 0 }, { Name: 'M8', Value: 0 }
  272. ],
  273. OutName:
  274. [
  275. {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" },
  276. {Name:'MA5',DynamicName:"MA{M5}" } ,{ Name:'MA6',DynamicName:"MA{M6}" } ,{ Name:'MA7',DynamicName:"MA{M7}" },{ Name:'MA8',DynamicName:"MA{M8}" }
  277. ],
  278. Script: //脚本
  279. 'MA1:MA(CLOSE,M1);\n\
  280. MA2:MA(CLOSE,M2);\n\
  281. MA3:MA(CLOSE,M3);\n\
  282. MA4:MA(CLOSE,M4);\n\
  283. MA5:MA(CLOSE,M5);\n\
  284. MA6:MA(CLOSE,M6);\n\
  285. MA7:MA(CLOSE,M7);\n\
  286. MA8:MA(CLOSE,M8);'
  287. };
  288. return data;
  289. }
  290. JSIndexScript.prototype.EMA3=function()
  291. {
  292. let data=
  293. {
  294. Name:'EMA', Description:'指数移动平均值', IsMainIndex:true, StringFormat:2,
  295. Args:
  296. [
  297. { Name:'M1', Value:5}, { Name:'M2', Value:10 }, { Name:'M3', Value:20}
  298. ],
  299. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" } ],
  300. Script: //脚本
  301. 'MA1:EMA(CLOSE,M1);\n\
  302. MA2:EMA(CLOSE,M2);\n\
  303. MA3:EMA(CLOSE,M3);'
  304. };
  305. return data;
  306. }
  307. JSIndexScript.prototype.EMA4=function()
  308. {
  309. let data=
  310. {
  311. Name:'EMA', Description:'指数移动平均值', IsMainIndex:true, StringFormat:2,
  312. Args:
  313. [
  314. { Name:'M1', Value:5}, { Name:'M2', Value:10 }, { Name:'M3', Value:20} , { Name:'M4', Value:60}
  315. ],
  316. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" } ],
  317. Script: //脚本
  318. 'MA1:EMA(CLOSE,M1);\n\
  319. MA2:EMA(CLOSE,M2);\n\
  320. MA3:EMA(CLOSE,M3);\n\
  321. MA4:EMA(CLOSE,M4);'
  322. };
  323. return data;
  324. }
  325. JSIndexScript.prototype.EMA5=function()
  326. {
  327. let data=
  328. {
  329. Name:'EMA', Description:'指数移动平均值', IsMainIndex:true, StringFormat:2,
  330. Args:
  331. [
  332. { Name:'M1', Value:5}, { Name:'M2', Value:10 }, { Name:'M3', Value:20} , { Name:'M4', Value:60} ,
  333. { Name:'M5', Value:0}
  334. ],
  335. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" },
  336. {Name:'MA5',DynamicName:"MA{M5}" } ],
  337. Script: //脚本
  338. 'MA1:EMA(CLOSE,M1);\n\
  339. MA2:EMA(CLOSE,M2);\n\
  340. MA3:EMA(CLOSE,M3);\n\
  341. MA4:EMA(CLOSE,M4);\n\
  342. MA5:EMA(CLOSE,M5);'
  343. };
  344. return data;
  345. }
  346. JSIndexScript.prototype.EMA6=function()
  347. {
  348. let data=
  349. {
  350. Name:'EMA', Description:'指数移动平均值', IsMainIndex:true, StringFormat:2,
  351. Args:
  352. [
  353. { Name:'M1', Value:5}, { Name:'M2', Value:10 }, { Name:'M3', Value:20} , { Name:'M4', Value:60} ,
  354. { Name:'M5', Value:0},{ Name:'M6', Value:0}
  355. ],
  356. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" },{Name:'MA3',DynamicName:"MA{M3}" },{Name:'MA4',DynamicName:"MA{M4}" },
  357. {Name:'MA5',DynamicName:"MA{M5}" } ,{ Name:'MA6',DynamicName:"MA{M6}" } ],
  358. Script: //脚本
  359. 'MA1:EMA(CLOSE,M1);\n\
  360. MA2:EMA(CLOSE,M2);\n\
  361. MA3:EMA(CLOSE,M3);\n\
  362. MA4:EMA(CLOSE,M4);\n\
  363. MA5:EMA(CLOSE,M5);\n\
  364. MA6:EMA(CLOSE,M6);'
  365. };
  366. return data;
  367. }
  368. JSIndexScript.prototype.BOLL=function()
  369. {
  370. let data=
  371. {
  372. Name: 'BOLL', Description: '布林线', IsMainIndex: true,
  373. Args:[ { Name:'M', Value:20} ],
  374. Script: //脚本
  375. 'BOLL:MA(CLOSE,M);\n\
  376. UB:BOLL+2*STD(CLOSE,M);\n\
  377. LB:BOLL-2*STD(CLOSE,M);'
  378. };
  379. return data;
  380. }
  381. JSIndexScript.prototype.BOLL2=function()
  382. {
  383. let data=
  384. {
  385. Name: 'BOLL副图', Description: '布林线', IsMainIndex: false, KLineType: 2,
  386. Args:[ { Name:'M', Value:20} ],
  387. Script: //脚本
  388. 'BOLL:MA(CLOSE,M);\n\
  389. UB:BOLL+2*STD(CLOSE,M);\n\
  390. LB:BOLL-2*STD(CLOSE,M);'
  391. };
  392. return data;
  393. }
  394. JSIndexScript.prototype.BBI=function()
  395. {
  396. let data=
  397. {
  398. Name:'BBI', Description:'多空均线', IsMainIndex:true,
  399. Args:[ { Name:'M1', Value:3}, { Name:'M2', Value:6}, { Name:'M3', Value:12}, { Name:'M4', Value:24} ],
  400. Script: //脚本
  401. 'BBI:(MA(CLOSE,M1)+MA(CLOSE,M2)+MA(CLOSE,M3)+MA(CLOSE,M4))/4;'
  402. };
  403. return data;
  404. }
  405. JSIndexScript.prototype.DKX=function()
  406. {
  407. let data=
  408. {
  409. Name:'DKX', Description:'多空线', IsMainIndex:false,
  410. Args:[ { Name:'M', Value:10} ],
  411. Script: //脚本
  412. 'MID:=(3*CLOSE+LOW+OPEN+HIGH)/6;\n\
  413. DKX:(20*MID+19*REF(MID,1)+18*REF(MID,2)+17*REF(MID,3)+\n\
  414. 16*REF(MID,4)+15*REF(MID,5)+14*REF(MID,6)+\n\
  415. 13*REF(MID,7)+12*REF(MID,8)+11*REF(MID,9)+\n\
  416. 10*REF(MID,10)+9*REF(MID,11)+8*REF(MID,12)+\n\
  417. 7*REF(MID,13)+6*REF(MID,14)+5*REF(MID,15)+\n\
  418. 4*REF(MID,16)+3*REF(MID,17)+2*REF(MID,18)+REF(MID,20))/210;\n\
  419. MADKX:MA(DKX,M);'
  420. };
  421. return data;
  422. }
  423. JSIndexScript.prototype.MIKE=function()
  424. {
  425. let data=
  426. {
  427. Name:'MIKE', Description:'麦克支撑压力', IsMainIndex:true,
  428. Args:[ { Name:'N', Value:10} ],
  429. Script: //脚本
  430. 'HLC:=REF(MA((HIGH+LOW+CLOSE)/3,N),1);\n\
  431. HV:=EMA(HHV(HIGH,N),3);\n\
  432. LV:=EMA(LLV(LOW,N),3);\n\
  433. STOR:EMA(2*HV-LV,3);\n\
  434. MIDR:EMA(HLC+HV-LV,3);\n\
  435. WEKR:EMA(HLC*2-LV,3);\n\
  436. WEKS:EMA(HLC*2-HV,3);\n\
  437. MIDS:EMA(HLC-HV+LV,3);\n\
  438. STOS:EMA(2*LV-HV,3);'
  439. };
  440. return data;
  441. }
  442. JSIndexScript.prototype.PBX=function()
  443. {
  444. let data=
  445. {
  446. Name:'PBX', Description:'瀑布线', IsMainIndex:true,
  447. Args:[ { Name:'M1', Value:4}, { Name:'M2', Value:6}, { Name:'M3', Value:9}, { Name:'M4', Value:13},{ Name:'M5', Value:18},{ Name:'M6', Value:24} ],
  448. Script: //脚本
  449. 'PBX1:(EMA(CLOSE,M1)+MA(CLOSE,M1*2)+MA(CLOSE,M1*4))/3;\n\
  450. PBX2:(EMA(CLOSE,M2)+MA(CLOSE,M2*2)+MA(CLOSE,M2*4))/3;\n\
  451. PBX3:(EMA(CLOSE,M3)+MA(CLOSE,M3*2)+MA(CLOSE,M3*4))/3;\n\
  452. PBX4:(EMA(CLOSE,M4)+MA(CLOSE,M4*2)+MA(CLOSE,M4*4))/3;\n\
  453. PBX5:(EMA(CLOSE,M5)+MA(CLOSE,M5*2)+MA(CLOSE,M5*4))/3;\n\
  454. PBX6:(EMA(CLOSE,M6)+MA(CLOSE,M6*2)+MA(CLOSE,M6*4))/3;'
  455. };
  456. return data;
  457. }
  458. JSIndexScript.prototype.ENE=function()
  459. {
  460. let data=
  461. {
  462. Name:'ENE', Description:'轨道线', IsMainIndex:true,
  463. Args:[ { Name:'N', Value:25}, { Name:'M1', Value:6}, { Name:'M2', Value:6} ],
  464. Script: //脚本
  465. 'UPPER:(1+M1/100)*MA(CLOSE,N);\n\
  466. LOWER:(1-M2/100)*MA(CLOSE,N);\n\
  467. ENE:(UPPER+LOWER)/2;'
  468. };
  469. return data;
  470. }
  471. JSIndexScript.prototype.MACD=function()
  472. {
  473. let data=
  474. {
  475. Name:'MACD', Description:'平滑异同平均', IsMainIndex:false,
  476. Args:[ { Name:'SHORT', Value:12}, { Name:'LONG', Value:26}, { Name:'MID', Value:9} ],
  477. Script: //脚本
  478. 'DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);\n\
  479. DEA:EMA(DIF,MID);\n\
  480. MACD:(DIF-DEA)*2,COLORSTICK;'
  481. };
  482. return data;
  483. }
  484. //上下柱子
  485. JSIndexScript.prototype.MACD2=function()
  486. {
  487. let data=
  488. {
  489. Name:'MACD', Description:'平滑异同平均', IsMainIndex:false,
  490. Args:[ { Name:'SHORT', Value:12}, { Name:'LONG', Value:26}, { Name:'MID', Value:9} ],
  491. Script: //脚本
  492. 'DIF2:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);\n\
  493. DEA2:=EMA(DIF2,MID);\n\
  494. MACD:(DIF2-DEA2)*2,COLORSTICK,LINETHICK50;\n\
  495. DIF:DIF2;\n\
  496. DEA:DEA2;'
  497. };
  498. return data;
  499. }
  500. JSIndexScript.prototype.KDJ=function()
  501. {
  502. let data=
  503. {
  504. Name:'KDJ', Description:'随机指标', IsMainIndex:false,
  505. Args:[ { Name:'N', Value:9}, { Name:'M1', Value:3}, { Name:'M2', Value:3} ],
  506. Script: //脚本
  507. 'RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;\n\
  508. K:SMA(RSV,M1,1);\n\
  509. D:SMA(K,M2,1);\n\
  510. J:3*K-2*D;'
  511. };
  512. return data;
  513. }
  514. JSIndexScript.prototype.VOL=function()
  515. {
  516. let data=
  517. {
  518. Name: 'VOL', Description: '成交量', IsMainIndex: false, FloatPrecision: 0,
  519. Args:[ { Name:'M1', Value:5}, { Name:'M2', Value:10} ],
  520. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" }],
  521. Script: //脚本
  522. 'VOLUME:=VOL;\n\
  523. VOL:VOL,VOLSTICK;\n\
  524. MA1:MA(VOLUME,M1);\n\
  525. MA2:MA(VOLUME,M2);'
  526. };
  527. return data;
  528. }
  529. JSIndexScript.prototype.VOL2=function()
  530. {
  531. let data=
  532. {
  533. Name:'VOL', Description:'成交量', IsMainIndex:false,FloatPrecision:0,
  534. Args:[ { Name:'M1', Value:5}, { Name:'M2', Value:10} ],
  535. OutName:[ {Name:'MA1',DynamicName:"MA{M1}" }, {Name:'MA2',DynamicName:"MA{M2}" }],
  536. Script: //脚本
  537. 'VOL:VOL,VOLSTICK,STICKTYPE(1);\n\
  538. MA1:MA(VOL,M1);\n\
  539. MA2:MA(VOL,M2);'
  540. };
  541. return data;
  542. }
  543. JSIndexScript.prototype.RSI=function()
  544. {
  545. let data=
  546. {
  547. Name:'RSI', Description:'相对强弱指标', IsMainIndex:false,
  548. Args:[ { Name:'N1', Value:6}, { Name:'N2', Value:12}, { Name:'N3', Value:24} ],
  549. Script: //脚本
  550. 'LC:=REF(CLOSE,1);\n\
  551. RSI1:SMA(MAX(CLOSE-LC,0),N1,1)/SMA(ABS(CLOSE-LC),N1,1)*100;\n\
  552. RSI2:SMA(MAX(CLOSE-LC,0),N2,1)/SMA(ABS(CLOSE-LC),N2,1)*100;\n\
  553. RSI3:SMA(MAX(CLOSE-LC,0),N3,1)/SMA(ABS(CLOSE-LC),N3,1)*100;'
  554. };
  555. return data;
  556. }
  557. JSIndexScript.prototype.BRAR=function()
  558. {
  559. let data=
  560. {
  561. Name:'BRAR', Description:'情绪指标', IsMainIndex:false,
  562. Args:[ { Name:'N', Value:26} ],
  563. Script: //脚本
  564. 'BR:SUM(MAX(0,HIGH-REF(CLOSE,1)),N)/SUM(MAX(0,REF(CLOSE,1)-LOW),N)*100;\n\
  565. AR:SUM(HIGH-OPEN,N)/SUM(OPEN-LOW,N)*100;'
  566. };
  567. return data;
  568. }
  569. JSIndexScript.prototype.WR=function()
  570. {
  571. let data=
  572. {
  573. Name:'WR', Description:'威廉指标', IsMainIndex:false,
  574. Args:[ { Name:'N', Value:10}, { Name:'N1', Value:6} ],
  575. Script: //脚本
  576. 'WR1:100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N));\n\
  577. WR2:100*(HHV(HIGH,N1)-CLOSE)/(HHV(HIGH,N1)-LLV(LOW,N1));'
  578. };
  579. return data;
  580. }
  581. JSIndexScript.prototype.BIAS=function()
  582. {
  583. let data=
  584. {
  585. Name:'BIAS', Description:'乖离率', IsMainIndex:false,
  586. Args:[ { Name:'N1', Value:6}, { Name:'N2', Value:12}, { Name:'N3', Value:24} ],
  587. Script: //脚本
  588. 'BIAS1 :(CLOSE-MA(CLOSE,N1))/MA(CLOSE,N1)*100;\n\
  589. BIAS2 :(CLOSE-MA(CLOSE,N2))/MA(CLOSE,N2)*100;\n\
  590. BIAS3 :(CLOSE-MA(CLOSE,N3))/MA(CLOSE,N3)*100;'
  591. };
  592. return data;
  593. }
  594. JSIndexScript.prototype.OBV=function()
  595. {
  596. let data=
  597. {
  598. Name:'OBV', Description:'累积能量线', IsMainIndex:false,
  599. Args:[ { Name:'M', Value:30} ],
  600. Script: //脚本
  601. 'VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL);\n\
  602. OBV:SUM(IF(CLOSE==REF(CLOSE,1),0,VA),0);\n\
  603. MAOBV:MA(OBV,M);'
  604. };
  605. return data;
  606. }
  607. JSIndexScript.prototype.DMI=function()
  608. {
  609. let data=
  610. {
  611. Name:'DMI', Description:'趋向指标', IsMainIndex:false,
  612. Args:[ { Name:'N', Value:14}, { Name:'MM', Value:6} ],
  613. Script: //脚本
  614. 'MTR:=EXPMEMA(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(REF(CLOSE,1)-LOW)),N);\n\
  615. HD :=HIGH-REF(HIGH,1);\n\
  616. LD :=REF(LOW,1)-LOW;\n\
  617. DMP:=EXPMEMA(IF(HD>0&&HD>LD,HD,0),N);\n\
  618. DMM:=EXPMEMA(IF(LD>0&&LD>HD,LD,0),N);\n\
  619. PDI: DMP*100/MTR;\n\
  620. MDI: DMM*100/MTR;\n\
  621. ADX: EXPMEMA(ABS(MDI-PDI)/(MDI+PDI)*100,MM);\n\
  622. ADXR:EXPMEMA(ADX,MM);'
  623. };
  624. return data;
  625. }
  626. JSIndexScript.prototype.CR=function()
  627. {
  628. let data=
  629. {
  630. Name:'CR', Description:'带状能量线', IsMainIndex:false,
  631. Args:[ { Name:'N', Value:26}, { Name:'M1', Value:10},{ Name:'M2', Value:20},{ Name:'M3', Value:40},{ Name:'M4', Value:62} ],
  632. Script: //脚本
  633. 'MID:=REF(HIGH+LOW,1)/2;\n\
  634. CR:SUM(MAX(0,HIGH-MID),N)/SUM(MAX(0,MID-LOW),N)*100;\n\
  635. MA1:REF(MA(CR,M1),M1/2.5+1);\n\
  636. MA2:REF(MA(CR,M2),M2/2.5+1);\n\
  637. MA3:REF(MA(CR,M3),M3/2.5+1);\n\
  638. MA4:REF(MA(CR,M4),M4/2.5+1);'
  639. };
  640. return data;
  641. }
  642. JSIndexScript.prototype.PSY=function()
  643. {
  644. let data=
  645. {
  646. Name:'PSY', Description:'心理线', IsMainIndex:false,
  647. Args:[ { Name:'N', Value:12}, { Name:'M', Value:6} ],
  648. Script: //脚本
  649. 'PSY:COUNT(CLOSE>REF(CLOSE,1),N)/N*100;\r\
  650. PSYMA:MA(PSY,M);'
  651. };
  652. return data;
  653. }
  654. JSIndexScript.prototype.CCI=function()
  655. {
  656. let data=
  657. {
  658. Name:'CCI', Description:'商品路径指标', IsMainIndex:false,
  659. Args:[ { Name:'N', Value:14} ],
  660. Script: //脚本
  661. 'TYP:=(HIGH+LOW+CLOSE)/3;\n\
  662. CCI:(TYP-MA(TYP,N))/(0.015*AVEDEV(TYP,N));'
  663. };
  664. return data;
  665. }
  666. JSIndexScript.prototype.DMA=function()
  667. {
  668. let data=
  669. {
  670. Name:'DMA', Description:'平均差', IsMainIndex:false,
  671. Args:[ { Name:'N1', Value:10},{ Name:'N2', Value:50},{ Name:'M', Value:10} ],
  672. Script: //脚本
  673. 'DIF:MA(CLOSE,N1)-MA(CLOSE,N2);\n\
  674. DIFMA:MA(DIF,M);'
  675. };
  676. return data;
  677. }
  678. JSIndexScript.prototype.TRIX=function()
  679. {
  680. let data=
  681. {
  682. Name:'TRIX', Description:'三重指数平均线', IsMainIndex:false,
  683. Args:[ { Name:'N', Value:12},{ Name:'M', Value:9} ],
  684. Script: //脚本
  685. 'MTR:=EMA(EMA(EMA(CLOSE,N),N),N);\n\
  686. TRIX:(MTR-REF(MTR,1))/REF(MTR,1)*100;\n\
  687. MATRIX:MA(TRIX,M) ;'
  688. };
  689. return data;
  690. }
  691. JSIndexScript.prototype.VR=function()
  692. {
  693. let data=
  694. {
  695. Name:'VR', Description:'成交量变异率', IsMainIndex:false,
  696. Args:[ { Name:'N', Value:26},{ Name:'M', Value:6} ],
  697. Script: //脚本
  698. 'TH:=SUM(IF(CLOSE>REF(CLOSE,1),VOL,0),N);\n\
  699. TL:=SUM(IF(CLOSE<REF(CLOSE,1),VOL,0),N);\n\
  700. TQ:=SUM(IF(CLOSE==REF(CLOSE,1),VOL,0),N);\n\
  701. VR:100*(TH*2+TQ)/(TL*2+TQ);\n\
  702. MAVR:MA(VR,M);'
  703. };
  704. return data;
  705. }
  706. JSIndexScript.prototype.EMV=function()
  707. {
  708. let data=
  709. {
  710. Name:'EMV', Description:'简易波动指标', IsMainIndex:false,
  711. Args:[ { Name:'N', Value:14},{ Name:'M', Value:9} ],
  712. Script: //脚本
  713. 'VOLUME:=MA(VOL,N)/VOL;\n\
  714. MID:=100*(HIGH+LOW-REF(HIGH+LOW,1))/(HIGH+LOW);\n\
  715. EMV:MA(MID*VOLUME*(HIGH-LOW)/MA(HIGH-LOW,N),N);\n\
  716. MAEMV:MA(EMV,M);'
  717. };
  718. return data;
  719. }
  720. JSIndexScript.prototype.ROC=function()
  721. {
  722. let data=
  723. {
  724. Name:'ROC', Description:'变动率指标', IsMainIndex:false,
  725. Args:[ { Name:'N', Value:12},{ Name:'M', Value:6} ],
  726. Script: //脚本
  727. 'ROC:100*(CLOSE-REF(CLOSE,N))/REF(CLOSE,N);\n\
  728. MAROC:MA(ROC,M);'
  729. };
  730. return data;
  731. }
  732. JSIndexScript.prototype.MIM=function()
  733. {
  734. let data=
  735. {
  736. Name:'MIM', Description:'动量线', IsMainIndex:false,
  737. Args:[ { Name:'N', Value:12},{ Name:'M', Value:6} ],
  738. Script: //脚本
  739. 'MTM:CLOSE-REF(CLOSE,N);\n\
  740. MAMTM:MA(MTM,M);'
  741. };
  742. return data;
  743. }
  744. JSIndexScript.prototype.FSL=function()
  745. {
  746. let data=
  747. {
  748. Name:'FSL', Description:'分水岭', IsMainIndex:false,
  749. Args:[ ],
  750. Script: //脚本
  751. 'SWL:(EMA(CLOSE,5)*7+EMA(CLOSE,10)*3)/10;\n\
  752. SWS:DMA(EMA(CLOSE,12),MAX(1,100*(SUM(VOL,5)/(3*CAPITAL))));'
  753. };
  754. return data;
  755. }
  756. JSIndexScript.prototype.CYR=function()
  757. {
  758. let data=
  759. {
  760. Name:'CYR', Description:'市场强弱', IsMainIndex:false,
  761. Args:[ { Name:'N', Value:13},{ Name:'M', Value:5}],
  762. Script: //脚本
  763. 'DIVE:=0.01*EMA(AMOUNT,N)/EMA(VOL,N);\n\
  764. CYR:(DIVE/REF(DIVE,1)-1)*100;\n\
  765. MACYR:MA(CYR,M);'
  766. };
  767. return data;
  768. }
  769. JSIndexScript.prototype.MASS=function()
  770. {
  771. let data=
  772. {
  773. Name:'MASS', Description:'市场强弱', IsMainIndex:false,
  774. Args:[ { Name:'N1', Value:9},{ Name:'N2', Value:25}, { Name:'M', Value:6}],
  775. Script: //脚本
  776. 'MASS:SUM(MA(HIGH-LOW,N1)/MA(MA(HIGH-LOW,N1),N1),N2);\n\
  777. MAMASS:MA(MASS,M);'
  778. };
  779. return data;
  780. }
  781. JSIndexScript.prototype.WAD=function()
  782. {
  783. let data=
  784. {
  785. Name:'WAD', Description:'威廉多空力度线', IsMainIndex:false,
  786. Args:[ { Name:'M', Value:30}],
  787. Script: //脚本
  788. 'MIDA:=CLOSE-MIN(REF(CLOSE,1),LOW);\n\
  789. MIDB:=IF(CLOSE<REF(CLOSE,1),CLOSE-MAX(REF(CLOSE,1),HIGH),0);\n\
  790. WAD:SUM(IF(CLOSE>REF(CLOSE,1),MIDA,MIDB),0);\n\
  791. MAWAD:MA(WAD,M);'
  792. };
  793. return data;
  794. }
  795. JSIndexScript.prototype.CHO=function()
  796. {
  797. let data=
  798. {
  799. Name:'CHO', Description:'佳庆指标', IsMainIndex:false,
  800. Args:[ { Name:'N1', Value:10}, { Name:'N2', Value:20}, { Name:'M', Value:6}],
  801. Script: //脚本
  802. 'MID:=SUM(VOL*(2*CLOSE-HIGH-LOW)/(HIGH+LOW),0);\n\
  803. CHO:MA(MID,N1)-MA(MID,N2);\n\
  804. MACHO:MA(CHO,M);'
  805. };
  806. return data;
  807. }
  808. JSIndexScript.prototype.ADTM=function()
  809. {
  810. let data=
  811. {
  812. Name:'ADTM', Description:'动态买卖气指标', IsMainIndex:false,
  813. Args:[ { Name:'N', Value:23}, { Name:'M', Value:8}],
  814. Script: //脚本
  815. 'DTM:=IF(OPEN<=REF(OPEN,1),0,MAX((HIGH-OPEN),(OPEN-REF(OPEN,1))));\n\
  816. DBM:=IF(OPEN>=REF(OPEN,1),0,MAX((OPEN-LOW),(OPEN-REF(OPEN,1))));\n\
  817. STM:=SUM(DTM,N);\n\
  818. SBM:=SUM(DBM,N);\n\
  819. ADTM:IF(STM>SBM,(STM-SBM)/STM,IF(STM==SBM,0,(STM-SBM)/SBM));\n\
  820. MAADTM:MA(ADTM,M);'
  821. };
  822. return data;
  823. }
  824. JSIndexScript.prototype.HSL=function()
  825. {
  826. let data=
  827. {
  828. Name:'HSL', Description:'换手线', IsMainIndex:false,
  829. Args:[ { Name:'N', Value:5} ],
  830. Script: //脚本
  831. 'HSL:IF((SETCODE==0||SETCODE==1),100*VOL,VOL)/(FINANCE(7)/100);\n\
  832. MAHSL:MA(HSL,N);'
  833. };
  834. return data;
  835. }
  836. JSIndexScript.prototype.BIAS36=function()
  837. {
  838. let data=
  839. {
  840. Name:'BIAS36', Description:'三六乖离', IsMainIndex:false,
  841. Args:[ { Name:'M', Value:6} ],
  842. Script: //脚本
  843. 'BIAS36:MA(CLOSE,3)-MA(CLOSE,6);\n\
  844. BIAS612:MA(CLOSE,6)-MA(CLOSE,12);\n\
  845. MABIAS:MA(BIAS36,M);'
  846. };
  847. return data;
  848. }
  849. JSIndexScript.prototype.BIAS_QL=function()
  850. {
  851. let data=
  852. {
  853. Name:'BIAS_QL', Description:'乖离率-传统版', IsMainIndex:false,
  854. Args:[ { Name:'N', Value:6}, { Name:'M', Value:6} ],
  855. Script: //脚本
  856. 'BIAS :(CLOSE-MA(CLOSE,N))/MA(CLOSE,N)*100;\n\
  857. BIASMA :MA(BIAS,M);'
  858. };
  859. return data;
  860. }
  861. JSIndexScript.prototype.DPO=function()
  862. {
  863. let data=
  864. {
  865. Name:'DPO', Description:'区间震荡线', IsMainIndex:false,
  866. Args:[ { Name:'N', Value:20}, { Name:'M', Value:6} ],
  867. Script: //脚本
  868. 'DPO:CLOSE-REF(MA(CLOSE,N),N/2+1);\n\
  869. MADPO:MA(DPO,M);'
  870. };
  871. return data;
  872. }
  873. JSIndexScript.prototype.OSC=function()
  874. {
  875. let data=
  876. {
  877. Name:'OSC', Description:'变动速率线', IsMainIndex:false,
  878. Args:[ { Name:'N', Value:20}, { Name:'M', Value:6} ],
  879. Script: //脚本
  880. 'OSC:100*(CLOSE-MA(CLOSE,N));\n\
  881. MAOSC:EXPMEMA(OSC,M);'
  882. };
  883. return data;
  884. }
  885. JSIndexScript.prototype.ATR=function()
  886. {
  887. let data=
  888. {
  889. Name:'ATR', Description:'真实波幅', IsMainIndex:false,
  890. Args:[ { Name:'N', Value:14}],
  891. Script: //脚本
  892. 'MTR:MAX(MAX((HIGH-LOW),ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));\n\
  893. ATR:MA(MTR,N);'
  894. };
  895. return data;
  896. }
  897. JSIndexScript.prototype.NVI=function()
  898. {
  899. let data=
  900. {
  901. Name:'ATR', Description:'负成交量', IsMainIndex:false,
  902. Args:[ { Name:'N', Value:72} ],
  903. Script: //脚本
  904. 'NVI:100*MULAR(IF(V<REF(V,1),C/REF(C,1),1),0);\n\
  905. MANVI:MA(NVI,N);'
  906. };
  907. return data;
  908. }
  909. JSIndexScript.prototype.PVI=function()
  910. {
  911. let data=
  912. {
  913. Name:'PVI', Description:'正成交量', IsMainIndex:false,
  914. Args:[ { Name:'N', Value:72} ],
  915. Script: //脚本
  916. 'NVI:100*MULAR(IF(V>REF(V,1),C/REF(C,1),1),0);\n\
  917. MANVI:MA(NVI,N);'
  918. };
  919. return data;
  920. }
  921. JSIndexScript.prototype.UOS=function()
  922. {
  923. let data=
  924. {
  925. Name:'UOS', Description:'终极指标', IsMainIndex:false,
  926. Args:[ { Name:'N1', Value:7} ,{ Name:'N2', Value:14},{ Name:'N3', Value:28},{ Name:'M', Value:6}],
  927. Script: //脚本
  928. 'TH:=MAX(HIGH,REF(CLOSE,1));\n\
  929. TL:=MIN(LOW,REF(CLOSE,1));\n\
  930. ACC1:=SUM(CLOSE-TL,N1)/SUM(TH-TL,N1);\n\
  931. ACC2:=SUM(CLOSE-TL,N2)/SUM(TH-TL,N2);\n\
  932. ACC3:=SUM(CLOSE-TL,N3)/SUM(TH-TL,N3);\n\
  933. UOS:(ACC1*N2*N3+ACC2*N1*N3+ACC3*N1*N2)*100/(N1*N2+N1*N3+N2*N3);\n\
  934. MAUOS:EXPMEMA(UOS,M);'
  935. };
  936. return data;
  937. }
  938. JSIndexScript.prototype.CYW=function()
  939. {
  940. let data=
  941. {
  942. Name:'CYW', Description:'主力控盘', IsMainIndex:false,
  943. Args:[ ],
  944. Script: //脚本
  945. 'VAR1:=CLOSE-LOW;\n\
  946. VAR2:=HIGH-LOW;\n\
  947. VAR3:=CLOSE-HIGH;\n\
  948. VAR4:=IF(HIGH>LOW,(VAR1/VAR2+VAR3/VAR2)*VOL,0);\n\
  949. CYW: SUM(VAR4,10)/10000, COLORSTICK;'
  950. };
  951. return data;
  952. }
  953. JSIndexScript.prototype.LON=function()
  954. {
  955. let data=
  956. {
  957. Name:'LON', Description:'龙系长线', IsMainIndex:false,
  958. Args:[ { Name:'N', Value:10} ],
  959. Script: //脚本
  960. 'LC := REF(CLOSE,1);\n\
  961. VID := SUM(VOL,2)/(((HHV(HIGH,2)-LLV(LOW,2)))*100);\n\
  962. RC := (CLOSE-LC)*VID;\n\
  963. LONG := SUM(RC,0);\n\
  964. DIFF := SMA(LONG,10,1);\n\
  965. DEA := SMA(LONG,20,1);\n\
  966. LON : DIFF-DEA;\n\
  967. LONMA : MA(LON,10);\n\
  968. LONT : LON, COLORSTICK;'
  969. };
  970. return data;
  971. }
  972. JSIndexScript.prototype.NDB = function ()
  973. {
  974. let data =
  975. {
  976. Name: 'NDB', Description: '脑电波', IsMainIndex: false,
  977. Args: [{ Name: 'P1', Value: 5 }, { Name: 'P2', Value: 10 }],
  978. Script: //脚本
  979. 'HH:=IF(C/REF(C,1)>1.098 AND L>REF(H,1),2*C-REF(C,1)-H,2*C-H-L);\n\
  980. V1:= BARSCOUNT(C) - 1;\n\
  981. V2:= 2 * REF(C, V1) - REF(H, V1) - REF(L, V1);\n\
  982. DK: SUM(HH, 0) + V2;\n\
  983. MDK5: MA(DK, P1);\n\
  984. MDK10: MA(DK, P2);'
  985. };
  986. return data;
  987. }
  988. JSIndexScript.prototype.SKDJ = function ()
  989. {
  990. let data =
  991. {
  992. Name: 'SKDJ', Description: '慢速随机指标', IsMainIndex: false,
  993. Args: [{ Name: 'N', Value: 9 }, { Name: 'M', Value: 3 }],
  994. Script: //脚本
  995. 'LOWV:=LLV(LOW,N);\n\
  996. HIGHV:=HHV(HIGH,N);\n\
  997. RSV:=EMA((CLOSE-LOWV)/(HIGHV-LOWV)*100,M);\n\
  998. K:EMA(RSV,M);\n\
  999. D:MA(K,M);'
  1000. };
  1001. return data;
  1002. }
  1003. JSIndexScript.prototype.KD = function ()
  1004. {
  1005. let data =
  1006. {
  1007. Name: 'KD', Description: '随机指标KD', IsMainIndex: false,
  1008. Args: [{ Name: 'N', Value: 9 }, { Name: 'M1', Value: 3 }, { Name: 'M2', Value: 3 }],
  1009. Script: //脚本
  1010. 'RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;\n\
  1011. K:SMA(RSV,M1,1);\n\
  1012. D:SMA(K,M2,1);'
  1013. };
  1014. return data;
  1015. }
  1016. JSIndexScript.prototype.FKX = function ()
  1017. {
  1018. let data =
  1019. {
  1020. Name: 'FKX', Description: '反K线', IsMainIndex: true,
  1021. Args: [],
  1022. Script: //脚本
  1023. 'DRAWKLINE(-LOW, -OPEN, -HIGH, -CLOSE);'
  1024. };
  1025. return data;
  1026. }
  1027. JSIndexScript.prototype.DKCOL = function ()
  1028. {
  1029. let data =
  1030. {
  1031. Name: 'DKCOL', Description: '多空能量柱(适用于分时主图)', IsMainIndex: true,
  1032. Args: [{ Name: 'N', Value: 5 }],
  1033. Script: //脚本
  1034. 'FF:=(C-REF(C,N))/REF(C,N);\n\
  1035. STICKLINE(FF>0,DYNAINFO(3),DYNAINFO(3)*(1+FF),0.5,0),COLORRED;\n\
  1036. STICKLINE(FF<0,DYNAINFO(3),DYNAINFO(3)*(1+FF),0.5,0),COLORGREEN;'
  1037. };
  1038. return data;
  1039. }
  1040. JSIndexScript.prototype.UDL = function ()
  1041. {
  1042. let data =
  1043. {
  1044. Name: 'UDL', Description: '引力线', IsMainIndex: false,
  1045. Args: [{ Name: 'N1', Value: 3 }, { Name: 'N2', Value: 5 }, { Name: 'N3', Value: 10 }, { Name: 'N4', Value: 20 }, { Name: 'M', Value: 6 }],
  1046. Script: //脚本
  1047. 'UDL:(MA(CLOSE,N1)+MA(CLOSE,N2)+MA(CLOSE,N3)+MA(CLOSE,N4))/4;\n\
  1048. MAUDL:MA(UDL,M);'
  1049. };
  1050. return data;
  1051. }
  1052. JSIndexScript.prototype.MFI = function ()
  1053. {
  1054. let data =
  1055. {
  1056. Name: 'MFI', Description: '资金流量指标', IsMainIndex: false,
  1057. Args: [{ Name: 'N', Value: 14 }, { Name: 'N2', Value: 6 }],
  1058. Script: //脚本
  1059. 'TYP := (HIGH + LOW + CLOSE)/3;\n\
  1060. V1:=SUM(IF(TYP>REF(TYP,1),TYP*VOL,0),N)/SUM(IF(TYP<REF(TYP,1),TYP*VOL,0),N);\n\
  1061. MFI:100-(100/(1+V1));'
  1062. };
  1063. return data;
  1064. }
  1065. JSIndexScript.prototype.LWR = function ()
  1066. {
  1067. let data =
  1068. {
  1069. Name: 'LWR', Description: 'LWR威廉指标', IsMainIndex: false,
  1070. Args: [{ Name: 'N', Value: 9 }, { Name: 'M1', Value: 3 }, { Name: 'M2', Value: 3 }],
  1071. Script: //脚本
  1072. 'RSV:= (HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N))*100;\n\
  1073. LWR1:SMA(RSV,M1,1);\n\
  1074. LWR2:SMA(LWR1,M2,1);'
  1075. };
  1076. return data;
  1077. }
  1078. JSIndexScript.prototype.MARSI = function ()
  1079. {
  1080. let data =
  1081. {
  1082. Name: 'MARSI', Description: '相对强弱平均线', IsMainIndex: false,
  1083. Args: [{ Name: 'M1', Value: 10 }, { Name: 'M2', Value: 6 }],
  1084. Script: //脚本
  1085. 'DIF:=CLOSE-REF(CLOSE,1);\n\
  1086. VU:=IF(DIF>=0,DIF,0);\n\
  1087. VD:=IF(DIF<0,-DIF,0);\n\
  1088. MAU1:=MEMA(VU,M1);\n\
  1089. MAD1:=MEMA(VD,M1);\n\
  1090. MAU2:=MEMA(VU,M2);\n\
  1091. MAD2:=MEMA(VD,M2);\n\
  1092. RSI10:MA(100*MAU1/(MAU1+MAD1),M1);\n\
  1093. RSI6:MA(100*MAU2/(MAU2+MAD2),M2);'
  1094. };
  1095. return data;
  1096. }
  1097. JSIndexScript.prototype.CYD = function ()
  1098. {
  1099. let data =
  1100. {
  1101. Name: 'CYD', Description: '承接因子', IsMainIndex: false,
  1102. Args: [{ Name: 'N', Value: 21 }],
  1103. Script: //脚本
  1104. 'CYDS:WINNER(CLOSE)/(VOL/CAPITAL);\n\
  1105. CYDN:WINNER(CLOSE)/MA(VOL/CAPITAL,N);'
  1106. };
  1107. return data;
  1108. }
  1109. JSIndexScript.prototype.CYF = function ()
  1110. {
  1111. let data =
  1112. {
  1113. Name: 'CYF', Description: '市场能量', IsMainIndex: false,
  1114. Args: [{ Name: 'N', Value: 21 }],
  1115. Script: //脚本
  1116. 'CYF:100-100/(1+EMA(HSL,N));'
  1117. };
  1118. return data;
  1119. }
  1120. JSIndexScript.prototype.TAPI = function ()
  1121. {
  1122. let data =
  1123. {
  1124. Name: 'TAPI', Description: '加权指数成交值', IsMainIndex: false,
  1125. Args: [{ Name: 'M', Value: 6 }],
  1126. Script: //脚本
  1127. 'TAPI:AMOUNT/INDEXC;\n\
  1128. MATAIP:MA(TAPI,M);'
  1129. };
  1130. return data;
  1131. }
  1132. JSIndexScript.prototype.VMACD = function ()
  1133. {
  1134. let data =
  1135. {
  1136. Name: 'VMACD', Description: '量平滑异同平均', IsMainIndex: false,
  1137. Args: [{ Name: 'SHORT', Value: 12 }, { Name: 'LONG', Value: 26 }, { Name: 'MID', Value: 9 }],
  1138. Script: //脚本
  1139. 'DIF:EMA(VOL,SHORT)-EMA(VOL,LONG);\n\
  1140. DEA:EMA(DIF,MID);\n\
  1141. MACD:DIF-DEA,COLORSTICK;'
  1142. };
  1143. return data;
  1144. }
  1145. JSIndexScript.prototype.QACD = function ()
  1146. {
  1147. let data =
  1148. {
  1149. Name: 'QACD', Description: '快速异同平均', IsMainIndex: false,
  1150. Args: [{ Name: 'N1', Value: 12 }, { Name: 'N2', Value: 26 }, { Name: 'M', Value: 9 }],
  1151. Script: //脚本
  1152. 'DIF:EMA(CLOSE,N1)-EMA(CLOSE,N2);\n\
  1153. MACD:EMA(DIF,M);\n\
  1154. DDIF:DIF-MACD;'
  1155. };
  1156. return data;
  1157. }
  1158. JSIndexScript.prototype.VPT = function ()
  1159. {
  1160. let data =
  1161. {
  1162. Name: 'VPT', Description: '量价曲线', IsMainIndex: false,
  1163. Args: [{ Name: 'N', Value: 51 }, { Name: 'M', Value: 6 }],
  1164. Script: //脚本
  1165. 'VPT:SUM(VOL*(CLOSE-REF(CLOSE,1))/REF(CLOSE,1),N);\n\
  1166. MAVPT:MA(VPT,M);'
  1167. };
  1168. return data;
  1169. }
  1170. JSIndexScript.prototype.WVAD = function ()
  1171. {
  1172. let data =
  1173. {
  1174. Name: 'WVAD', Description: '威廉变异离散量', IsMainIndex: false,
  1175. Args: [{ Name: 'N', Value: 24 }, { Name: 'M', Value: 6 }],
  1176. Script: //脚本
  1177. 'WVAD:SUM((CLOSE-OPEN)/(HIGH-LOW)*VOL,N)/10000;\n\
  1178. MAWVAD:MA(WVAD,M);'
  1179. };
  1180. return data;
  1181. }
  1182. JSIndexScript.prototype.DBQR = function ()
  1183. {
  1184. let data =
  1185. {
  1186. Name: 'WVAD', Description: '对比强弱', IsMainIndex: false,
  1187. Args: [{ Name: 'N', Value: 5 }, { Name: 'M1', Value: 10 }, { Name: 'M2', Value: 20 }, { Name: 'M3', Value: 60 }],
  1188. Script: //脚本
  1189. 'ZS:(INDEXC-REF(INDEXC,N))/REF(INDEXC,N);\n\
  1190. GG:(CLOSE-REF(CLOSE,N))/REF(CLOSE,N);\n\
  1191. MADBQR1:MA(GG,M1);\n\
  1192. MADBQR2:MA(GG,M2);\n\
  1193. MADBQR3:MA(GG,M3);'
  1194. };
  1195. return data;
  1196. }
  1197. JSIndexScript.prototype.JS = function ()
  1198. {
  1199. let data =
  1200. {
  1201. Name: 'JS', Description: '加速线', IsMainIndex: false,
  1202. Args: [{ Name: 'N', Value: 5 }, { Name: 'M1', Value: 5 }, { Name: 'M2', Value: 10 }, { Name: 'M3', Value: 20 }],
  1203. Script: //脚本
  1204. 'JS:100*(CLOSE-REF(CLOSE,N))/(N*REF(CLOSE,N));\n\
  1205. MAJS1:MA(JS,M1);\n\
  1206. MAJS2:MA(JS,M2);\n\
  1207. MAJS3:MA(JS,M3);'
  1208. };
  1209. return data;
  1210. }
  1211. JSIndexScript.prototype.CYE = function ()
  1212. {
  1213. let data =
  1214. {
  1215. Name: 'CYE', Description: '市场趋势', IsMainIndex: false,
  1216. Args: [],
  1217. Script: //脚本
  1218. 'MAL:=MA(CLOSE,5);\n\
  1219. MAS:=MA(MA(CLOSE,20),5);\n\
  1220. CYEL:(MAL-REF(MAL,1))/REF(MAL,1)*100;\n\
  1221. CYES:(MAS-REF(MAS,1))/REF(MAS,1)*100;'
  1222. };
  1223. return data;
  1224. }
  1225. JSIndexScript.prototype.QR = function ()
  1226. {
  1227. let data =
  1228. {
  1229. Name: 'QR', Description: '强弱指标', IsMainIndex: false,
  1230. Args: [{ Name: 'N', Value: 21 }],
  1231. Script: //脚本
  1232. '个股: (CLOSE-REF(CLOSE,N))/REF(CLOSE,N)*100; \n\
  1233. 大盘: (INDEXC-REF(INDEXC,N))/REF(INDEXC,N)*100; \n\
  1234. 强弱值:EMA(个股-大盘,2),COLORSTICK;'
  1235. };
  1236. return data;
  1237. }
  1238. JSIndexScript.prototype.GDX = function ()
  1239. {
  1240. let data =
  1241. {
  1242. Name: 'GDX', Description: '轨道线', IsMainIndex: false,
  1243. Args: [{ Name: 'N', Value: 30 }, { Name: 'M', Value: 9 }],
  1244. Script: //脚本
  1245. 'AA:=ABS((2*CLOSE+HIGH+LOW)/4-MA(CLOSE,N))/MA(CLOSE,N); \n\
  1246. 轨道:DMA(CLOSE,AA);\n\
  1247. 压力线:(1+M/100)*轨道; \n\
  1248. 支撑线:(1-M/100)*轨道;'
  1249. };
  1250. return data;
  1251. }
  1252. JSIndexScript.prototype.JLHB = function ()
  1253. {
  1254. let data =
  1255. {
  1256. Name: 'JLHB', Description: '绝路航标', IsMainIndex: false,
  1257. Args: [{ Name: 'N', Value: 7 }, { Name: 'M', Value: 5 }],
  1258. Script: //脚本
  1259. 'VAR1:=(CLOSE-LLV(LOW,60))/(HHV(HIGH,60)-LLV(LOW,60))*80; \n\
  1260. B:SMA(VAR1,N,1); \n\
  1261. VAR2:SMA(B,M,1); \n\
  1262. 绝路航标:IF(CROSS(B,VAR2) AND B<40,50,0);'
  1263. };
  1264. return data;
  1265. }
  1266. JSIndexScript.prototype.PCNT = function ()
  1267. {
  1268. let data =
  1269. {
  1270. Name: 'PCNT', Description: '幅度比', IsMainIndex: false,
  1271. Args: [{ Name: 'M', Value: 5 }],
  1272. Script: //脚本
  1273. 'PCNT:(CLOSE-REF(CLOSE,1))/CLOSE*100;\n\
  1274. MAPCNT:EXPMEMA(PCNT,M);'
  1275. };
  1276. return data;
  1277. }
  1278. JSIndexScript.prototype.AMO = function ()
  1279. {
  1280. let data =
  1281. {
  1282. Name: 'AMO', Description: '成交金额', IsMainIndex: false, YAxis:{ FloatPrecision:0, StringFormat:2 }, StringFormat:2,
  1283. Args: [{ Name: 'M1', Value: 5 }, { Name: 'M2', Value: 10 }],
  1284. Script: //脚本
  1285. 'AMOW:AMOUNT/10000.0,VOLSTICK;\n\
  1286. AMO1:MA(AMOW,M1);\n\
  1287. AMO2:MA(AMOW,M2);'
  1288. };
  1289. return data;
  1290. }
  1291. JSIndexScript.prototype.VRSI = function ()
  1292. {
  1293. let data =
  1294. {
  1295. Name: 'VRSI', Description: '相对强弱量', IsMainIndex: false,
  1296. Args: [{ Name: 'N1', Value: 6 }, { Name: 'N2', Value: 12 }, { Name: 'N3', Value: 24 }],
  1297. Script: //脚本
  1298. 'LC:=REF(VOL,1);\n\
  1299. RSI1:SMA(MAX(VOL-LC,0),N1,1)/SMA(ABS(VOL-LC),N1,1)*100;\n\
  1300. RSI2:SMA(MAX(VOL-LC,0),N2,1)/SMA(ABS(VOL-LC),N2,1)*100;\n\
  1301. RSI3:SMA(MAX(VOL-LC,0),N3,1)/SMA(ABS(VOL-LC),N3,1)*100;'
  1302. };
  1303. return data;
  1304. }
  1305. JSIndexScript.prototype.HSCOL = function ()
  1306. {
  1307. let data =
  1308. {
  1309. Name: 'HSCOL', Description: '换手柱', IsMainIndex: false,
  1310. Args: [{ Name: 'N', Value: 5 }],
  1311. Script: //脚本
  1312. 'HSCOL:IF((SETCODE==0||SETCODE==1),100*VOL,VOL)/(FINANCE(7)/100),VOLSTICK;\n\
  1313. MAHSL:MA(HSCOL,N);'
  1314. };
  1315. return data;
  1316. }
  1317. JSIndexScript.prototype.DBQRV = function ()
  1318. {
  1319. let data =
  1320. {
  1321. Name: 'DBQRV', Description: '对比强弱量(需下载日线)', IsMainIndex: false,
  1322. Args: [{ Name: 'N', Value: 5 }],
  1323. Script: //脚本
  1324. 'ZS:(INDEXV-REF(INDEXV,N))/REF(INDEXV,N);\n\
  1325. GG:(VOL-REF(VOL,N))/REF(VOL,N);'
  1326. };
  1327. return data;
  1328. }
  1329. JSIndexScript.prototype.DBLB = function ()
  1330. {
  1331. let data =
  1332. {
  1333. Name: 'DBLB', Description: '对比量比(需下载日线)', IsMainIndex: false,
  1334. Args: [{ Name: 'N', Value: 5 }, { Name: 'M', Value: 5 }],
  1335. Script: //脚本
  1336. 'GG:=VOL/SUM(REF(VOL,1),N);\n\
  1337. ZS:=INDEXV/SUM(REF(INDEXV,1),N);\n\
  1338. DBLB:GG/ZS;\n\
  1339. MADBLB:MA(DBLB,M);'
  1340. };
  1341. return data;
  1342. }
  1343. JSIndexScript.prototype.ACD = function ()
  1344. {
  1345. let data =
  1346. {
  1347. Name: 'ACD', Description: '升降线', IsMainIndex: false,
  1348. Args: [{ Name: 'M', Value: 20 }],
  1349. Script: //脚本
  1350. 'LC:=REF(CLOSE,1);\n\
  1351. DIF:=CLOSE-IF(CLOSE>LC,MIN(LOW,LC),MAX(HIGH,LC));\n\
  1352. ACD:SUM(IF(CLOSE==LC,0,DIF),0);\n\
  1353. MAACD:EXPMEMA(ACD,M);'
  1354. };
  1355. return data;
  1356. }
  1357. JSIndexScript.prototype.EXPMA = function ()
  1358. {
  1359. let data =
  1360. {
  1361. Name: 'EXPMA', Description: '指数平均线', IsMainIndex: true,
  1362. Args: [{ Name: 'M1', Value: 12 }, { Name: 'M2', Value: 50 }],
  1363. Script: //脚本
  1364. 'EXP1:EMA(CLOSE,M1);\n\
  1365. EXP2:EMA(CLOSE,M2);'
  1366. };
  1367. return data;
  1368. }
  1369. JSIndexScript.prototype.EXPMA_S = function ()
  1370. {
  1371. let data =
  1372. {
  1373. Name: 'EXPMA_S', Description: '指数平均线-副图', IsMainIndex: false,
  1374. Args: [{ Name: 'M1', Value: 12 }, { Name: 'M2', Value: 50 }],
  1375. Script: //脚本
  1376. 'EXP1:EMA(CLOSE,M1);\n\
  1377. EXP2:EMA(CLOSE,M2);'
  1378. };
  1379. return data;
  1380. }
  1381. JSIndexScript.prototype.HMA = function ()
  1382. {
  1383. let data =
  1384. {
  1385. Name: 'HMA', Description: '高价平均线', IsMainIndex: true,
  1386. Args: [{ Name: 'M1', Value: 6 }, { Name: 'M2', Value: 12 }, { Name: 'M3', Value: 30 }, { Name: 'M4', Value: 72 }, { Name: 'M5', Value: 144 }],
  1387. Script: //脚本
  1388. 'HMA1:MA(HIGH,M1);\n\
  1389. HMA2:MA(HIGH,M2);\n\
  1390. HMA3:MA(HIGH,M3);\n\
  1391. HMA4:MA(HIGH,M4);\n\
  1392. HMA5:MA(HIGH,M5);'
  1393. };
  1394. return data;
  1395. }
  1396. JSIndexScript.prototype.LMA = function ()
  1397. {
  1398. let data =
  1399. {
  1400. Name: 'LMA', Description: '低价平均线', IsMainIndex: true,
  1401. Args: [{ Name: 'M1', Value: 6 }, { Name: 'M2', Value: 12 }, { Name: 'M3', Value: 30 }, { Name: 'M4', Value: 72 }, { Name: 'M5', Value: 144 }],
  1402. Script: //脚本
  1403. 'LMA1:MA(LOW,M1);\n\
  1404. LMA2:MA(LOW,M2);\n\
  1405. LMA3:MA(LOW,M3);\n\
  1406. LMA4:MA(LOW,M4);\n\
  1407. LMA5:MA(LOW,M5);'
  1408. };
  1409. return data;
  1410. }
  1411. JSIndexScript.prototype.VMA = function ()
  1412. {
  1413. let data =
  1414. {
  1415. Name: 'VMA', Description: '变异平均线', IsMainIndex: true,
  1416. Args: [{ Name: 'M1', Value: 6 }, { Name: 'M2', Value: 12 }, { Name: 'M3', Value: 30 }, { Name: 'M4', Value: 72 }, { Name: 'M5', Value: 144 }],
  1417. Script: //脚本
  1418. 'VV:=(HIGH+OPEN+LOW+CLOSE)/4;\n\
  1419. VMA1:MA(VV,M1);\n\
  1420. VMA2:MA(VV,M2);\n\
  1421. VMA3:MA(VV,M3);\n\
  1422. VMA4:MA(VV,M4);\n\
  1423. VMA5:MA(VV,M5);'
  1424. };
  1425. return data;
  1426. }
  1427. JSIndexScript.prototype.AMV = function ()
  1428. {
  1429. let data =
  1430. {
  1431. Name: 'AMV', Description: '成本价均线', IsMainIndex: false,
  1432. Args: [{ Name: 'M1', Value: 6 }, { Name: 'M2', Value: 12 }, { Name: 'M3', Value: 30 }, { Name: 'M4', Value: 72 }, { Name: 'M5', Value: 144 }],
  1433. Script: //脚本
  1434. 'AMOV:=VOL*(OPEN+CLOSE)/2;\n\
  1435. AMV1:SUM(AMOV,M1)/SUM(VOL,M1);\n\
  1436. AMV2:SUM(AMOV,M2)/SUM(VOL,M2);\n\
  1437. AMV3:SUM(AMOV,M3)/SUM(VOL,M3);\n\
  1438. AMV4:SUM(AMOV,M4)/SUM(VOL,M4);'
  1439. };
  1440. return data;
  1441. }
  1442. JSIndexScript.prototype.BBIBOLL = function ()
  1443. {
  1444. let data =
  1445. {
  1446. Name: 'BBIBOLL', Description: '多空布林线', IsMainIndex: true,
  1447. Args: [{ Name: 'N', Value: 11 }, { Name: 'M', Value: 6 }],
  1448. Script: //脚本
  1449. 'CV:=CLOSE;\n\
  1450. BBIBOLL:(MA(CV,3)+MA(CV,6)+MA(CV,12)+MA(CV,24))/4;\n\
  1451. UPR:BBIBOLL+M*STD(BBIBOLL,N);\n\
  1452. DWN:BBIBOLL-M*STD(BBIBOLL,N);'
  1453. };
  1454. return data;
  1455. }
  1456. JSIndexScript.prototype.ALLIGAT = function ()
  1457. {
  1458. let data =
  1459. {
  1460. Name: 'ALLIGAT', Description: '鳄鱼线', IsMainIndex: true,
  1461. Args: [],
  1462. Script: //脚本
  1463. 'NN:=(H+L)/2;\n\
  1464. 上唇:REF(MA(NN,5),3),COLOR40FF40;\n\
  1465. 牙齿:REF(MA(NN,8),5),COLOR0000C0;\n\
  1466. 下颚:REF(MA(NN,13),8),COLORFF4040;'
  1467. };
  1468. return data;
  1469. }
  1470. JSIndexScript.prototype.ZX = function ()
  1471. {
  1472. let data =
  1473. {
  1474. Name: 'ZX', Description: '重心线', IsMainIndex: false,
  1475. Args: [],
  1476. Script: //脚本
  1477. 'AV:0.01*AMOUNT/VOL;'
  1478. };
  1479. return data;
  1480. }
  1481. JSIndexScript.prototype.XS = function ()
  1482. {
  1483. let data =
  1484. {
  1485. Name: 'XS', Description: '薛斯通道', IsMainIndex: true,
  1486. Args: [{ Name: 'N', Value: 13 }],
  1487. Script: //脚本
  1488. 'VAR2:=CLOSE*VOL;\n\
  1489. VAR3:=EMA((EMA(VAR2,3)/EMA(VOL,3)+EMA(VAR2,6)/EMA(VOL,6)+EMA(VAR2,12)/EMA(VOL,12)+EMA(VAR2,24)/EMA(VOL,24))/4,N);\n\
  1490. SUP:1.06*VAR3;\n\
  1491. SDN:VAR3*0.94;\n\
  1492. VAR4:=EMA(CLOSE,9);\n\
  1493. LUP:EMA(VAR4*1.14,5);\n\
  1494. LDN:EMA(VAR4*0.86,5);'
  1495. };
  1496. return data;
  1497. }
  1498. JSIndexScript.prototype.XS2 = function ()
  1499. {
  1500. let data =
  1501. {
  1502. Name: 'XS2', Description: '薛斯通道II', IsMainIndex: true,
  1503. Args: [{ Name: 'N', Value: 102 }, { Name: 'M', Value: 7 }],
  1504. Script: //脚本
  1505. 'AA:=MA((2*CLOSE+HIGH+LOW)/4,5); \n\
  1506. 通道1:AA*N/100; \n\
  1507. 通道2:AA*(200-N)/100; \n\
  1508. CC:=ABS((2*CLOSE+HIGH+LOW)/4-MA(CLOSE,20))/MA(CLOSE,20); \n\
  1509. DD:=DMA(CLOSE,CC); \n\
  1510. 通道3:(1+M/100)*DD; \n\
  1511. 通道4:(1-M/100)*DD;'
  1512. };
  1513. return data;
  1514. }
  1515. JSIndexScript.prototype.SG_XDT = function ()
  1516. {
  1517. let data =
  1518. {
  1519. Name: 'SG-XDT', Description: '心电图(需下载日线)', IsMainIndex: false,
  1520. Args: [{ Name: 'P1', Value: 5 }, { Name: 'P2', Value: 10 }],
  1521. Script: //脚本
  1522. 'QR:CLOSE/INDEXC*1000;\n\
  1523. MQR1:MA(QR,5);\n\
  1524. MQR2:MA(QR,10);'
  1525. };
  1526. return data;
  1527. }
  1528. JSIndexScript.prototype.SG_SMX = function ()
  1529. {
  1530. let data =
  1531. {
  1532. Name: 'SG-SMX', Description: '生命线(需下载日线)', IsMainIndex: false,
  1533. Args: [{ Name: 'N', Value: 50 }],
  1534. Script: //脚本
  1535. 'H1:=HHV(HIGH,N);\n\
  1536. L1:=LLV(LOW,N);\n\
  1537. H2:=HHV(INDEXH,N);\n\
  1538. L2:=LLV(INDEXL,N);\n\
  1539. ZY:=CLOSE/INDEXC*2000;\n\
  1540. ZY1:EMA(ZY,3);\n\
  1541. ZY2:EMA(ZY,17);\n\
  1542. ZY3:EMA(ZY,34);'
  1543. };
  1544. return data;
  1545. }
  1546. JSIndexScript.prototype.SG_LB = function ()
  1547. {
  1548. let data =
  1549. {
  1550. Name: 'SG-LB', Description: '量比(需下载日线)', IsMainIndex: false,
  1551. Args: [],
  1552. Script: //脚本
  1553. 'ZY2:=VOL/INDEXV*1000;\n\
  1554. 量比:ZY2;\n\
  1555. MA5:MA(ZY2,5);\n\
  1556. MA10:MA(ZY2,10);'
  1557. };
  1558. return data;
  1559. }
  1560. JSIndexScript.prototype.SG_PF = function ()
  1561. {
  1562. let data =
  1563. {
  1564. Name: 'SG-PF', Description: '强势股评分(需下载日线)', IsMainIndex: false,
  1565. Args: [],
  1566. Script: //脚本
  1567. 'ZY1:=CLOSE/INDEXC*1000;\n\
  1568. A1:=IF(ZY1>HHV(ZY1,3),10,0);\n\
  1569. A2:=IF(ZY1>HHV(ZY1,5),15,0);\n\
  1570. A3:=IF(ZY1>HHV(ZY1,10),20,0);\n\
  1571. A4:=IF(ZY1>HHV(ZY1,2),10,0);\n\
  1572. A5:=COUNT(ZY1>REF(ZY1,1) ,9)*5;\n\
  1573. 强势股评分:A1+A2+A3+A4+A5;'
  1574. };
  1575. return data;
  1576. }
  1577. JSIndexScript.prototype.RAD = function ()
  1578. {
  1579. let data =
  1580. {
  1581. Name: 'RAD', Description: '威力雷达(需下载日线)', IsMainIndex: false,
  1582. Args: [{ Name: 'D', Value: 3 }, { Name: 'S', Value: 30 }, { Name: 'M', Value: 30 }],
  1583. Script: //脚本
  1584. 'SM:=(OPEN+HIGH+CLOSE+LOW)/4;\n\
  1585. SMID:=MA(SM,D);\n\
  1586. IM:=(INDEXO+INDEXH+INDEXL+INDEXC)/4;\n\
  1587. IMID:=MA(IM,D);\n\
  1588. SI1:=(SMID-REF(SMID,1))/SMID;\n\
  1589. II:=(IMID-REF(IMID,1))/IMID;\n\
  1590. RADER1:SUM((SI1-II)*2,S)*1000;\n\
  1591. RADERMA:SMA(RADER1,M,1);'
  1592. };
  1593. return data;
  1594. }
  1595. JSIndexScript.prototype.SHT = function ()
  1596. {
  1597. let data =
  1598. {
  1599. Name: 'SHT', Description: '龙系短线', IsMainIndex: false,
  1600. Args: [{ Name: 'N', Value: 5 }],
  1601. Script: //脚本
  1602. 'VAR1:=MA((VOL-REF(VOL,1))/REF(VOL,1),5);\n\
  1603. VAR2:=(CLOSE-MA(CLOSE,24))/MA(CLOSE,24)*100;\n\
  1604. MY: VAR2*(1+VAR1);\n\
  1605. SHT: MY, COLORSTICK;\n\
  1606. SHTMA: MA(SHT,N);'
  1607. };
  1608. return data;
  1609. }
  1610. JSIndexScript.prototype.ZLJC = function ()
  1611. {
  1612. let data =
  1613. {
  1614. Name: 'ZLJC', Description: '主力进出', IsMainIndex: false,
  1615. Args: [],
  1616. Script: //脚本
  1617. 'VAR1:=(CLOSE+LOW+HIGH)/3; \n\
  1618. VAR2:=SUM(((VAR1-REF(LOW,1))-(HIGH-VAR1))*VOL/100000/(HIGH-LOW),0); \n\
  1619. VAR3:=EMA(VAR2,1); \n\
  1620. JCS:VAR3; \n\
  1621. JCM:MA(VAR3,12); \n\
  1622. JCL:MA(VAR3,26);'
  1623. };
  1624. return data;
  1625. }
  1626. JSIndexScript.prototype.ZLMM = function ()
  1627. {
  1628. let data =
  1629. {
  1630. Name: 'ZLMM', Description: '主力买卖', IsMainIndex: false,
  1631. Args: [],
  1632. Script: //脚本
  1633. 'LC :=REF(CLOSE,1);\n\
  1634. RSI2:=SMA(MAX(CLOSE-LC,0),12,1)/SMA(ABS(CLOSE-LC),12,1)*100;\n\
  1635. RSI3:=SMA(MAX(CLOSE-LC,0),18,1)/SMA(ABS(CLOSE-LC),18,1)*100;\n\
  1636. MMS:MA(3*RSI2-2*SMA(MAX(CLOSE-LC,0),16,1)/SMA(ABS(CLOSE-LC),16,1)*100,3);\n\
  1637. MMM:EMA(MMS,8);\n\
  1638. MML:MA(3*RSI3-2*SMA(MAX(CLOSE-LC,0),12,1)/SMA(ABS(CLOSE-LC),12,1)*100,5);'
  1639. };
  1640. return data;
  1641. }
  1642. JSIndexScript.prototype.SLZT = function ()
  1643. {
  1644. let data =
  1645. {
  1646. Name: 'SLZT', Description: '神龙在天', IsMainIndex: false,
  1647. Args: [],
  1648. Script: //脚本
  1649. '白龙: MA(CLOSE,125);\n\
  1650. 黄龙: 白龙+2*STD(CLOSE,170);\n\
  1651. 紫龙: 白龙-2*STD(CLOSE,145);\n\
  1652. 青龙: SAR(125,1,7), LINESTICK;\n\
  1653. VAR2:=HHV(HIGH,70);\n\
  1654. VAR3:=HHV(HIGH,20);\n\
  1655. 红龙: VAR2*0.83;\n\
  1656. 蓝龙: VAR3*0.91;'
  1657. };
  1658. return data;
  1659. }
  1660. JSIndexScript.prototype.ADVOL = function ()
  1661. {
  1662. let data =
  1663. {
  1664. Name: 'ADVOL', Description: '龙系离散量', IsMainIndex: false,
  1665. Args: [],
  1666. Script: //脚本
  1667. 'A:=SUM(((CLOSE-LOW)-(HIGH-CLOSE))*VOL/10000/(HIGH-LOW),0);\n\
  1668. ADVOL:A;\n\
  1669. MA1:MA(A,30);\n\
  1670. MA2:MA(MA1,100);'
  1671. };
  1672. return data;
  1673. }
  1674. JSIndexScript.prototype.CYC = function ()
  1675. {
  1676. let data =
  1677. {
  1678. Name: 'CYC', Description: '成本均线', IsMainIndex: true,
  1679. Args: [{ Name: 'P1', Value: 5 }, { Name: 'P2', Value: 13 }, { Name: 'P3', Value: 34 }],
  1680. Script: //脚本
  1681. 'JJJ:=IF(DYNAINFO(8)>0.01,0.01*DYNAINFO(10)/DYNAINFO(8),DYNAINFO(3));\n\
  1682. DDD:=(DYNAINFO(5)<0.01 || DYNAINFO(6)<0.01);\n\
  1683. JJJT:=IF(DDD,1,(JJJ<(DYNAINFO(5)+0.01) && JJJ>(DYNAINFO(6)-0.01)));\n\
  1684. CYC1:IF(JJJT,0.01*EMA(AMOUNT,P1)/EMA(VOL,P1),EMA((HIGH+LOW+CLOSE)/3,P1));\n\
  1685. CYC2:IF(JJJT,0.01*EMA(AMOUNT,P2)/EMA(VOL,P2),EMA((HIGH+LOW+CLOSE)/3,P2));\n\
  1686. CYC3:IF(JJJT,0.01*EMA(AMOUNT,P3)/EMA(VOL,P3),EMA((HIGH+LOW+CLOSE)/3,P3));\n\
  1687. CYC4:IF(JJJT,DMA(AMOUNT/(100*VOL),100*VOL/FINANCE(7)),EMA((HIGH+LOW+CLOSE)/3,120));'
  1688. };
  1689. return data;
  1690. }
  1691. JSIndexScript.prototype.CYS = function ()
  1692. {
  1693. let data =
  1694. {
  1695. Name: 'CYS', Description: '市场盈亏', IsMainIndex: false,
  1696. Args: [],
  1697. Script: //脚本
  1698. 'CYC13:EMA(AMOUNT,13)/EMA(VOL,13);\n\
  1699. CYS:(CLOSE-CYC13)/CYC13*100;'
  1700. };
  1701. return data;
  1702. }
  1703. JSIndexScript.prototype.CYQKL = function ()
  1704. {
  1705. let data =
  1706. {
  1707. Name: 'CYQKL', Description: '博弈K线长度', IsMainIndex: false,
  1708. Args: [],
  1709. Script: //脚本
  1710. 'KL:100*(WINNER(CLOSE)-WINNER(OPEN));'
  1711. };
  1712. return data;
  1713. }
  1714. JSIndexScript.prototype.SCR = function ()
  1715. {
  1716. let data =
  1717. {
  1718. Name: 'SCR', Description: '筹码集中度', IsMainIndex: false,
  1719. Args: [{ Name: 'P1', Value: 90 }],
  1720. Script: //脚本
  1721. 'A:=P1+(100-P1)/2;\n\
  1722. B:=(100-P1)/2;\n\
  1723. CC:=COST(A);\n\
  1724. DD:=COST(B);\n\
  1725. SCR:(CC-DD)/(CC+DD)*100/2;'
  1726. };
  1727. return data;
  1728. }
  1729. JSIndexScript.prototype.ASR = function ()
  1730. {
  1731. let data =
  1732. {
  1733. Name: 'ASR', Description: '浮筹比例', IsMainIndex: false,
  1734. Args: [],
  1735. Script: //脚本
  1736. 'ASR:(WINNER(C*1.1)-WINNER(C*0.9))/WINNER(HHV(H,0))*100;'
  1737. };
  1738. return data;
  1739. }
  1740. JSIndexScript.prototype.SAR = function ()
  1741. {
  1742. let data =
  1743. {
  1744. Name: 'SAR', Description: '抛物转向', IsMainIndex: true,
  1745. Args: [{ Name: 'P', Value: 10 },{ Name: 'STEP', Value: 2 },{ Name: 'MAXP', Value: 20 }],
  1746. Script: //脚本
  1747. 'S:SAR(P,STEP,MAXP),UPDOWNDOT;'
  1748. };
  1749. return data;
  1750. }
  1751. JSIndexScript.prototype.TJCJL = function ()
  1752. {
  1753. let data =
  1754. {
  1755. Name: '太极成交量', Description: '太极成交量', IsMainIndex: true,
  1756. Args: [],
  1757. Script: //脚本
  1758. '总手:VOL,NODRAW;\n\
  1759. ZZ:=IF(REF(C,1)>REF(O,1) AND O>REF(C,1)*1.014 AND C<O*1.02,1,3);\n\
  1760. V5:=MA(V,5);\n\
  1761. V12:=MA(V,12);\n\
  1762. V34:=MA(V,34);\n\
  1763. C6:=MA(C,6);\n\
  1764. STICKLINE(VOL,0,VOL,10,0),COLORLIGRAY;\n\
  1765. STICKLINE(CROSS(C,C6) AND V>V5*1.2 AND V>V12*1.2 AND ZZ>2 AND C>H*0.975,0,VOL,10,0),COLORRED;\n\
  1766. STICKLINE(CROSS(C6,C) AND V>V5*1.2 AND V>V12*1.2,0,VOL,10,0),COLORGREEN;\n\
  1767. STICKLINE(VOL>MA(VOL,5)*2 AND V>V34*3 AND C<REF(C,1)*1.05,0,VOL,10,0),COLORYELLOW;\n\
  1768. STICKLINE(VOL<MA(VOL,5)/2 AND V<V12/2,0,VOL,10,0),COLORBLUE;\n\
  1769. STICKLINE(VOL>MA(VOL,5)*2 AND V>V34*3 AND C<REF(C,1)*1.05 AND CROSS(C,C6) AND V>V5*1.2 AND V>V12*1.2 AND ZZ>2 AND C>H*0.975,VOL*0.5,0,10,0),COLORRED;\n\
  1770. STICKLINE(VOL>MA(VOL,5)*2 AND V>V34*3 AND C<REF(C,1)*1.05 AND CROSS(C6,C) AND V>V5*1.2 AND V>V12*1.2,VOL*0.5,0,10,0),COLORRED;'
  1771. };
  1772. return data;
  1773. }
  1774. JSIndexScript.prototype.VOLRate = function ()
  1775. {
  1776. let data =
  1777. {
  1778. Name: '量比', Description: '量比', IsMainIndex: false, Condition: { Period: [CONDITION_PERIOD.MINUTE_ID, CONDITION_PERIOD.MULTIDAY_MINUTE_ID] },
  1779. Args: [],
  1780. Script: //脚本
  1781. "LIANGBI:VOLR;"
  1782. };
  1783. return data;
  1784. }
  1785. /*
  1786. 飞龙四式-主图
  1787. */
  1788. JSIndexScript.prototype.Dragon4_Main = function ()
  1789. {
  1790. let data =
  1791. {
  1792. Name: '飞龙四式', Description: '飞龙四式', IsMainIndex: true,
  1793. Args: [{ Name: 'N1', Value: 5 }, { Name: 'N2', Value: 10 }, { Name: 'N3', Value: 50 }, { Name: 'N4', Value: 60 }],
  1794. Script: //脚本
  1795. '蜻蜓点水:=EMA(CLOSE,N1),COLORGRAY;\n\
  1796. 魔界:=EMA(CLOSE,N2),COLORGREEN;\n\
  1797. :=EMA(CLOSE,N3),COLORRED;\n\
  1798. DRAWKLINE(HIGH,OPEN,LOW,CLOSE);\n\
  1799. 生命线:MA(CLOSE,N4),COLORBLUE,LINETHICK2;\n\
  1800. DRAWBAND(魔界,\'RGB(186,225,250)\',水,\'RGB(253,194,124)\');\n\
  1801. DRAWBAND(蜻蜓点水,\'RGB(128,138,135)\',魔界,\'RGB(0,0,255)\');'
  1802. };
  1803. return data;
  1804. }
  1805. JSIndexScript.prototype.Dragon4_Fig = function () {
  1806. let data =
  1807. {
  1808. Name: '飞龙四式', Description: '飞龙四式', IsMainIndex: false,
  1809. Args: [],
  1810. Script: //脚本
  1811. ':VOL>=REF(V,1)*1.90 AND C>REF(C,1),COLORYELLOW;\n\
  1812. :VOL<REF(LLV(VOL,13),1),COLORGREEN;\n\
  1813. :VOL<REF(LLV(VOL,100),1),COLORMAGENTA; \n\
  1814. :=ABS(VOL-HHV(REF(VOL,1),5))/HHV(REF(VOL,1),5)<=0.03 OR ABS(VOL-REF(VOL,1))/REF(VOL,1)<=0.03,NODRAW,COLORWHITE;\n\
  1815. 倍缩:VOL<=REF(V,1)*0.5,COLORFF8000;\n\
  1816. 梯量:COUNT(V>REF(V,1),3)==3 AND COUNT(C>O,3)==3,COLORBROWN;\n\
  1817. 缩量涨:COUNT(C>REF(C,1),2)==2 AND COUNT(V<REF(V,1),2)==2,COLORBLUE;\n\
  1818. STICKLINE(C>=REF(C,1),V,0,2,0),COLORRED;\n\
  1819. STICKLINE(C<REF(C,1),V,0,2,0),COLORGREEN;\n\
  1820. STICKLINE(,0,V,2,0),COLORYELLOW;\n\
  1821. STICKLINE(,0,V,2,0),COLORGREEN;\n\
  1822. STICKLINE(,0,V,2,0),COLORLIMAGENTA;\n\
  1823. STICKLINE(,0,V,2,0),COLORGRAY;\n\
  1824. STICKLINE(倍缩,0,V,2,0),COLORFF8000;\n\
  1825. STICKLINE(梯量,0,V,2,0),COLORBROWN;\n\
  1826. STICKLINE(缩量涨,0,V,2,0),COLORBLUE;'
  1827. };
  1828. return data;
  1829. }
  1830. /*
  1831. 能图-资金分析
  1832. M:=55;
  1833. N:=34;
  1834. LC:=REF(CLOSE,1);
  1835. RSI:=((SMA(MAX((CLOSE - LC),0),3,1) / SMA(ABS((CLOSE - LC)),3,1)) * 100);
  1836. FF:=EMA(CLOSE,3);
  1837. MA15:=EMA(CLOSE,21); DRAWTEXT(CROSS(85,RSI),75,'▼'),COLORGREEN;
  1838. VAR1:=IF(YEAR>=2038 AND MONTH>=1,0,1);
  1839. VAR2:=REF(LOW,1)*VAR1;
  1840. VAR3:=SMA(ABS(LOW-VAR2),3,1)/SMA(MAX(LOW-VAR2,0),3,1)*100*VAR1;
  1841. VAR4:=EMA(IF(CLOSE*1.3,VAR3*10,VAR3/10),3)*VAR1;
  1842. VAR5:=LLV(LOW,30)*VAR1;
  1843. VAR6:=HHV(VAR4,30)*VAR1;
  1844. VAR7:=IF(MA(CLOSE,58),1,0)*VAR1;
  1845. VAR8:=EMA(IF(LOW<=VAR5,(VAR4+VAR6*2)/2,0),3)/618*VAR7*VAR1;
  1846. 吸筹A:IF(VAR8>100,100,VAR8)*VAR1,COLORRED;
  1847. 吸筹B:STICKLINE(吸筹A>-150,0,吸筹A,8,0),COLORRED;
  1848. 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M)),COLORFFFF00,LINETHICK2;
  1849. RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
  1850. K:=SMA(RSV,3,1);
  1851. D:=SMA(K,3,1);
  1852. J:=3*K-2*D;
  1853. 主力线:EMA(J,5),COLORFF00FF,LINETHICK2;
  1854. DRAWICON(CROSS(主力线,散户线),主力线,1);
  1855. DRAWICON(CROSS(散户线,主力线),主力线,2);
  1856. */
  1857. JSIndexScript.prototype.FundsAnalysis = function ()
  1858. {
  1859. let data =
  1860. {
  1861. Name: '资金分析', Description: '资金分析', IsMainIndex: false,
  1862. Args: [{ Name: 'M', Value: 55 }, { Name: 'N', Value: 34 }],
  1863. Script: //脚本
  1864. 'LC:=REF(CLOSE,1);\n\
  1865. RSI:=((SMA(MAX((CLOSE - LC),0),3,1) / SMA(ABS((CLOSE - LC)),3,1)) * 100);\n\
  1866. FF:=EMA(CLOSE,3);\n\
  1867. MA15:=EMA(CLOSE,21); DRAWTEXT(CROSS(85,RSI),75,\'▼\'),COLORGREEN;\n\
  1868. VAR1:=IF(YEAR>=2038 AND MONTH>=1,0,1);\n\
  1869. VAR2:=REF(LOW,1)*VAR1;\n\
  1870. VAR3:=SMA(ABS(LOW-VAR2),3,1)/SMA(MAX(LOW-VAR2,0),3,1)*100*VAR1;\n\
  1871. VAR4:=EMA(IF(CLOSE*1.3,VAR3*10,VAR3/10),3)*VAR1;\n\
  1872. VAR5:=LLV(LOW,30)*VAR1;\n\
  1873. VAR6:=HHV(VAR4,30)*VAR1;\n\
  1874. VAR7:=IF(MA(CLOSE,58),1,0)*VAR1;\n\
  1875. VAR8:=EMA(IF(LOW<=VAR5,(VAR4+VAR6*2)/2,0),3)/618*VAR7*VAR1;\n\
  1876. 吸筹A:IF(VAR8>100,100,VAR8)*VAR1,COLORFB2F3B;\n\
  1877. {吸筹B}STICKLINE(吸筹A>-150,0,吸筹A,8,0),COLORFB2F3B;\n\
  1878. \n\
  1879. 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M)),COLORAA89BD,LINETHICK2;\n\
  1880. RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;\n\
  1881. K:=SMA(RSV,3,1);\n\
  1882. D:=SMA(K,3,1);\n\
  1883. J:=3*K-2*D;\n\
  1884. 主力线:EMA(J,5),COLORF39800,LINETHICK2;\n\
  1885. DRAWICON(CROSS(主力线,散户线),主力线,1);\n\
  1886. DRAWICON(CROSS(散户线,主力线),主力线,2);'
  1887. };
  1888. return data;
  1889. }
  1890. JSIndexScript.prototype.MarginProportion = function ()
  1891. {
  1892. let data =
  1893. {
  1894. Name: '融资占比(%)', Description: '融资占比', IsMainIndex: false,
  1895. Args: [],
  1896. Script: //脚本
  1897. '占比:MARGIN(2);'
  1898. };
  1899. return data;
  1900. }
  1901. JSIndexScript.prototype.BTX = function ()
  1902. {
  1903. let data =
  1904. {
  1905. Name: 'BTX', Description: '宝塔线', IsMainIndex: false,
  1906. Args: [],
  1907. Script: //脚本
  1908. 'B1:=REF(C,1);\n\
  1909. B2:= REF(C, 2);\n\
  1910. SS:= IF(C > REF(C, 1) AND REF(C, 1) >= REF(C, 2), 1, IF(C < REF(C, 1) AND REF(C, 1) <= REF(C, 2), -1, IF(C > REF(C, 2) AND REF(C, 2) > REF(C, 1), 2, IF(C < REF(C, 2) AND REF(C, 2) < REF(C, 1), -2, 0))));\n\
  1911. SM:= IF(REF(SS, 1) <> 0, REF(SS, 1), IF(REF(SS, 2) <> 0, REF(SS, 2), IF(REF(SS, 3) <> 0, REF(SS, 3), IF(REF(SS, 5) <> 0, REF(SS, 5), IF(REF(SS, 6) <> 0, REF(SS, 6), IF(REF(SS, 7) <> 0, REF(SS, 7), 0))))));\n\
  1912. MC:= IF(REF(SS, 1) <> 0, B2, IF(SM > 0, MIN(B1, B2), MAX(B1, B2)));\n\
  1913. TOW1:= IF(C > REF(C, 1), C, REF(C, 1));\n\
  1914. TOW2:= IF((SS == -1 OR SS == -2) AND SM > 0, B2, TOW1);\n\
  1915. TOWER:= IF(TOW1 > TOW2, TOW1, TOW2);\n\
  1916. STICKLINE(SS == 1 OR SM >= 1 AND SS == 0, B1, C, 10, 1), COLORRED;\n\
  1917. STICKLINE(SS == -1 OR SM <= -1 AND SS == 0, B1, C, 10, 0), COLORCYAN;\n\
  1918. STICKLINE(SS == 2, B2, C, 10, 1), COLORRED;\n\
  1919. STICKLINE(SS == -2, B2, C, 10, 0), COLORCYAN;\n\
  1920. STICKLINE((SS == -1 OR SS == -2) AND SM > 0, B2, B1, 10, 1), COLORRED;\n\
  1921. STICKLINE((SS == 1 OR SS == 2) AND SM < 0, B2, B1, 10, 0), COLORCYAN;'
  1922. };
  1923. return data;
  1924. }
  1925. JSIndexScript.prototype.EMPTY = function ()
  1926. {
  1927. let data =
  1928. {
  1929. Name: '', Description: '空指标', IsMainIndex: true,
  1930. Args: [],
  1931. Script: //脚本
  1932. 'VAR2:=C;'
  1933. };
  1934. return data;
  1935. }
  1936. JSIndexScript.prototype.FXG_BSPoint = function ()
  1937. {
  1938. let data =
  1939. {
  1940. Name: '操盘BS点', Description: '操盘BS点', IsMainIndex: true,
  1941. Args: [],
  1942. Script: //脚本
  1943. 'MA5:MA(CLOSE,5);\n\
  1944. MA13:MA(CLOSE,13);\n\
  1945. MA21:MA(CLOSE,21);\n\
  1946. MA34:MA(CLOSE,34);\n\
  1947. {MA55:MA(CLOSE,55),COLOR0000FF;}\n\
  1948. {MA120:=MA(CLOSE,120),COLORFFFF00;}\n\
  1949. 天使:=EMA(C,2),COLOR000000;\n\
  1950. 魔鬼:=EMA(SLOPE(C,21)*20+C,42),COLOR000000;\n\
  1951. :=CROSS(天使,魔鬼);\n\
  1952. :=CROSS(魔鬼,天使);\n\
  1953. DRAWICON(,L*0.99,13),COLORYELLOW;\n\
  1954. DRAWICON(,H*1.01,14),COLORGREEN;\n\
  1955. DRAWKLINE_IF(天使>=魔鬼,HIGH,CLOSE,LOW,OPEN),COLORRED;\n\
  1956. DRAWKLINE_IF(天使<魔鬼,HIGH,CLOSE,LOW,OPEN),COLORBLUE;\n\
  1957. DRAWKLINE_IF(CROSS(天使,魔鬼),HIGH,CLOSE,LOW,OPEN),COLORYELLOW;\n\
  1958. DRAWKLINE_IF(CROSS(魔鬼,天使),HIGH,CLOSE,LOW,OPEN),COLORBLACK;'
  1959. };
  1960. return data;
  1961. }
  1962. JSIndexScript.prototype.NewsNegative=function()
  1963. {
  1964. let data=
  1965. {
  1966. Name: '负面新闻', Description: '负面新闻统计', IsMainIndex: false,
  1967. Args: [{ Name: 'N', Value: 5 }, { Name: 'N2', Value: 10 }],
  1968. Script: //脚本
  1969. '负面:NEWS(1);\n\
  1970. MA1:MA(负面,N);\n\
  1971. MA2:MA(负面,N2);'
  1972. };
  1973. return data;
  1974. }
  1975. JSIndexScript.prototype.NewsResearch = function () {
  1976. let data =
  1977. {
  1978. Name: '机构调研', Description: '机构调研统计', IsMainIndex: false,
  1979. Args: [{ Name: 'N', Value: 5 }, { Name: 'N2', Value: 10 }],
  1980. Script: //脚本
  1981. '次数:NEWS(2);\n\
  1982. MA1:MA(次数,N);\n\
  1983. MA2:MA(次数,N2);'
  1984. };
  1985. return data;
  1986. }
  1987. JSIndexScript.prototype.NewsInteract = function () {
  1988. let data =
  1989. {
  1990. Name: '董秘连线', Description: '互动易统计', IsMainIndex: false,
  1991. Args: [{ Name: 'N', Value: 5 }, { Name: 'N2', Value: 10 }],
  1992. Script: //脚本
  1993. '个数:NEWS(3);\n\
  1994. MA1:MA(个数,N);\n\
  1995. MA2:MA(个数,N2);'
  1996. };
  1997. return data;
  1998. }
  1999. JSIndexScript.prototype.UpDownAnalyze = function ()
  2000. {
  2001. let data =
  2002. {
  2003. Name: '涨跌趋势', Description: '涨跌趋势', IsMainIndex: false, FloatPrecision: 0,
  2004. Args: [],
  2005. Script: //脚本
  2006. "上涨家数:UPCOUNT('CNA.CI'),COLORRED;\n\
  2007. 下跌家数:DOWNCOUNT('CNA.CI'),COLORGREEN;"
  2008. };
  2009. return data;
  2010. }
  2011. //外包指标
  2012. JSIndexScript.prototype.FXG_BSPoint = function ()
  2013. {
  2014. let data =
  2015. {
  2016. Name: '操盘BS点', Description: '操盘BS点', IsMainIndex: true,
  2017. Args: [],
  2018. Script: //脚本
  2019. 'MA5:MA(CLOSE,5);\n\
  2020. MA13:MA(CLOSE,13);\n\
  2021. MA21:MA(CLOSE,21);\n\
  2022. MA34:MA(CLOSE,34);\n\
  2023. {MA55:MA(CLOSE,55),COLOR0000FF;}\n\
  2024. {MA120:=MA(CLOSE,120),COLORFFFF00;}\n\
  2025. 天使:=EMA(C,2),COLOR000000;\n\
  2026. 魔鬼:=EMA(SLOPE(C,21)*20+C,42),COLOR000000;\n\
  2027. :=CROSS(天使,魔鬼);\n\
  2028. :=CROSS(魔鬼,天使);\n\
  2029. SUPERDRAWTEXT(,L,"B",2,5),COLORYELLOW;\n\
  2030. SUPERDRAWTEXT(,L,"S",1,5),COLORGREEN;\n\
  2031. DRAWKLINE_IF(天使>=魔鬼,HIGH,CLOSE,LOW,OPEN),COLORRED;\n\
  2032. DRAWKLINE_IF(天使<魔鬼,HIGH,CLOSE,LOW,OPEN),COLORBLUE;\n\
  2033. DRAWKLINE_IF(CROSS(天使,魔鬼),HIGH,CLOSE,LOW,OPEN),COLORYELLOW;\n\
  2034. DRAWKLINE_IF(CROSS(魔鬼,天使),HIGH,CLOSE,LOW,OPEN),COLORBLACK;'
  2035. };
  2036. return data;
  2037. }
  2038. JSIndexScript.prototype.FXG_INDEX = function ()
  2039. {
  2040. let data =
  2041. {
  2042. Name: '涨停多空线', Description: '涨停多空线', IsMainIndex: false,
  2043. Args: [],
  2044. Script: //脚本
  2045. '做多能量线: SMA((CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100,5,1)-8,COLORRED,LINETHICK3;\n\
  2046. 做空能量线: SMA((HHV(HIGH,36)-CLOSE)/(HHV(HIGH,36)-LLV(LOW,36))*100,2,1),COLORGREEN,LINETHICK3;\n\
  2047. 20,POINTDOT,COLORF00FF0;\n\
  2048. 50,POINTDOT,COLORGREEN;\n\
  2049. 80,POINTDOT,COLORLIBLUE;'
  2050. };
  2051. return data;
  2052. }
  2053. JSIndexScript.prototype.FXG_INDEX2 = function ()
  2054. {
  2055. let data =
  2056. {
  2057. Name: '涨停吸筹区', Description: '涨停吸筹区', IsMainIndex: false,
  2058. Args: [],
  2059. Script: //脚本
  2060. 'VAR0:=EMA(HHV(HIGH,500),21); \n\
  2061. VAR1:=EMA(HHV(HIGH,250),21);\n\
  2062. VAR2:=EMA(HHV(HIGH,90),21); \n\
  2063. VAR3:=EMA(LLV(LOW,500),21); \n\
  2064. VAR4:=EMA(LLV(LOW,250),21); \n\
  2065. VAR5:=EMA(LLV(LOW,90),21);\n\
  2066. \n\
  2067. VAR6:=EMA((VAR3*0.96+VAR4*0.96+VAR5*0.96+VAR0*0.558+VAR1*0.558+VAR2*0.558)/6,21); \n\
  2068. VAR7:=EMA((VAR3*1.25+VAR4*1.23+VAR5*1.2+VAR0*0.55+VAR1*0.55+VAR2*0.65)/6,21); \n\
  2069. VAR8:=EMA((VAR3*1.3+VAR4*1.3+VAR5*1.3+VAR0*0.68+VAR1*0.68+VAR2*0.68)/6,21); \n\
  2070. VAR9:=EMA((VAR6*3+VAR7*2+VAR8)/6*1.738,21); \n\
  2071. VAR10:=REF(LOW,1); \n\
  2072. VAR11:=SMA(ABS(LOW-VAR10),3,1)/SMA(MAX(LOW-VAR10,0),3,1)*100; \n\
  2073. VAR12:=EMA(IFF(CLOSE*1.35<=VAR9,VAR11*10,VAR11/10),3); \n\
  2074. VAR13:=LLV(LOW,30); \n\
  2075. VAR14:=HHV(VAR12,30); \n\
  2076. VAR15:=IFF(MA(CLOSE,58),1,0); \n\
  2077. VAR16:=EMA(IFF(LOW<=VAR13,(VAR12+VAR14*2)/2,0),3)/618*VAR15;\n\
  2078. \n\
  2079. 资金入场:IFF(VAR16>0,VAR16,0),LINETHICK,LINETHICK2, COLORFF0000; \n\
  2080. \n\
  2081. A1:IFF(资金入场>0,资金入场*1.2,0),STICK,LINETHICK5, COLORFF0000;\n\
  2082. A2:IFF(资金入场>0,资金入场*0.8,0),STICK,LINETHICK5, COLORFF6600;\n\
  2083. A3:IFF(资金入场>0,资金入场*0.6,0),STICK,LINETHICK5, COLORFF9900;\n\
  2084. A4:IFF(资金入场>0,资金入场*0.4,0) ,STICK,LINETHICK5,COLORFFCC00;\n\
  2085. A5:IFF(资金入场>0,资金入场*0.2,0) ,STICK,LINETHICK5,COLORFFFF00;'
  2086. };
  2087. return data;
  2088. }
  2089. JSIndexScript.prototype.FXG_INDEX3 = function ()
  2090. {
  2091. let data =
  2092. {
  2093. Name: '量能黄金点', Description: '量能黄金点', IsMainIndex: false,
  2094. Args: [],
  2095. Script: //脚本
  2096. 'A:=IFF((CLOSE>126.32),VOL,VOL); \n\
  2097. 主力:=MA(A,4),COLORRED;\n\
  2098. 游资:=MA(A,8),COLORYELLOW;\n\
  2099. 大户:=MA(A,16),COLORF0F000;\n\
  2100. 散户:=MA(A,32),COLOR00FF00;\n\
  2101. 主比:=ABS(((主力)/(主力 + 游资 + 大户 + 散户))*(100)),LINESTICK,COLORRED;\n\
  2102. 游比:=ABS(((游资)/(主力 + 游资 + 大户 + 散户))*(100)),LINESTICK,COLORYELLOW;\n\
  2103. 大比:=ABS(((大户)/(主力 + 游资 + 大户 + 散户))*(100)),LINESTICK,COLORF0F000;\n\
  2104. 散比:=ABS(((散户)/(主力 + 游资 + 大户 + 散户))*(100)),LINESTICK,COLOR00FF00;\n\
  2105. 警戒线:MA(A,180),COLORFF66FF;\n\
  2106. STICKLINE((主力 > 0),0,主力,2.5,0),COLOR1020BB;\n\
  2107. STICKLINE((主力 > 0),0,主力,0.7,0),COLORRED;\n\
  2108. STICKLINE((游资 > 0),0,游资,2.5,0),COLOR009CFF;\n\
  2109. STICKLINE((游资 > 0),0,游资,0.7,0),COLORYELLOW;\n\
  2110. STICKLINE((大户 > 0),0,大户,2.5,0),COLORFF8800;\n\
  2111. STICKLINE((大户 > 0),0,大户,0.7,0),COLORLIBLUE;\n\
  2112. STICKLINE((散户 > 0),0,散户,2.5,0),COLOR00CA00;\n\
  2113. STICKLINE((散户 > 0),0,散户,0.7,0),COLORGREEN;'
  2114. };
  2115. return data;
  2116. }
  2117. ////////////////////////////////////////////////////////////////////////////////////////////////
  2118. //五彩K线
  2119. JSIndexScript.prototype.COLOR_KSTAR1 = function ()
  2120. {
  2121. let data =
  2122. {
  2123. Name: '十字星', Description: '十字星', IsMainIndex: true, InstructionType: 2,
  2124. Script: //脚本
  2125. 'KSTAR:CLOSE==OPEN&&HIGH>LOW;'
  2126. };
  2127. return data;
  2128. }
  2129. JSIndexScript.prototype.COLOR_KSTAR2 = function ()
  2130. {
  2131. let data =
  2132. {
  2133. Name: '早晨之星', Description: '早晨之星', IsMainIndex: true, InstructionType: 2,
  2134. Script: //脚本
  2135. 'KSTAR:(REF(CLOSE,2)/REF(OPEN,2)<0.95) && (REF(OPEN,1) < REF(CLOSE,2)) && (ABS(REF(OPEN,1)-REF(CLOSE,1))/REF(CLOSE,1)<0.03) && CLOSE/OPEN>1.05 && CLOSE>REF(CLOSE,2);'
  2136. };
  2137. return data;
  2138. }
  2139. JSIndexScript.prototype.COLOR_KSTAR3 = function ()
  2140. {
  2141. let data =
  2142. {
  2143. Name: '黄昏之星', Description: '黄昏之星', IsMainIndex: true, InstructionType: 2,
  2144. Script: //脚本
  2145. 'KSTAR:REF(CLOSE,2)/REF(OPEN,2)>1.05 && REF(OPEN,1)>REF(CLOSE,2) && ABS(REF(OPEN,1)-REF(CLOSE,1))/REF(CLOSE,1)<0.03 && CLOSE/OPEN<0.95 && CLOSE<REF(CLOSE,2);'
  2146. };
  2147. return data;
  2148. }
  2149. JSIndexScript.prototype.COLOR_SHI1 = function ()
  2150. {
  2151. let data =
  2152. {
  2153. Name: '长十字', Description: '长十字', IsMainIndex: true, InstructionType: 2,
  2154. Script: //脚本
  2155. 'KSTAR:CLOSE==OPEN&&HIGH/LOW>1.03;'
  2156. };
  2157. return data;
  2158. }
  2159. JSIndexScript.prototype.COLOR_K220 = function ()
  2160. {
  2161. let data =
  2162. {
  2163. Name: '身怀六甲', Description: '身怀六甲', IsMainIndex: true, InstructionType: 2,
  2164. Script: //脚本
  2165. 'KSTAR:ABS(REF(CLOSE,1)-REF(OPEN,1))/REF(CLOSE,1)>0.04&&\n\
  2166. ABS(CLOSE-OPEN)/CLOSE<0.005&&\n\
  2167. MAX(CLOSE,OPEN)<MAX(REF(CLOSE,1),REF(OPEN,1))&&\n\
  2168. MIN(CLOSE,OPEN)>MIN(REF(CLOSE,1),REF(OPEN,1));'
  2169. };
  2170. return data;
  2171. }
  2172. JSIndexScript.prototype.COLOR_K300 = function ()
  2173. {
  2174. let data =
  2175. {
  2176. Name: '三个白武士', Description: '三个白武士', IsMainIndex: true, InstructionType: 2,
  2177. Script: //脚本
  2178. 'KSTAR:UPNDAY(CLOSE,3)&&NDAY(CLOSE,OPEN,3);'
  2179. };
  2180. return data;
  2181. }
  2182. JSIndexScript.prototype.COLOR_K310 = function ()
  2183. {
  2184. let data =
  2185. {
  2186. Name: '三只乌鸦', Description: '三只乌鸦', IsMainIndex: true, InstructionType: 2,
  2187. Script: //脚本
  2188. 'KSTAR:DOWNNDAY(CLOSE,3)&&NDAY(OPEN,CLOSE,3);'
  2189. };
  2190. return data;
  2191. }
  2192. JSIndexScript.prototype.COLOR_K380 = function ()
  2193. {
  2194. let data =
  2195. {
  2196. Name: '光头阳线', Description: '光头阳线', IsMainIndex: true, InstructionType: 2,
  2197. Script: //脚本
  2198. 'KSTAR:HIGH==CLOSE&&HIGH>LOW;'
  2199. };
  2200. return data;
  2201. }
  2202. JSIndexScript.prototype.COLOR_K390 = function ()
  2203. {
  2204. let data =
  2205. {
  2206. Name: '光脚阴线', Description: '光脚阴线', IsMainIndex: true, InstructionType: 2,
  2207. Script: //脚本
  2208. 'KSTAR:LOW==CLOSE&&HIGH>LOW;'
  2209. };
  2210. return data;
  2211. }
  2212. JSIndexScript.prototype.COLOR_K134 = function ()
  2213. {
  2214. let data =
  2215. {
  2216. Name: '垂死十字', Description: '垂死十字', IsMainIndex: true, InstructionType: 2,
  2217. Script: //脚本
  2218. 'KSTAR:CLOSE==OPEN&&CLOSE==LOW&&CLOSE<HIGH;'
  2219. };
  2220. return data;
  2221. }
  2222. JSIndexScript.prototype.COLOR_K140 = function ()
  2223. {
  2224. let data =
  2225. {
  2226. Name: '早晨十字星', Description: '早晨十字星', IsMainIndex: true, InstructionType: 2,
  2227. Script: //脚本
  2228. 'KSTAR:REF(CLOSE,2)/REF(OPEN,2)<0.95&&\n\
  2229. REF(OPEN,1)<REF(CLOSE,2)&&\n\
  2230. REF(OPEN,1)==REF(CLOSE,1)&&\n\
  2231. CLOSE/OPEN>1.05&&CLOSE>REF(CLOSE,2);'
  2232. };
  2233. return data;
  2234. }
  2235. JSIndexScript.prototype.COLOR_K150 = function ()
  2236. {
  2237. let data =
  2238. {
  2239. Name: '黄昏十字星', Description: '黄昏十字星', IsMainIndex: true, InstructionType: 2,
  2240. Script: //脚本
  2241. 'KSTAR:REF(CLOSE,2)/REF(OPEN,2)>1.05&&\n\
  2242. REF(OPEN,1)>REF(CLOSE,2)&&\n\
  2243. REF(OPEN,1)=REF(CLOSE,1)&&\n\
  2244. CLOSE/OPEN<0.95&&CLOSE<REF(CLOSE,2);'
  2245. };
  2246. return data;
  2247. }
  2248. JSIndexScript.prototype.COLOR_K160 = function ()
  2249. {
  2250. let data =
  2251. {
  2252. Name: '射击之星', Description: '射击之星', IsMainIndex: true, InstructionType: 2,
  2253. Script: //脚本
  2254. 'KSTAR:MIN(OPEN,CLOSE)==LOW&&\n\
  2255. HIGH-LOW>3*(MAX(OPEN,CLOSE)-LOW)&&\n\
  2256. CLOSE>MA(CLOSE,5);'
  2257. };
  2258. return data;
  2259. }
  2260. JSIndexScript.prototype.COLOR_K165 = function ()
  2261. {
  2262. let data =
  2263. {
  2264. Name: '倒转锤头', Description: '倒转锤头', IsMainIndex: true, InstructionType: 2,
  2265. Script: //脚本
  2266. 'KSTAR:MIN(OPEN,CLOSE)==LOW&&\n\
  2267. HIGH-LOW>3*(MAX(OPEN,CLOSE)-LOW)&&\n\
  2268. CLOSE<MA(CLOSE,5);'
  2269. };
  2270. return data;
  2271. }
  2272. JSIndexScript.prototype.COLOR_K170 = function ()
  2273. {
  2274. let data =
  2275. {
  2276. Name: '锤头', Description: '锤头', IsMainIndex: true, InstructionType: 2,
  2277. Script: //脚本
  2278. 'OUT:HIGH==MAX(OPEN,CLOSE)&&\n\
  2279. HIGH-LOW>3*(HIGH-MIN(OPEN,CLOSE))&&\n\
  2280. CLOSE<MA(CLOSE,5);'
  2281. };
  2282. return data;
  2283. }
  2284. JSIndexScript.prototype.COLOR_K180 = function ()
  2285. {
  2286. let data =
  2287. {
  2288. Name: '吊颈', Description: '吊颈', IsMainIndex: true, InstructionType: 2,
  2289. Script: //脚本
  2290. 'OUT:HIGH==MAX(OPEN,CLOSE)&&\n\
  2291. HIGH-LOW>3*(HIGH-MIN(OPEN,CLOSE))&&\n\
  2292. CLOSE>MA(CLOSE,5);'
  2293. };
  2294. return data;
  2295. }
  2296. JSIndexScript.prototype.COLOR_K190 = function ()
  2297. {
  2298. let data =
  2299. {
  2300. Name: '穿头破脚', Description: '穿头破脚', IsMainIndex: true, InstructionType: 2,
  2301. Script: //脚本
  2302. 'OUT:(REF(CLOSE,1)/REF(OPEN,1)>1.03&&\n\
  2303. CLOSE/OPEN<0.96&&\n\
  2304. CLOSE<REF(OPEN,1)&&OPEN>REF(CLOSE,1))||\n\
  2305. (REF(CLOSE,1)/REF(OPEN,1)<0.97&&\n\
  2306. CLOSE/OPEN>1.04&&\n\
  2307. CLOSE>REF(OPEN,1)&&OPEN<REF(CLOSE,1));'
  2308. };
  2309. return data;
  2310. }
  2311. JSIndexScript.prototype.COLOR_SWORD = function ()
  2312. {
  2313. let data =
  2314. {
  2315. Name: '剑', Description: '剑', IsMainIndex: true, InstructionType: 2,
  2316. Script: //脚本
  2317. 'AA:=VOL>REF(VOL,1)||VOL>(CAPITAL*0.1);\n\
  2318. BB:=OPEN>=(REF(HIGH,1))&&REF(HIGH,1)>(REF(HIGH,2)*1.06);\n\
  2319. CC:=CLOSE>(REF(CLOSE,1))-(REF(CLOSE,1)*0.01);\n\
  2320. DD:=CLOSE<(HIGH*0.965) && HIGH>(OPEN*1.05);\n\
  2321. EE:=LOW<OPEN && LOW<CLOSE&&HIGH>(REF(CLOSE,1)*1.06);\n\
  2322. FF:=(HIGH-(MAX(OPEN,CLOSE)))/2>(MIN(OPEN,CLOSE))-LOW;\n\
  2323. GG:=(ABS(OPEN-CLOSE))/2<(MIN(OPEN,CLOSE)-LOW);\n\
  2324. SWORDO:AA&&BB&&CC&&DD&&EE&&FF&&GG;'
  2325. };
  2326. return data;
  2327. }
  2328. JSIndexScript.prototype.COLOR_CSFR = function ()
  2329. {
  2330. let data =
  2331. {
  2332. Name: '出水芙蓉', Description: '出水芙蓉', IsMainIndex: true, InstructionType: 2,
  2333. Script: //脚本
  2334. 'A:=CLOSE>OPEN;\n\
  2335. B:=A&&CLOSE>MA(CLOSE,S)&&CLOSE>MA(CLOSE,M)&&CLOSE>MA(CLOSE,LL);\n\
  2336. CC:=B&&OPEN<MA(CLOSE,M)&&OPEN<MA(CLOSE,LL);\n\
  2337. CSFRO:CC&&(CLOSE-OPEN)>0.0618*CLOSE;'
  2338. };
  2339. return data;
  2340. }
  2341. JSIndexScript.prototype.COLOR_WYGD = function ()
  2342. {
  2343. let data =
  2344. {
  2345. Name: '乌云盖顶', Description: '乌云盖顶', IsMainIndex: true, InstructionType: 2,
  2346. Script: //脚本
  2347. 'VAR1:BACKSET( \n\
  2348. REF(CLOSE,1)/REF(OPEN,1)>1.03 AND \n\
  2349. CLOSE/OPEN<0.97 AND \n\
  2350. OPEN>REF(CLOSE,1) AND CLOSE<REF(CLOSE,1), 3);'
  2351. };
  2352. return data;
  2353. }
  2354. JSIndexScript.prototype.COLOR_SGCJ = function ()
  2355. {
  2356. let data =
  2357. {
  2358. Name: '乌云盖顶', Description: '乌云盖顶', IsMainIndex: true, InstructionType: 2,
  2359. Script: //脚本
  2360. 'VAR1:BACKSET( \n\
  2361. REF(CLOSE,1)/REF(OPEN,1)<0.97 AND \n\
  2362. CLOSE/OPEN>1.03 AND \n\
  2363. OPEN<REF(CLOSE,1) AND CLOSE>REF(CLOSE,1), 3);'
  2364. };
  2365. return data;
  2366. }
  2367. JSIndexScript.prototype.COLOR_SZTAI = function ()
  2368. {
  2369. let data =
  2370. {
  2371. Name: '十字胎', Description: '十字胎', IsMainIndex: true, InstructionType: 2,
  2372. Script: //脚本
  2373. 'VAR1:BACKSET( ABS(REF(CLOSE,1)-REF(OPEN,1))/REF(CLOSE,1) > 0.04 AND \n\
  2374. CLOSE==OPEN AND CLOSE < MAX(REF(CLOSE,1),REF(OPEN,1)) AND \n\
  2375. CLOSE > MIN(REF(CLOSE,1),REF(OPEN,1)), 2);'
  2376. };
  2377. return data;
  2378. }
  2379. JSIndexScript.prototype.COLOR_PINGDING = function ()
  2380. {
  2381. let data =
  2382. {
  2383. Name: '平顶', Description: '平顶', IsMainIndex: true, InstructionType: 2,
  2384. Script: //脚本
  2385. 'VAR1:BACKSET(ABS(HIGH-REF(HIGH,1))/HIGH<0.001,2);'
  2386. };
  2387. return data;
  2388. }
  2389. JSIndexScript.prototype.COLOR_PINGDI = function ()
  2390. {
  2391. let data =
  2392. {
  2393. Name: '平底', Description: '平底', IsMainIndex: true, InstructionType: 2,
  2394. Script: //脚本
  2395. 'VAR1:BACKSET((ABS(LOW-REF(LOW,1))/LOW<0.001 AND \n\
  2396. ABS(REF(LOW,1)-REF(LOW,2))/REF(LOW,1)<=0.001),2);'
  2397. };
  2398. return data;
  2399. }
  2400. JSIndexScript.prototype.COLOR_DAYANZHU = function ()
  2401. {
  2402. let data =
  2403. {
  2404. Name: '大阳烛', Description: '大阳烛', IsMainIndex: true, InstructionType: 2,
  2405. Script: //脚本
  2406. 'VAR1:CLOSE/OPEN>1.05 AND HIGH/LOW < CLOSE/OPEN+0.018;'
  2407. };
  2408. return data;
  2409. }
  2410. JSIndexScript.prototype.COLOR_DAYINGZHU = function ()
  2411. {
  2412. let data =
  2413. {
  2414. Name: '大阴烛', Description: '大阴烛', IsMainIndex: true, InstructionType: 2,
  2415. Script: //脚本
  2416. 'VAR1:OPEN/CLOSE > 1.05 AND HIGH/LOW < OPEN/CLOSE+0.018;'
  2417. };
  2418. return data;
  2419. }
  2420. JSIndexScript.prototype.COLOR_HYFG = function ()
  2421. {
  2422. let data =
  2423. {
  2424. Name: '好友反攻', Description: '好友反攻', IsMainIndex: true, InstructionType: 2,
  2425. Script: //脚本
  2426. 'VAR1:BACKSET( (REF(CLOSE,1)<REF(OPEN,1) AND \n\
  2427. CLOSE>OPEN AND ABS(CLOSE-REF(CLOSE,1))/CLOSE<0.002),2);'
  2428. };
  2429. return data;
  2430. }
  2431. JSIndexScript.prototype.COLOR_TKQK = function ()
  2432. {
  2433. let data =
  2434. {
  2435. Name: '跳空缺口', Description: '跳空缺口', IsMainIndex: true, InstructionType: 2,
  2436. Script: //脚本
  2437. 'VAR1:BACKSET( HIGH<REF(LOW,1) OR LOW>REF(HIGH,1),2);'
  2438. };
  2439. return data;
  2440. }
  2441. JSIndexScript.prototype.COLOR_SFWY = function ()
  2442. {
  2443. let data =
  2444. {
  2445. Name: '双飞乌鸦', Description: '双飞乌鸦', IsMainIndex: true, InstructionType: 2,
  2446. Script: //脚本
  2447. 'VAR1:BACKSET( REF(CLOSE,1)<REF(OPEN,1) AND CLOSE<OPEN AND CLOSE/OPEN<0.98,1);'
  2448. };
  2449. return data;
  2450. }
  2451. JSIndexScript.prototype.COLOR_SSSBQ = function ()
  2452. {
  2453. let data =
  2454. {
  2455. Name: '上升三部曲', Description: '上升三部曲', IsMainIndex: true, InstructionType: 2,
  2456. Script: //脚本
  2457. 'VAR1:BACKSET( \n\
  2458. REF(CLOSE,4)/REF(OPEN,4)>1.03 AND \n\
  2459. REF(CLOSE,3)<REF(OPEN,3) AND \n\
  2460. REF(CLOSE,2)<REF(OPEN,2) AND \n\
  2461. REF(CLOSE,1)<REF(OPEN,1) AND \n\
  2462. REF(LOW,4)<REF(LOW,3) AND \n\
  2463. REF(LOW,4)<REF(LOW,2) AND \n\
  2464. REF(LOW,4)<REF(LOW,1) AND \n\
  2465. REF(HIGH,4)>REF(HIGH,3) AND \n\
  2466. REF(HIGH,4)>REF(HIGH,2) AND \n\
  2467. REF(HIGH,4)>REF(HIGH,1) AND \n\
  2468. CLOSE/OPEN>1.03 AND \n\
  2469. CLOSE>REF(CLOSE,4), 5);'
  2470. };
  2471. return data;
  2472. }
  2473. JSIndexScript.prototype.COLOR_XDSBQ = function ()
  2474. {
  2475. let data =
  2476. {
  2477. Name: '下跌三部曲', Description: '下跌三部曲', IsMainIndex: true, InstructionType: 2,
  2478. Script: //脚本
  2479. 'VAR1:BACKSET( \n\
  2480. REF(CLOSE,4)/REF(OPEN,4)<0.97 AND \n\
  2481. REF(CLOSE,3)>REF(OPEN,3) AND \n\
  2482. REF(CLOSE,2)>REF(OPEN,2) AND \n\
  2483. REF(CLOSE,1)>REF(OPEN,1) AND \n\
  2484. REF(LOW,4)<REF(LOW,3) AND \n\
  2485. REF(LOW,4)<REF(LOW,2) AND \n\
  2486. REF(LOW,4)<REF(LOW,1) AND \n\
  2487. REF(HIGH,4)>REF(HIGH,3) AND \n\
  2488. REF(HIGH,4)>REF(HIGH,2) AND \n\
  2489. REF(HIGH,4)>REF(HIGH,1) AND \n\
  2490. CLOSE/OPEN<0.97 AND \n\
  2491. CLOSE<REF(CLOSE,4), 5);'
  2492. };
  2493. return data;
  2494. }
  2495. JSIndexScript.prototype.COLOR_CHXY = function ()
  2496. {
  2497. let data =
  2498. {
  2499. Name: '长下影', Description: '长下影', IsMainIndex: true, InstructionType: 2,
  2500. Script: //脚本
  2501. 'VAR2:(MIN(CLOSE,OPEN)-LOW)/(HIGH-LOW)>0.667;'
  2502. };
  2503. return data;
  2504. }
  2505. JSIndexScript.prototype.COLOR_CHSY = function ()
  2506. {
  2507. let data =
  2508. {
  2509. Name: '长上影', Description: '长上影', IsMainIndex: true, InstructionType: 2,
  2510. Script: //脚本
  2511. 'VAR2:(HIGH-MAX(CLOSE,OPEN))/(HIGH-LOW)>0.667,COLORBLUE;'
  2512. };
  2513. return data;
  2514. }
  2515. JSIndexScript.prototype.COLOR_FENLI = function ()
  2516. {
  2517. let data =
  2518. {
  2519. Name: '分离', Description: '分离', IsMainIndex: true, InstructionType: 2,
  2520. Script: //脚本
  2521. 'VAR1:BACKSET( OPEN==REF(OPEN,1) AND (CLOSE-OPEN)*(REF(CLOSE,1)-REF(OPEN,1))<0,2);'
  2522. };
  2523. return data;
  2524. }
  2525. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  2526. //交易系统
  2527. JSIndexScript.prototype.TRADE_BIAS = function ()
  2528. {
  2529. let data =
  2530. {
  2531. Name: 'BIAS', Description: '乖离率专家系统', IsMainIndex: true, InstructionType: 1,
  2532. Args: [{ Name: 'N', Value: 12 }, { Name: 'LL', Value: 6 }, { Name: 'LH', Value: 6 }],
  2533. Script: //脚本
  2534. 'BIAS:=(CLOSE-MA(CLOSE,N))/MA(CLOSE,N)*100;\n\
  2535. ENTERLONG:CROSS(-LL,BIAS);\n\
  2536. EXITLONG:CROSS(BIAS,LH);'
  2537. };
  2538. return data;
  2539. }
  2540. JSIndexScript.prototype.TRADE_CCI = function ()
  2541. {
  2542. let data =
  2543. {
  2544. Name: 'CCI', Description: 'CCI专家系统', IsMainIndex: true, InstructionType: 1,
  2545. Args: [{ Name: 'N', Value: 14 }],
  2546. Script: //脚本
  2547. 'TYP:=(HIGH+LOW+CLOSE)/3;\n\
  2548. CCI:=(TYP-MA(TYP,N))/(0.015*AVEDEV(TYP,N));\n\
  2549. INDEX:=CCI;\n\
  2550. ENTERLONG:CROSS(INDEX,-100);\n\
  2551. EXITLONG:CROSS(100,INDEX);'
  2552. };
  2553. return data;
  2554. }
  2555. JSIndexScript.prototype.TRADE_DMI = function ()
  2556. {
  2557. let data =
  2558. {
  2559. Name: 'DMI', Description: '趋向专家系统', IsMainIndex: true, InstructionType: 1,
  2560. Args: [{ Name: 'N', Value: 14 }],
  2561. Script: //脚本
  2562. 'MTR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N);\n\
  2563. HD :=HIGH-REF(HIGH,1);\n\
  2564. LD :=REF(LOW,1)-LOW;\n\
  2565. PDM:=SUM(IF(HD>0&&HD>LD,HD,0),N);\n\
  2566. MDM:=SUM(IF(LD>0&&LD>HD,LD,0),N);\n\
  2567. PDI:=PDM*100/MTR;\n\
  2568. MDI:=MDM*100/MTR;\n\
  2569. ENTERLONG:CROSS(PDI,MDI);\n\
  2570. EXITLONG:CROSS(MDI,PDI);'
  2571. };
  2572. return data;
  2573. }
  2574. JSIndexScript.prototype.TRADE_KD = function ()
  2575. {
  2576. let data =
  2577. {
  2578. Name: 'KD', Description: 'KD指标专家系统', IsMainIndex: true, InstructionType: 1,
  2579. Args: [{ Name: 'N', Value: 9 }, { Name: 'M1', Value: 3 }, { Name: 'M2', Value: 3 }],
  2580. Script: //脚本
  2581. 'WRSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;\n\
  2582. WK:=SMA(WRSV,M1,1);\n\
  2583. D:=SMA(WK,M2,1);\n\
  2584. ENTERLONG:CROSS(WK,D)&&WK<20;\n\
  2585. EXITLONG:CROSS(D,WK)&&WK>80;'
  2586. };
  2587. return data;
  2588. }
  2589. JSIndexScript.prototype.TRADE_BOLL = function ()
  2590. {
  2591. let data =
  2592. {
  2593. Name: 'BOLL', Description: '布林带专家系统', IsMainIndex: true, InstructionType: 1,
  2594. Args: [{ Name: 'N', Value: 20 }],
  2595. Script: //脚本
  2596. 'MID :=MA(CLOSE,N);\n\
  2597. UPPER:=MID+2*STD(CLOSE,N);\n\
  2598. LOWER:=MID-2*STD(CLOSE,N);\n\
  2599. ENTERLONG:CROSS(CLOSE,LOWER);\n\
  2600. EXITLONG:CROSS(CLOSE,UPPER);'
  2601. };
  2602. return data;
  2603. }
  2604. JSIndexScript.prototype.TRADE_KDJ = function ()
  2605. {
  2606. let data =
  2607. {
  2608. Name: 'KDJ', Description: 'KDJ专家系统', IsMainIndex: true, InstructionType: 1,
  2609. Args: [{ Name: 'N', Value: 9 }, { Name: 'M1', Value: 3 }],
  2610. Script: //脚本
  2611. 'RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;\n\
  2612. K:=SMA(RSV,M1,1);\n\
  2613. D:=SMA(K,M1,1);\n\
  2614. J:=3*K-2*D;\n\
  2615. ENTERLONG:CROSS(J,0);\n\
  2616. EXITLONG:CROSS(100,J);'
  2617. };
  2618. return data;
  2619. }
  2620. JSIndexScript.prototype.TRADE_MA = function ()
  2621. {
  2622. let data =
  2623. {
  2624. Name: 'MA', Description: '均线专家系统', IsMainIndex: true, InstructionType: 1,
  2625. Args: [{ Name: 'SHORT', Value: 5 }, { Name: 'LONG', Value: 20 }],
  2626. Script: //脚本
  2627. 'ENTERLONG:CROSS(MA(CLOSE,SHORT),MA(CLOSE,LONG));\n\
  2628. EXITLONG:CROSS(MA(CLOSE,LONG),MA(CLOSE,SHORT));'
  2629. };
  2630. return data;
  2631. }
  2632. JSIndexScript.prototype.TRADE_MACD = function ()
  2633. {
  2634. let data =
  2635. {
  2636. Name: 'MACD', Description: 'MACD专家系统', IsMainIndex: true, InstructionType: 1,
  2637. Args: [{ Name: 'LONG', Value: 26 }, { Name: 'SHORT', Value: 12 }, { Name: 'M', Value: 9 }],
  2638. Script: //脚本
  2639. 'DIFF:=EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);\n\
  2640. DEA := EMA(DIFF,M);\n\
  2641. MACD := 2*(DIFF-DEA);\n\
  2642. ENTERLONG:CROSS(MACD,0);\n\
  2643. EXITLONG:CROSS(0,MACD);'
  2644. };
  2645. return data;
  2646. }
  2647. JSIndexScript.prototype.TRADE_MTM = function ()
  2648. {
  2649. let data =
  2650. {
  2651. Name: 'MTM', Description: '动力指标专家系统', IsMainIndex: true, InstructionType: 1,
  2652. Args: [{ Name: 'N', Value: 6 }],
  2653. Script: //脚本
  2654. 'WMTM:=C-REF(C,N);\n\
  2655. ENTERLONG:CROSS(WMTM,0);\n\
  2656. EXITLONG:CROSS(0,WMTM);'
  2657. };
  2658. return data;
  2659. }
  2660. JSIndexScript.prototype.TRADE_PSY = function ()
  2661. {
  2662. let data =
  2663. {
  2664. Name: 'PSY', Description: 'PSY心理线专家系统', IsMainIndex: true, InstructionType: 1,
  2665. Args: [{ Name: 'N', Value: 12 }, { Name: 'LL', Value: 10 }, { Name: 'LH', Value: 85 }],
  2666. Script: //脚本
  2667. 'MYPSY:=COUNT(CLOSE>REF(CLOSE,1),N)/N*100;\n\
  2668. ENTERLONG:CROSS(LL,MYPSY);\n\
  2669. EXITLONG:CROSS(MYPSY,LH);'
  2670. };
  2671. return data;
  2672. }
  2673. JSIndexScript.prototype.TRADE_ROC = function ()
  2674. {
  2675. let data =
  2676. {
  2677. Name: 'ROC', Description: '变动速率专家系统', IsMainIndex: true, InstructionType: 1,
  2678. Args: [{ Name: 'N', Value: 12 }, { Name: 'M', Value: 6 }],
  2679. Script: //脚本
  2680. 'WROC:=MA(100*(CLOSE-REF(CLOSE,N))/REF(CLOSE,N),M);\n\
  2681. ENTERLONG:CROSS(WROC,0);\n\
  2682. EXITLONG:CROSS(0,WROC);'
  2683. };
  2684. return data;
  2685. }
  2686. JSIndexScript.prototype.TRADE_RSI = function ()
  2687. {
  2688. let data =
  2689. {
  2690. Name: 'RSI', Description: '相对强弱专家系统', IsMainIndex: true, InstructionType: 1,
  2691. Args: [{ Name: 'N', Value: 6 }, { Name: 'LL', Value: 20 }, { Name: 'LH', Value: 80 }],
  2692. Script: //脚本
  2693. 'LC:=REF(CLOSE,1);\n\
  2694. WRSI:=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;\n\
  2695. ENTERLONG:CROSS(WRSI,LL);\n\
  2696. EXITLONG:CROSS(LH,WRSI);'
  2697. };
  2698. return data;
  2699. }
  2700. JSIndexScript.prototype.TRADE_VR = function ()
  2701. {
  2702. let data =
  2703. {
  2704. Name: 'VR', Description: 'VR容量比率专家系统', IsMainIndex: true, InstructionType: 1,
  2705. Args: [{ Name: 'N', Value: 26 }, { Name: 'LL', Value: 70 }, { Name: 'LH', Value: 250 }],
  2706. Script: //脚本
  2707. 'WVR := SUM((IF(CLOSE>OPEN,VOL,0)+IF(CLOSE=OPEN,VOL/2,0)),N)/SUM((IF(CLOSE<OPEN,VOL,0)+IF(CLOSE=OPEN,VOL/2,0)),N)*100;\n\
  2708. ENTERLONG:CROSS(LL,WVR);\n\
  2709. EXITLONG:CROSS(WVR,LH);'
  2710. };
  2711. return data;
  2712. }
  2713. JSIndexScript.prototype.TRADE_DPSJ = function ()
  2714. {
  2715. let data =
  2716. {
  2717. Name: 'DPSJ', Description: '大盘随机专家系统', IsMainIndex: true, InstructionType: 1,
  2718. Args: [{ Name: 'N1', Value: 18 }, { Name: 'N2', Value: 12 }],
  2719. Script: //脚本
  2720. 'RSV:=(INDEXC-LLV(INDEXL,N1))/(HHV(INDEXH,N1)-LLV(INDEXL,N1))*100;\n\
  2721. K:=SMA(RSV,N2,1);\n\
  2722. HSL:VOL/100/(FINANCE(7));\n\
  2723. ENTERLONG: CROSS(K,20);\n\
  2724. EXITLONG: (CROSS(HSL,5) OR CROSS(K,80));'
  2725. };
  2726. return data;
  2727. }
  2728. JSIndexScript.prototype.TEST = function ()
  2729. {
  2730. let data =
  2731. {
  2732. Name: 'TEST', Description: '测试脚本', IsMainIndex: true,
  2733. Args: [{ Name: 'M1', Value: 5 },{ Name: 'M2', Value: 10 },{ Name: 'M3', Value: 15 }],
  2734. Script: //脚本
  2735. //"T2:KDJ.J;"+
  2736. //"收盘价:C;成交量:VOL, SINGLELINE, RGB(100,100,100);"
  2737. `DRAWTEXTREL(120,30,STRFORMAT("当前屏K线最小值: {0}",SYSPARAM(5))), RGB(250,0,0);
  2738. DRAWTEXTREL(120,100,STRFORMAT("当前屏K线最大值: {0}",SYSPARAM(4))), RGB(0,250,0);
  2739. DRAWTEXTREL(120,170,STRFORMAT("主图可见K线最初位置: {0}",SYSPARAM(2))), RGB(0,0,0);
  2740. DRAWTEXTREL(120,260,STRFORMAT("主图可见K线最后位置: {0}",SYSPARAM(3))), RGB(0,0,0);`
  2741. //"T2:IF(KDJ.J>-10,KDJ.J#WEEK,0);"
  2742. /*
  2743. Script:'收:=C("000001.SH");' +
  2744. '开:=O("000001.SH");\n' +
  2745. '低:=L("000001.SH");'+
  2746. '高:=H("000001.SH");'+
  2747. "DRAWKLINE(高,开,低,收), COLORYELLOW;"
  2748. */
  2749. //"DRAWGBK_DIV(C>O,RGB(221 ,160 ,221),RGB(100 ,250, 250),1,1);"
  2750. /*
  2751. 'TEXT:IF(PERIOD=5,"","不支持");\n'+
  2752. 'DRAWTEXTREL(500,500,TEXT),FONTSIZE20;\n'+
  2753. 'TESTSKIP(PERIOD!=5);\n'+
  2754. 'T:C;\n'+
  2755. 'T2:O;\n'
  2756. */
  2757. };
  2758. return data;
  2759. }
  2760. JSIndexScript.prototype.CJL = function ()
  2761. {
  2762. let data =
  2763. {
  2764. Name: 'CJL', Description: '期货持仓量', IsMainIndex: false,
  2765. Args: [],
  2766. Script: //脚本
  2767. "成交量:VOL,VOLSTICK;\n\
  2768. 持仓量:VOLINSTK,LINEOVERLAY;"
  2769. };
  2770. return data;
  2771. }
  2772. JSIndexScript.prototype.VOL_POSITION=function()
  2773. {
  2774. let data =
  2775. {
  2776. Name: '持仓量', Description: '持仓量', IsMainIndex: false,
  2777. Args: [],
  2778. Script: //脚本
  2779. "成交量:VOL,VOLSTICK;\n\
  2780. 持仓量:VOLINSTK,SINGLELINE;"
  2781. };
  2782. return data;
  2783. }
  2784. JSIndexScript.prototype.SQJZ = function ()
  2785. {
  2786. let data =
  2787. {
  2788. Name: 'SQJZ', Description: '神奇九转', IsMainIndex: true,
  2789. Script: //脚本
  2790. "B:=C<REF(C,4);\n\
  2791. N:=CURRBARSCOUNT;\n\
  2792. B1:=(N=6 AND REFXV(COUNT(B,6),5)=6) OR (N=7 AND REFXV(COUNT(B,7),6)=7) OR (N=8 AND REFXV(COUNT(B,8),7)=8) OR (N>=9 AND REFXV(COUNT(B,9),8)=9);\n\
  2793. DRAWNUMBER(B1 AND REF(B,1)=0,L,1),COLORMAGENTA;\n\
  2794. B2:=(N=5 AND REFXV(COUNT(B,6),4)=6) OR (N=6 AND REFXV(COUNT(B,7),5)=7) OR (N=7 AND REFXV(COUNT(B,8),6)=8) OR (N>=8 AND REFXV(COUNT(B,9),7)=9);\n\
  2795. DRAWNUMBER(B2 AND REF(B,2)=0,L,2),COLORMAGENTA;\n\
  2796. B8:=(N=1 AND COUNT(B,8)=8) OR (N>=2 AND REFXV(COUNT(B,9),1)=9);\n\
  2797. DRAWNUMBER(B8 AND REF(B,8)=0,L,8),COLORMAGENTA;\n\
  2798. B9:=(N>=1 AND COUNT(B,9)=9);\n\
  2799. DRAWNUMBER(B9 AND REF(B,9)=0,L,9),COLORBROWN;\n\
  2800. S:=C>REF(C,4);\n\
  2801. S1:=(N=6 AND REFXV(COUNT(S,6),5)=6) OR (N=7 AND REFXV(COUNT(S,7),6)=7) OR (N=8 AND REFXV(COUNT(S,8),7)=8) OR (N>=9 AND REFXV(COUNT(S,9),8)=9);\n\
  2802. DRAWNUMBER(S1 AND REF(S,1)=0,H,1),COLORMAGENTA,DRAWABOVE;\n\
  2803. S2:=(N=5 AND REFXV(COUNT(S,6),4)=6) OR (N=6 AND REFXV(COUNT(S,7),5)=7) OR (N=7 AND REFXV(COUNT(S,8),6)=8) OR (N>=8 AND REFXV(COUNT(S,9),7)=9);\n\
  2804. DRAWNUMBER(S2 AND REF(S,2)=0,H,2),COLORMAGENTA,DRAWABOVE;\n\
  2805. S8:=(N=1 AND COUNT(S,8)=8) OR (N>=2 AND REFXV(COUNT(S,9),1)=9);\n\
  2806. DRAWNUMBER(S8 AND REF(S,8)=0,H,8),COLORMAGENTA,DRAWABOVE;\n\
  2807. S9:=(N>=1 AND COUNT(S,9)=9);\n\
  2808. DRAWNUMBER(S9 AND REF(S,9)=0,H,9),COLORGREEN,DRAWABOVE;"
  2809. };
  2810. return data;
  2811. }
  2812. JSIndexScript.prototype.XT = function ()
  2813. {
  2814. let data =
  2815. {
  2816. Name: 'XT', Description: '箱体', IsMainIndex: true,
  2817. Args: [{ Name: 'N', Value: 10 }],
  2818. Script: //脚本
  2819. "箱顶:PEAK(CLOSE,N,1)*0.98;\n\
  2820. 箱底:TROUGH(CLOSE,N,1)*1.02;\n\
  2821. 箱高:100*(箱顶-箱底)/箱底,NODRAW;"
  2822. };
  2823. return data;
  2824. }
  2825. JSIndexScript.prototype.CFJT = function ()
  2826. {
  2827. let data =
  2828. {
  2829. Name: 'CFJT', Description: '财富阶梯', IsMainIndex: true,
  2830. Script: //脚本
  2831. "突破:=REF(EMA(C,14),1);\n\
  2832. A1X:=(EMA(C,10)-突破)/突破*100;\n\
  2833. 多方:=IF(A1X>=0,REF(EMA(C,10),BARSLAST(CROSS(A1X,0))+1),DRAWNULL);\n\
  2834. 空方:=IF(A1X<0,REF(EMA(C,10),BARSLAST(CROSS(0,A1X))+1),DRAWNULL);\n\
  2835. STICKLINE(A1X>=0,多方,突破,110,0),COLORRED;\n\
  2836. STICKLINE(A1X<0,空方,突破,110,0),COLORGREEN;"
  2837. };
  2838. return data;
  2839. }
  2840. JSIndexScript.prototype.CYX = function ()
  2841. {
  2842. let data =
  2843. {
  2844. Name: 'CYX', Description: '撑压线', IsMainIndex: true,
  2845. Args: [{ Name: 'N', Value: 7 }],
  2846. Script: //脚本
  2847. "Z1:=STRCAT(HYBLOCK,' ');\n\
  2848. Z2:=STRCAT(Z1,DYBLOCK);\n\
  2849. Z3:=STRCAT(Z2,' ');\n\
  2850. DRAWTEXT_FIX(ISLASTBAR,0,0,0,STRCAT(Z3,GNBLOCK)),COLOR00C0C0;\n\
  2851. A1:=REF(H,N)=HHV(H,2*N+1);\n\
  2852. B1:=FILTER(A1,N);\n\
  2853. C1:=BACKSET(B1,N+1);\n\
  2854. D1:=FILTER(C1,N);\n\
  2855. A2:=REF(L,N)=LLV(L,2*N+1);\n\
  2856. B2:=FILTER(A2,N);\n\
  2857. C2:=BACKSET(B2,N+1);\n\
  2858. D2:=FILTER(C2,N);\n\
  2859. E1:=(REF(LLV(L,2*N),1)+REF(HHV(H,2*N),1))/2;\n\
  2860. E2:=(H+L)/2;\n\
  2861. H1:=(D1 AND NOT(D2 AND E1>=E2)) OR ISLASTBAR OR BARSCOUNT(C)=1;\n\
  2862. L1:=(D2 AND NOT(D1 AND E1<E2));\n\
  2863. H2:=D1 AND NOT(D2 AND E1>=E2);\n\
  2864. X1:=REF(BARSLAST(H1),1)+1;\n\
  2865. F1:=BACKSET(H1 AND COUNT(L1,X1)>0,LLVBARS(IF(L1,L,10000),X1));\n\
  2866. G1:=F1>REF(F1,1);\n\
  2867. I1:=BACKSET(G1,2);\n\
  2868. LD:=I1>REF(I1,1);\n\
  2869. L2:=LD OR ISLASTBAR OR BARSCOUNT(C)=1;\n\
  2870. X2:=REF(BARSLAST(L2),1)+1;\n\
  2871. F2:=BACKSET(L2 AND COUNT(H2,X2)>0,HHVBARS(IF(H2,H,0),X2));\n\
  2872. G2:=F2>REF(F2,1);\n\
  2873. I2:=BACKSET(G2,2);\n\
  2874. HD:=I2>REF(I2,1);\n\
  2875. R1:=BACKSET(ISLASTBAR,BARSLAST(HD)+1);\n\
  2876. S1:=R1>REF(R1,1);\n\
  2877. T1:=BACKSET(ISLASTBAR,BARSLAST(LD)+1);\n\
  2878. U1:=T1>REF(T1,1);\n\
  2879. R2:=BACKSET(S1,REF(BARSLAST(HD),1)+2);\n\
  2880. S2:=R2>REF(R2,1);\n\
  2881. T2:=BACKSET(U1,REF(BARSLAST(LD),1)+2);\n\
  2882. U2:=T2>REF(T2,1);\n\
  2883. DRAWLINE(S2,H,S1,H,1),LINETHICK2,COLORRED;\n\
  2884. DRAWLINE(U2,L,U1,L,1),LINETHICK2,COLORGREEN;"
  2885. };
  2886. return data;
  2887. }
  2888. JSIndexScript.prototype.WAVE = function ()
  2889. {
  2890. let data =
  2891. {
  2892. Name: 'WAVE', Description: '波浪分析', IsMainIndex: true,
  2893. Args: [{ Name: 'N', Value: 5 }],
  2894. Script: //脚本
  2895. "ZIG(3,N);"
  2896. };
  2897. return data;
  2898. }
  2899. JSIndexScript.prototype.ZNZ_CBAND = function()
  2900. {
  2901. let data =
  2902. {
  2903. Name: 'ZNZ_CBAND', Description: '优化成本布林带宽', IsMainIndex: false,
  2904. Args: [{ Name: 'N', Value: 20 }],
  2905. Script: //脚本
  2906. `A:=AMOUNT/(100*VOL);
  2907. BBI1:=MA(A,N);
  2908. UPR0:=BBI1+STD(A,N);
  2909. DWN0:=BBI1-STD(A,N);
  2910. UPR1:=BBI1+1.7*STD(A,N);
  2911. DWN1:=BBI1-1.7*STD(A,N);
  2912. 优化成本布林带宽:100*1.7*STD(A,N);`
  2913. };
  2914. return data;
  2915. }
  2916. JSIndexScript.prototype.ZNZ_RPY2 = function()
  2917. {
  2918. let data =
  2919. {
  2920. Name: 'ZNZ_RPY2', Description: '两年相对价位', IsMainIndex: false,
  2921. Script: //脚本
  2922. `A:=REF(HHV(CLOSE,480),1);
  2923. B:=REF(LLV(CLOSE,480),1);
  2924. 100*(CLOSE-B)/(A-B);`
  2925. };
  2926. return data;
  2927. }
  2928. JSIndexScript.prototype.ZNZ_RPY1 = function()
  2929. {
  2930. let data =
  2931. {
  2932. Name: 'ZNZ_RPY1', Description: '年相对价位', IsMainIndex: false,
  2933. Args: [{ Name: 'N', Value: 240 }],
  2934. Script: //脚本
  2935. `A:=REF(HHV(CLOSE,N),1);
  2936. B:=REF(LLV(CLOSE,N),1);
  2937. 100*(CLOSE-B)/(A-B);`
  2938. };
  2939. return data;
  2940. }
  2941. ///////////////////////////////////////////////////////////////////
  2942. //导出
  2943. var JSCommonIndexScript=
  2944. {
  2945. JSIndexScript: JSIndexScript
  2946. };
  2947. export
  2948. {
  2949. JSCommonIndexScript,
  2950. JSIndexScript
  2951. };
  2952. /*
  2953. module.exports =
  2954. {
  2955. JSCommonIndexScript:
  2956. {
  2957. JSIndexScript: JSIndexScript
  2958. },
  2959. JSCommon_JSIndexScript:JSIndexScript,
  2960. };
  2961. */