: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

MultiCharts编程-PowerLanguage概述

MultiCharts编程-PowerLanguage概述

PowerLanguage为MultiCharts交易平台创建技术分析指标和交易策略信号提供了高级的程序编程环境。
PowerLanguage为用户提供了多种复杂功能,同时也为初学者保留了简单的学习方法。
在支持TradeStation的EasyLanguage功能时,PowerLanguage最大程度的兼容了EL的语法。
PowerLanguage程序可以在MultiCharts平台上使用编辑器(PowerLanguage Editor)很容易的创建和修改。

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

一、PowerLanguage语言要素
PowerLanguage是一个可以由计算机执行的,较为系统的、有逻辑的表达金融工具交易规则的系统。
一个深思熟虑的交易策略,正确的在PowerLanguage中表达,将会用一个更大的速度、准确性和持久性来执行,可以程序化的代替人的交易。
在PowerLanguage实施交易策略,要求熟悉基本的规则和结构的语言,下面所列以及关键词描述的关键字部分可作为参考指南。
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

1.PowerLanguage公式和语句
一个完整的PowerLanguage程序叫做一个脚本。一个脚本将是一个策略(一个交易委托事件)、一个指标(一个画在图表上的指标线,来辅助做出交易决定)或一个函数(可以是一个独立的程序或子程序,可以被其他脚本调用)。
PowerLanguage脚本至少要包含一个语句,通常会更多。一个语句是一个完整的陈述式,并以分号(;)结束。下面是一个语句(一行的脚本)的例子:
Buy Next Bar At Open;
语句的执行从左到右,脚本的执行从最开始的行到最底行。
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

2.价格图表
一个数据系列包括一组价格数据点、基于特定周期和日期范围的顺序排列。
最常用的视觉呈现数据系列的方法是一个K线图。基于一组价格数据点的每根K线,是一个连续的最高价和最低价的垂直线,代表一个商品价格根据特定周期变动的范围。K线所基于的第一个价格和最后一个价格,在线上会以开盘价和收盘价标识。
PowerLanguage在背景图上将价格点以K线形式形成。K线可以基于不同的周期。例如,下面的语句将会在下一个K线(或Bar)的开盘价买入委托,如果前一个K线的最高价小于当前K线的收盘价:
If High 1 Bar Ago < Close Then Buy Next Bar At Open;
以上语句中的时间和价格均基于Bar的计算或表达。
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

3.格图表在PowerLanguage公式的执行
一个PowerLanguage脚本在价格图表上每根Bar都执行,并从图上第一根Bar开始。全部的程序脚本在第一根Bar执行后,第二根bar就进入待执行状态,直到图上的最后一根bar执行完毕。公式在当前执行的Bar定义为当前Bar,前面的bar为前一根Bar(1 Bar Ago)。公式向后一根Bar运行时,当前bar就会变成前一根Bar。
图1 对每根bar,公式的全部脚本从最顶端的行执行到最底端

图2 公式的执行是一根bar接着一根,并始于图上(1,2,3,…n)第一根

这里是一个基本概述,可以给出PowerLanguage如何工作的最初始的理解。更详细的一个图表¬¬如何执行程序,可以参看“脚本如何执行”的部分。
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

4.PowerLanguage
PowerLanguage允许含关键字、常数、变量、数学或逻辑运算、表达交易规则的标点符号和条件或无条件下的行为和输出。
从最基本上,有很多工具来实现一个变化的任务,如:Print(“My name is Joe”);
全部的功能方式允许在高级的程序语言实现。
PowerLanguag组件的分类在如下段落阐述:
A.关键字
PL中大部分的关键字都是陈述语句、行为说明。关键字说明了买或卖、画线或删除线、比较或转换。一些关键字也可以返回指定的数值或字符串。关键字列表的详细说明和举例可以从正文中看到。
B.跳跃字
PL中的跳跃字像是语气词,它们什么行为都不会产生,脚本执行时会被忽略,但是它们可以使得PowerLanguage更易读懂。在公式编辑器中跳跃字以红色显示。可从正文跳跃字章节中看到。
C.运算
PL中有四种运算:数学运算、关系运算、逻辑运算和字符运算。
数学运算来完成数学操作,有5种可用的运算:
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

  

运算符

  
  

含义

  
  

+

  
  

加法

  
  

-

  
  

减法

  
  

*

  
  

乘法

  
  

/

  
  

除法

  
  

()

  
  

括号

  

关系运算用来进行比较,有6种:

  

运算符

  
  

含义

  
  

<

  
  

小于

  
  

>

  
  

大于

  
  

<=

  
  

小于或等于

  
  

>=

  
  

大于或等于

  
  

=

  
  

等于

  
  

<>

  
  

不等于

  

逻辑运算用来完成逻辑(布林)操作,有两种可用的:AndOr

字符运算只有一种,即加法(+),用来将多个字符表达式合并成为一个:

String expression one + string expression two

结果将会是:

String expression one and string expressiontwo

D.向前引用Bars

前面bar的值可以用语句 N Bars Ago 来引用,或者在值的后面用中括号括住一个数值表达式作为引用的偏移bar,如当前bar的前面第2bar的最高价,可表述为:

High 2 Bars AgoHigh[2]

E.时间和日期

PL

中的时间值是以

24

小时制的

HHmm

HHmmss

格式,如


1300=1:00PM、130000=1:00:00PM。

在PL中的日期是以YYYMMdd格式,其中YYY表示自1900至今的年份,MM表示月,dd表示日。这种格式又叫EL格式。如2013年1月4日的EL格式为1130104。

F.变量

变量用来存储数值、字符串或逻辑值(true/false)。存在变量中的值可在整个脚本中通过变量名称来引用,并可用在任何时间有脚本改变。变量使用前需要先声明。更多信息,请看关键字Variable

G.数组

数组是多元素的变量,更多信息,请看关键字Array


如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

返回列表