1.原生JS实现一个日期选择器(DatePicker)组件
2.期货软件TB系统源代码解读系列36-R-Breaker系统
3.海龟交易策略的买入买入mc源码
4.请求高手帮忙修改股票上市日期指标源码。 上市日期:FINANCE(42)/100,日期 NODRAW ;
原生JS实现一个日期选择器(DatePicker)组件
前言:
最近在慕课网上看到了一个关于实现日期选择器组件的课程,空闲时间学习了下,源码觉得挺有参考价值的时间。于是买入买入结合自己的理解,用最简单的日期ip核提供源码方式描述了整个实现过程,希望对初学者有所帮助。源码文章中可能会涉及一些拓展知识,时间希望大家不要错过。买入买入
文章知识点:
本文将使用原生HTML/CSS/JavaScript技术,日期完成一个日期选择器组件的源码开发。主要内容包括:datepicker静态结构的时间编写、日历数据的买入买入获取、组件的日期渲染以及事件处理。
实现效果:
一.什么是源码日期选择器(datepicker)?
日期选择器在网站或应用中非常常见,它允许用户快速选择日期。虽然类型多样,但总体上与下图类似:
我们这次的目标就是实现类似的效果,重点在于理解实现思路和方法。
二.组件化开发思想
随着前端技术的发展,组件化开发理念越来越受欢迎。组件化开发不仅限于前端,其他语言或桌面程序等也都有所应用。套图站源码只要涉及到UI开发,组件化思想就不可或缺。一个组件是一个独立的个体,页面可以由多个组件构成,例如按钮、侧边栏等。
更多关于组件化的知识,请参考以下文章:
三.编写页面结构和样式
(一)HTML结构
HTML结构相对简单,分为head和body两部分。需要注意的是,我们给元素取的类名比较长、特殊,这是因为我们采用组件化开发,类名要尽可能独特,避免重名。
此时页面没有样式,但可以大致看出结构:
更多关于表格结构的知识,请参考以下文章:
(二)添加样式
新增style.css文件,主要设置表头和表格样式。补充一个不常用的样式属性:
此时日期选择器的基本结构已完成:
四.日历中的核心数据
所谓核心数据,就是日历中显示每一天的数据,如下所示:
这些数据的娱乐社交app源码作用:
五.需要事先了解的知识点
(一)日期对象——Data
W3C上的部分说明:
具体详情请参考:
这里我们主要使用以下方式进行传值,因为用户选择日期时,实际上是将点击的值传入Date对象,然后获取值:
注意:日期对象有“越界自动进(退)位”的特性。
(二)其他API——getFullYear()/getMonth()/getDate()/getDay()
W3C上的解释:
1.getFullYear()
详情请参考:
2.getMonth()
W3C上的解释:
具体详情请参考:
3.getDate()
W3C上的解释:
详情请参考:
4.getDay()
W3C上的解释:
详情请参考:
(三)日期对象获取天数
这里为什么会单独拿出来说明呢?因为这里有一些令人疑惑的地方:
这里我们可以看到获取当月最后一天时,月份并没有-1,而是默认获取下一个月,然后将天数设置为0。这里就解释了前面所说的“越界自动进(退)位”。
注意:传入的月份范围:0~
为什么会有这样的定义呢?打个比方,我们要获取某年2月份的最后一天,这时候很多人可能会这样写:
这里大家应该已经看出来了,2月份的天数是不固定的,所以传入值时可能会不确定。但是有了上面的规则,我们就可以这样写:
利用“越界自动进(退)位”的特性,让系统自动获取最后一天,这样我们就不必担心了。任何事物存在必有它的道理。
六.编写我们的JavaScript
(一)获取日历数据
我们新建一个data.js文件
index.html页面添加如下代码:
此时我们看一下打印台上打印的内容:
很明显,这里已经打印出了2月份所有的天数。至于为什么会打印这么多天,留给读者思考。甲方看乙方源码
(二)数据渲染
获取到了数据,接下来就是将其渲染到日历中。
新建一个main.js
index.html页面加上:
可以看到我们的数据已经能够正常渲染出来了。值得注意的是,我们在js中进行了渲染,因此index.html中的部分代码可以删除,如下:
注意:我们没有引用第三方插件或库,所以渲染时使用字符串拼接。但实践中通常采用第三方插件或库。更多知识请参考以下文章:
(三)细节修改
我们都知道,很多日期选择器的样式都是一个选择框,点击选择框后才弹出日历。我们还没有实现这个功能,所以现在来修改一下:
此时的index.html变为:
然后修改main.js,动态创建我们的div:
此时页面上多了一个文本框,但页面上已经没有div了。整个包含日历的div元素由js代码创建。
(四)日历的展开收起
我们可以看到,一进入页面,日历就已经存在了。一般情况下,需要点击输入框才显示日历。java项目源码合集我们需要采用定位方式来限定日历位置,因为页面上有其他元素。如果不采用定位,就会影响其他元素。
在style.css中添加一个类来控制显示或隐藏:
此时在main.js的init函数中设置显示或隐藏,并根据输入框位置动态添加top和left值,这样可以适用于多种场景。此时init函数变为:
这样编写之后,我们就能通过点击输入框实现日历的显示或隐藏了,而且也能通过定位方式确定日历位置。
点击之后:
(五)月份切换和日期选择
我们将实现月份切换的逻辑也放在init函数中:
这里需要注意的是:我们的init函数只执行了一次。如果我们直接将事件绑定在btn上,那么事件就只在渲染页面时初始化一次,意味着只绑定了一次。但在渲染之后,我们的按钮会根据html字符串重新渲染,也就是按钮会不断销毁和重建。因此,绑定的事件无法生效。所以我们这里采用将事件绑定在不变的外层元素wrapper上。
这里修改的地方较多,最终的main.js代码如下:
这里改动的地方较多,主要增加日期选择和两个按钮事件,期间将一些逻辑单独提取为方法。由于担心讲解时遗漏,所以直接贴出main.js的最终代码。
四.总结
主要实现步骤:
到这里,日期选择器组件就完成了。总的来说,实现过程较为复杂,但只要细心、肯思考,编写代码后收获肯定不少。另外,在我编写文章时,可能存在遗漏或错误,导致代码出现错误。特别是添加按钮点击事件和添加选择日期功能,这两步改动较多,所以没有一一说明。请不要卡壳,继续往下走,后面你会发现问题所在。此篇文章也是我在观看慕课网视频的过程中自己总结的,深刻理解其中的代码逻辑等。
源代码请参考以下链接:
期货软件TB系统源代码解读系列-R-Breaker系统
R-Breaker系统是一种基于昨日价格的交易参考工具,它简化了Pivot Points,仅去除了一个枢轴点,交易策略基础是突破上界做多,下界做空。若做多后回撤至次上界,认为是假突破,应反手操作。以下是系统的核心代码和部分解释:参数设置:如notbef(9.)代表时间需大于0.,Notaft(.)表示时间需小于0.,其余参数如f1、f2、f3、reverse、rangemin和xdiv等用于计算关键价位。
变量声明:包括数值序列变量如ssetup、bsetup等,用于存储计算结果,以及布尔型变量rfilter,用于过滤操作。
代码执行逻辑:根据日期变化,计算当日开盘价的倍数作为参考区间。在特定时间范围内,如9点到2点分,根据市场波动判断是否突破区间进行买卖操作,同时考虑持仓状态和个人设置的条件。
警告:作者并未实际在实盘或超级图表上测试过此系统,认为在使用前需要根据个人市场分析和策略调整优化。
总的来说,R-Breaker系统是一个动态计算买卖点的工具,需要交易者根据市场状况灵活运用,并可能需要结合其他指标或个人判断进行调整。海龟交易策略的mc源码
以下是海龟交易策略的MC源码内容简化版:
初始化参数:初始余额(),损失阈值(2),赢利阈值(4)
创建变量:交易次数(N),止损点(StopLoss),交易价值(DV),账户余额(AccountBalance),系统状态(system),资金风险(DollarRisk),平均权益价格(AvgEtyPrice),交易触发时间(LTT),交易跟踪器(Tracker),上次交易状态(LastTrade),累计盈利(myprofit),最高买入价(HBP),最低买入价(LBP),交易日数(Ndays)
初始化价格变量:历史最高价(L-L)、历史最低价(S-S)
天突破策略:如果当前无交易位置(市场位置=0),计算平均真实波动幅度(N),交易价值(DV),账户余额(AccountBalance),资金风险(DollarRisk),交易触发点(LTT),止损点(StopLoss),并初始化最高买入价(HBP)和最低买入价(LBP)。如果上次交易状态未记录,则进行买入和卖出操作,同时记录历史最高价和最低价。系统状态设置为1。
天突破策略:如果当前无交易位置(市场位置=0),且上次交易状态为卖出,计算并执行与天突破策略相似的操作,但使用天的数据,同时系统状态设置为2。
系统跟踪:如果当前状态为跟踪(Tracker=1/-1),并在价格突破止损或赢利点时改变交易状态。
加仓逻辑:根据当前交易状态和持仓数量执行加仓操作,同时设置止损点。
退出策略:在交易达到指定时间(天或天)后,根据当前市场位置执行卖出或买进平仓操作。
输出报告:打印交易日期、时间、连续赢利次数、连续亏损次数和最大回撤。
请注意,上述描述是简化版本,源代码中包含具体的函数调用和逻辑判断。在实际应用中,需要根据特定的交易环境和市场数据进行调整。
请求高手帮忙修改股票上市日期指标源码。 上市日期:FINANCE()/, NODRAW ;
上市日期:=CONST(DAYTODATE((DATETODAY(DATE)-FINANCE())))+,NODRAW;
DRAWTEXT_FIX(1,0,0,0,'上市日期:'),COLORYELLOW;
DRAWNUMBER_FIX(1,0.,0,0,上市日期),COLORYELLOW;