四均线交易系统

  • 名词术语
    • 期货
    • 头寸:承诺买卖合约的最初部位
      • 多头:买进合约者
      • 空头:卖出合约者
    • 均线多头排列:看涨
    • 均线空头排列:看跌
    • K线图(蜡烛图)
    • Bar
    • 入场
      • 多头入场
      • 空头入场
    • 出场
      • 多头出场
      • 空头出场
  • TB公式
    • 用户函数
      • CallAuctionFilter()
      • Text()
    • 交易函数
      • Buy, SellShort, BuyToCover, Sell
        • 多头
        • 空头
        • 语法格式
        • 参数说明
      • MarketPosition
    • 关键字
      • Bar数据系统函数
      • Marketposion
    • 颜色
    • 数据输出和交易指令
    • 其他
  • 四均线交易系统
    • 策略说明
    • 优势
    • 劣势
    • 场景
    • 改进策略
      • 四均线交易系统(多头)动态仓(代码及注释详见附录)
      • 四均线交易系统(多头)动态跟踪(代码及注释详见附录)
  • 源代码
    • 四均线交易系统 多
    • 四均线交易系统 空
    • 新代码
      • 四均线交易系统(多头)_动态仓
      • 四均线交易系统(多头)_动态跟踪

名词术语

期货

什么是期货?-- 傅建朝

头寸:承诺买卖合约的最初部位

头寸(position)是一个金融术语,指的是个人或实体持有或拥有的特定商品、证券、货币等的数量。汉语将其翻译为“头寸”,源于旧社会作为货币的“袁大头”每十个摞起来为一寸 。

多头:买进合约者

头寸是一种市场约定,承诺买卖合约的最初部位,买进合约者是多头,处于盼涨部位。

空头:卖出合约者

头寸是一种市场约定,承诺买卖合约的最初部位,卖出合约者为空头,处于盼跌部位。

均线多头排列:看涨


特征1:短期移动平均线在上,中期移动平均线在中,长期移动平均线在下。
特征2:多个移动平均线一起上移,这就是典型的均线多头排列。

总结:
多头排列代表多方(买方)力量强大,后市将由多方主导行情,此时是中线进场的机会。这是一个比较常见的上涨信号,此时应该以持股为主,不要轻易卖出。

均线空头排列:看跌


特征1:长期移动平均线在上方,中期移动平均数在中间,短期移动平均值在下。
特征2:多个移动平均线同时呈弧形下降,这种就是典型的均线空头排列。

总结:
当大盘(单个股票)的均价走低时,意味着大盘(单个股票)已经进入了下跌周期,这时大盘(单个股票)的走势趋弱。特别是当大盘(单个股票)之前刚有过相对大幅度的上涨时,均线空头排列,表明大盘(单个股票)很大可能有大幅度的下跌。这个时候应该果断卖出手中的股票,止损离场,持币观望。

K线图(蜡烛图)

股市及期货市场中的K线图的画法包含四个数据,即开盘价、最高价、最低价、收盘价,所有的k线都是围绕这四个数据展开,反映大势的状况和价格信息。

Bar

Bar代表K线图(蜡烛图)的每根条子。

入场

多头入场

多头主力大量买入股票的行为

空头入场

空头主力大量卖出股票的行为

出场

多头出场

多头主力清头寸

空头出场

空头主力清头寸

TB公式

用户函数

CallAuctionFilter()

// 简称: CallAuctionFilter
// 名称: 集合竞价与小节过滤函数
// 输出: 布尔型
// 说明:此函数可以处理1分钟、3分钟、5分钟、15分钟、30分钟、1小时、日线、周线、月线交易的集合竞价与小节过滤,避免发出废单。

Text()

将变量转换为字符串格式(String)

交易函数

Buy, SellShort, BuyToCover, Sell

多头

Buy:对当前合约发出买入开仓的指令,如果图标讯号显示当前持有空仓,则会先平掉空仓,再开多仓;
Sell:对当前合约发出平多仓的指令,当图表讯号显示有多头持仓时,方可执行此指令。

空头

SellShort:对当前合约发出卖出开仓的指令,如果图表讯号显示当前持有多仓,则会先平掉多仓, 再开空仓;
BuyToCover:对当前合约发出平空仓的指令,当图表讯号显示有空头持仓时,方可执行此指令;

语法格式

Bool Buy(Numeric Share=0,Numeric Price=0)
Bool BuyToCover(Numeric Share=0,Numeric Price=0)
Bool Sell(Numeric Share=0,Numeric Price=0)
Bool SellShort(Numeric Share=0,Numeric Price=0)

参数说明

Share:数量,为整型值,默认值为0表示使用系统设置参数;
Price:价格,为浮点数,默认值为0表示使用现价(非最后Bar为Close) 。

MarketPosition

获得当前持仓状态。
-1:当前位置为持空仓;
0:当前位置为持平;
1:当前位置为持多仓。

关键字

Bar数据系统函数


Marketposion

是指当前账户的持仓状态
初始持仓状态:marketposition=0
多头持仓状态:marketposition=1
空头持仓状态:marketposition=-1

颜色

  1. 黑色——用户自己声明的变量名或者参数名
  2. 红色——数字
  3. 蓝色——系统函数
  4. 暗红色——已有的用户函数
  5. 紫红色——运算符号
  6. 果绿色——字符串(可以为中文字符)
  7. 翠绿色——注释语句(注释符号后可为中文字符)

数据输出和交易指令

其他

序列变量可以通过"[nOffset]"来回溯以前的变量值。
全局变量设置值:SetGlobalVar(<索引值>,<值>);
全局变量读取值:GetGlobalVar(<索引值>);
单个公式应用中,全局变量索引仅支持0到499共500个全局变量。

四均线交易系统

策略说明

该系统由两个双均线系统构成,可以看做是双均线系统的升级版。构建思想是捕捉大周期顺势入场、小周期出场的趋势行情。

多头入场条件为两组均线均成多头排列时且当前价高于上根BAR最高价,并且当前Bar有一定成交量时,多头入场;出场条件为小周期多头均线组合成空头排列出场或两组均线分别空头排列且低于上根BAR最低价出场。

空头入场条件为两组均线均成空头排列且当前价低于上根Bar最低价,并且当前Bar有一定成交量时,空头入场;出场条件为小周期空头均线组合成多头排列出场或两组均线分别多头排列且高于上根BAR最高价出场。

(PS: 多头排列, 短期移动平均线在上,长期移动平均线在下,并同时上移;空头排列, 短期移动平均值在下方,长期移动平均线在上方,并同时呈弧形下降)

优势

  1. 具有正向收益预期,可以让人跟踪趋势,均线系统直观清晰;
  2. 可以配合K线(蜡烛线)使用,可以跟踪趋势作为判断做多和做空的依据
  3. 通过大小周期的双均线系统的配合,进一步强化趋势走向的判断。

劣势

  1. 价格走势多数情况下不确定,趋势性行情极少出现,因此在“震荡”型行情中胜率偏低;
  2. 并且均线以过去行情走势为依据,预测行情不够细粒度,因此在不定的市场中,很可能出现盈利回吐等情况;
  3. 当行情经历回撤,尤其是大幅度回撤时,四均线交易系统只有在收盘价走出来,才可能出现明显的转折走势,此时利润可能已经大量回吐或者亏损幅度已经偏大;
  4. 缺乏及时能力。

场景

适合:趋势型行情
不适合:震荡型行情

改进策略

四均线交易系统(多头)动态仓(代码及注释详见附录)

在四均线交易系统(多头)的基础上,在首次开仓之后,设置固定盈利30跳加仓一次,每次1手,最多加仓3次;加仓后固定亏损30跳后减仓1手。

四均线交易系统(多头)动态跟踪(代码及注释详见附录)

在四均线交易系统(多头)动态仓的基础上,进行跟踪止损,当盈利达到50跳后启动第一级跟踪止损,此时回撤30跳即进行止损减仓;当盈利达到80跳之后启动第二级跟踪止损,此时回撤20跳即进行止损减仓。并设定初始止损回撤跳数为50.

源代码

四均线交易系统 多

//------------------------------------------------------------------------
// 简称: A_FourSetofMACrossoverSys_L
// 名称: 四均线交易系统
// 类别: 公式应用
// 类型: 用户应用
// 输出:
// 策略说明:
//              基于4均线系统进行判断交易
//
// 系统要素:
//              (5和20周期均线),(3和10周期均线)构成的两组不同周期的均线组合
//
// 入场条件:
//              当2组均线均成多头排列时且当前价高于上根BAR最高价入场
//
// 出场条件:
//              1 小周期多头均线组合成空头排列
//              2 两组空头均线分别空头排列且低于上根BAR最低价出场
//
//------------------------------------------------------------------//
ParamsNumeric LEFast(5);    //多头入场短均线周期参数Numeric LESlow(20);    //多头入场长均线周期参数Numeric LXFast(3);     //多头出场短均线周期参数Numeric LXSlow(10);    //多头出场长均线周期参数Numeric SEFast(5);     //空头入场短均线周期参数Numeric SESlow(20);    //空头入场长均线周期参数Numeric SXFast(3);     //空头出场短均线周期参数Numeric SXSlow(10);    //空头出场长均线周期参数
VarsNumericSeries MALEFast;//多头入场短均线NumericSeries MALESlow;//多头入场长均线NumericSeries MALXFast;//多头出场短均线NumericSeries MALXSlow;//多头出场长均线NumericSeries MASEFast;//空头入场短均线NumericSeries MASESlow;//空头入场长均线NumericSeries MASXFast;//空头出场短均线NumericSeries MASXSlow;//空头出场长均线
Begin// 集合竞价和小节休息过滤// CallAuctionFilter是返回值为bool型的用户函数// 处理1分钟、3分钟、5分钟、15分钟、30分钟、1小时、日线、周线、月线交易的集合竞价与小节过滤,避免发出废单If(!CallAuctionFilter()) Return;MALEFast=Average(Close,LEFast);//多头入场短均线MALESlow=Average(Close,LESlow);//多头入场长均线MALXFast=Average(Close,LXFast);//多头出场短均线MALXSlow=Average(Close,LXSlow);//多头出场长均线MASEFast=Average(Close,SEFast);//空头入场短均线MASESlow=Average(Close,SESlow);//空头入场长均线MASXFast=Average(Close,SXFast);//空头出场短均线MASXSlow=Average(Close,SXSlow);//空头出场长均线// 多头入场的条件设置If(Marketposition <> 1 and Currentbar >= 100)  // 当前位置没有持多仓,并且当前Bar索引值大于等于100{// 两组均线均成多头排列时且当前价高于上根BAR最高价,并且当前Bar有一定成交量时,多头入场// 多头排列:短期移动平均线在上,长期移动平均线在下,并同时上移If(MALEFast[1] > MALESlow[1] and MALXFast[1] > MALXSlow[1] and High >= High[1] And Vol > 0){// 对当前合约发出买入开仓的指令,如果图标讯号显示当前持有空仓,则会先平掉空仓,再开多仓;// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// Max(Open,High[1])表示选择(当前Bar的开盘价,前一Bar的最高价)的较大值进行开多仓操作Buy(0,Max(Open,High[1]));}}// 多头出场的条件设置If(marketposition == 1 and BarsSinceEntry > 0 And Vol > 0)  // 当前位置为持多仓,当前持仓的第一个建仓位置到当前位置的Bar计数不为0(即当前Bar开多仓时下一Bar之后才可平多仓),当前Bar有一定成交量{// 小周期多头均线组合成空头排列出场// 空头排列:短期移动平均值在下方,长期移动平均线在上方,并同时呈弧形下降If(MALXFast[1] < MALXSlow[1] )                          {// 对当前合约发出平多仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// 采用当前Bar的开盘价进行平多仓操作Sell(0,Open);}// 两组均线分别空头排列且低于上根BAR最低价出场Else If( MASEFast[1] < MASESlow[1] and MASXFast[1] < MASXSlow[1] and Low <= Low[1])  {// 对当前合约发出平多仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// Min(Open,Low[1])表示选择(当前Bar的开盘价,前一Bar的最低价)的较小值进行开多仓操作Sell(0,Min(Open,Low[1]));}}End   //------------------------------------------------------------------------
// 编译版本 GS2015.12.25
// 用户版本 2019/12/26 16:15:09
// 版权所有 user_wap
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
//          每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

四均线交易系统 空

//------------------------------------------------------------------------
// 简称: A_FourSetofMACrossoverSys_S
// 名称: 四均线交易系统
// 类别: 公式应用
// 类型: 用户应用
// 输出:
// 策略说明:
//              基于4均线系统进行判断交易
//
// 系统要素:
//              (5和20周期均线),(3和10周期均线)构成的两组不同周期的均线组合
//
// 入场条件:
//              当2组均线均成空头排列时且当前价低于上根BAR最低价入场
//
// 出场条件:
//              1 小周期空头均线组合成多头排列
//              2 两组多头均线分别多头排列且低于上根BAR最高价出场
//
//----------------------------------------------------------------------//
ParamsNumeric LEFast(5);    //多头入场短均线周期参数Numeric LESlow(20);    //多头入场长均线周期参数 Numeric LXFast(3);    //多头出场短均线周期参数Numeric LXSlow(10); //多头出场长均线周期参数Numeric SEFast(5);    //空头入场短均线周期参数Numeric SESlow(20);    //空头入场长均线周期参数Numeric SXFast(3); //空头出场短均线周期参数Numeric SXSlow(10);    //空头出场长均线周期参数
VarsNumericSeries MALEFast;//多头入场短均线NumericSeries MALESlow;//多头入场长均线NumericSeries MALXFast;//多头出场短均线NumericSeries MALXSlow;//多头出场长均线NumericSeries MASEFast;//空头入场短均线NumericSeries MASESlow;//空头入场长均线NumericSeries MASXFast;//空头出场短均线NumericSeries MASXSlow;//空头出场长均线
Begin// 集合竞价和小节休息过滤// CallAuctionFilter是返回值为bool型的用户函数// 处理1分钟、3分钟、5分钟、15分钟、30分钟、1小时、日线、周线、月线交易的集合竞价与小节过滤,避免发出废单If(!CallAuctionFilter()) Return;MALEFast=Average(Close,LEFast);//多头入场短均线MALESlow=Average(Close,LESlow);//多头入场长均线MALXFast=Average(Close,LXFast);//多头出场短均线MALXSlow=Average(Close,LXSlow);//多头出场长均线MASEFast=Average(Close,SEFast);//空头入场短均线MASESlow=Average(Close,SESlow);//空头入场长均线MASXFast=Average(Close,SXFast);//空头出场短均线MASXSlow=Average(Close,SXSlow);//空头出场长均线// 空头入场的条件设置If(Marketposition <> -1 and Currentbar >= 100) // 当前位置没有持空仓,并且当前Bar索引值大于等于100{   // 两组空头均线均成空头排列且当前价低于上根Bar最低价,并且当前Bar有一定成交量时,空头入场// 空头排列:短期移动平均值在下方,长期移动平均线在上方,并同时呈弧形下降If(MASEFast[1] < MASESlow[1] and MASXFast[1] < MASXSlow[1]  and Low <= Low[1] And Vol > 0){// 对当前合约发出卖出开仓的指令,如果图表讯号显示当前持有多仓,则会先平掉多仓, 再开空仓// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// Min(Open,Low[1])表示选择(当前Bar的开盘价,前一Bar的最低价)的较小值进行开空仓操作SellShort(0,Min(Open,Low[1]));}}// 空头出场的条件设置If(MarketPosition == -1 and BarsSinceEntry > 0 And Vol > 0) // 当前位置为持空仓,当前持仓的第一个建仓位置到当前位置的Bar计数不为0(即当前Bar开空仓时下一Bar之后才可平空仓),当前Bar有一定成交量{// 小周期空头均线组合成多头排列出场// 多头排列:短期移动平均线在上,长期移动平均线在下,并同时上移If(MASXFast[1] > MASXSlow[1])                            { // 对当前合约发出平空仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// 采用当前Bar的开盘价进行平空仓操作BuyToCover(0,Open);     }// 两组均线分别多头排列且高于上根BAR最高价出场Else if( MALEFast[1] > MALESlow[1] and MALXFast[1] > MALXSlow[1] and High >= High[1] ) {// 对当前合约发出平空仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// Max(Open,High[1])表示选择(当前Bar的开盘价,前一Bar的最高价)的较大值进行平空仓操作BuyToCover(0,Max(Open,High[1]));}}
End //------------------------------------------------------------------------
// 编译版本 GS2015.12.25
// 用户版本 2019/12/26 16:19:52
// 版权所有 user_wap
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
//          每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

新代码

四均线交易系统(多头)_动态仓

//------------------------------------------------------------------------
// 简称: A_NewFourSetofMACrossoverSys_L
// 名称: 四均线交易系统(多头)_动态仓
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
ParamsNumeric LEFast(5);    //多头入场短均线周期参数Numeric LESlow(20);    //多头入场长均线周期参数Numeric LXFast(3);     //多头出场短均线周期参数Numeric LXSlow(10);    //多头出场长均线周期参数Numeric SEFast(5);     //空头入场短均线周期参数Numeric SESlow(20);    //空头入场长均线周期参数Numeric SXFast(3);     //空头出场短均线周期参数Numeric SXSlow(10);    //空头出场长均线周期参数
VarsNumericSeries MALEFast;//多头入场短均线NumericSeries MALESlow;//多头入场长均线NumericSeries MALXFast;//多头出场短均线NumericSeries MALXSlow;//多头出场长均线NumericSeries MASEFast;//空头入场短均线NumericSeries MASESlow;//空头入场长均线NumericSeries MASXFast;//空头出场短均线NumericSeries MASXSlow;//空头出场长均线Numeric MinPoint;      // 一个最小变动单位,也就是一跳NumericSeries firstPrice; // 第一次开仓价格NumericSeries LastPrice;  // 最后一次开仓价格Numeric AddSet(30);    // 加仓设置固定系数30Numeric SubSet(30);    // 减仓设置固定系数30
Begin// 集合竞价和小节休息过滤// CallAuctionFilter是返回值为bool型的用户函数// 处理1分钟、3分钟、5分钟、15分钟、30分钟、1小时、日线、周线、月线交易的集合竞价与小节过滤,避免发出废单If(!CallAuctionFilter()) Return;MALEFast=Average(Close,LEFast);//多头入场短均线MALESlow=Average(Close,LESlow);//多头入场长均线MALXFast=Average(Close,LXFast);//多头出场短均线MALXSlow=Average(Close,LXSlow);//多头出场长均线MASEFast=Average(Close,SEFast);//空头入场短均线MASESlow=Average(Close,SESlow);//空头入场长均线MASXFast=Average(Close,SXFast);//空头出场短均线MASXSlow=Average(Close,SXSlow);//空头出场长均线MinPoint = MinMove*PriceScale; //最小变动价位If(MarketPosition==0)  // 空仓时{If(Currentbar >= 100)  // 当前Bar索引值大于等于100{// 两组均线均成多头排列时且当前价高于上根BAR最高价,并且当前Bar有一定成交量时,多头入场// 多头排列:短期移动平均线在上,长期移动平均线在下,并同时上移If(MALEFast[1] > MALESlow[1] and MALXFast[1] > MALXSlow[1] and High >= High[1] And Vol > 0){firstPrice = Open;//第一次开仓价格LastPrice = firstPrice;//最后一次开仓价先赋值为开仓价Buy(0,firstPrice);//以第一次开仓价买入}}}else If(MarketPosition==1) // 多仓时,加减仓的具体操作{If(BarsSinceEntry > 0 And Vol > 0)  // 当前持仓的第一个建仓位置到当前位置的Bar计数不为0(即当前Bar开多仓时下一Bar之后才可平多仓),当前Bar有一定成交量{// 小周期多头均线组合成空头排列出场// 空头排列:短期移动平均值在下方,长期移动平均线在上方,并同时呈弧形下降If(MALXFast[1] < MALXSlow[1] )                          {// 对当前合约发出平多仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// 采用当前Bar的开盘价进行平多仓操作Sell(0,Open);}// 两组均线分别空头排列且低于上根BAR最低价出场Else If( MASEFast[1] < MASESlow[1] and MASXFast[1] < MASXSlow[1] and Low <= Low[1])  {// 对当前合约发出平多仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// Min(Open,Low[1])表示选择(当前Bar的开盘价,前一Bar的最低价)的较小值进行开多仓操作Sell(0,Min(Open,Low[1]));}}While(CurrentEntries < 4 && High >= LastPrice + AddSet*MinPoint) // 加仓操作,当持仓的建仓次数小于4次,并且最高价 大于等于 (最后一次开仓 + 固定系数30乘以最小跳动价格){LastPrice = LastPrice + AddSet*MinPoint;// 循环累加,符合条件的累次加仓直到不符合条件if(Open > LastPrice) // 开盘价大于最后一次开仓价LastPrice = Open;// 把开盘价赋予给最后一次开仓价Buy(1,LastPrice);// 以最后一次开仓价,加仓一手}While(CurrentEntries > 0 && Low <= firstPrice - SubSet*MinPoint) // 减仓操作,当持仓的建仓次数大于0,并且最低价 小于 (第一次开仓价 - 固定系数30乘以最小跳动价格){firstPrice = firstPrice - SubSet*MinPoint;//循环累减,符合条件的依次减,直到没有持仓if(Open < firstPrice) // 开盘价小于第一次开仓价firstPrice = Open;// 把开盘价赋值给第一次开仓价Sell(1,firstPrice);// 以第一次开仓价,平掉一手}}
End//------------------------------------------------------------------------
// 编译版本 GS2015.12.25
// 用户版本 2019/12/27 20:21:21
// 版权所有 user_wap
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
//          每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

四均线交易系统(多头)_动态跟踪

//------------------------------------------------------------------------
// 简称: A_New_FourSetofMACrossoverSys_L
// 名称: 四均线交易系统(多头)_动态跟踪
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
ParamsNumeric LEFast(5);    //多头入场短均线周期参数Numeric LESlow(20);    //多头入场长均线周期参数Numeric LXFast(3);     //多头出场短均线周期参数Numeric LXSlow(10);    //多头出场长均线周期参数Numeric SEFast(5);     //空头入场短均线周期参数Numeric SESlow(20);    //空头入场长均线周期参数Numeric SXFast(3);     //空头出场短均线周期参数Numeric SXSlow(10);    //空头出场长均线周期参数
VarsNumericSeries MALEFast;//多头入场短均线NumericSeries MALESlow;//多头入场长均线NumericSeries MALXFast;//多头出场短均线NumericSeries MALXSlow;//多头出场长均线NumericSeries MASEFast;//空头入场短均线NumericSeries MASESlow;//空头入场长均线NumericSeries MASXFast;//空头出场短均线NumericSeries MASXSlow;//空头出场长均线Numeric MinPoint;      // 一个最小变动单位,也就是一跳NumericSeries firstPrice; // 第一次开仓价格NumericSeries LastPrice;  // 最后一次开仓价格Numeric AddSet(30);    // 加仓设置固定系数30Numeric SubSet(30);    // 减仓设置固定系数30Numeric MyEntryPrice;       // 开仓价格,本例是开仓均价,可设置为某次入场价Numeric TrailingStart1(50); // 跟踪止损启动设置1,固定系数为50Numeric TrailingStart2(80); // 跟踪止损启动设置2,固定系数为80Numeric TrailingStop1(30);  // 跟踪止损设置1,固定系数为30Numeric TrailingStop2(20);  // 跟踪止损设置2,固定系数为20Numeric StopLossSet(50);    // 止损设置,固定系数为50Numeric MyExitPrice;        // 平仓价格NumericSeries HighestAfterEntry;  // 开仓后出现的最高价NumericSeries LowestAfterEntry;   // 开仓后出现的最低价
Begin// 集合竞价和小节休息过滤// CallAuctionFilter是返回值为bool型的用户函数// 处理1分钟、3分钟、5分钟、15分钟、30分钟、1小时、日线、周线、月线交易的集合竞价与小节过滤,避免发出废单If(!CallAuctionFilter()) Return;MALEFast=Average(Close,LEFast);//多头入场短均线MALESlow=Average(Close,LESlow);//多头入场长均线MALXFast=Average(Close,LXFast);//多头出场短均线MALXSlow=Average(Close,LXSlow);//多头出场长均线MASEFast=Average(Close,SEFast);//空头入场短均线MASESlow=Average(Close,SESlow);//空头入场长均线MASXFast=Average(Close,SXFast);//空头出场短均线MASXSlow=Average(Close,SXSlow);//空头出场长均线MinPoint = MinMove*PriceScale; //最小变动价位If(MarketPosition==0)  // 空仓时{If(Currentbar >= 100)  // 当前Bar索引值大于等于100{// 两组均线均成多头排列时且当前价高于上根BAR最高价,并且当前Bar有一定成交量时,多头入场// 多头排列:短期移动平均线在上,长期移动平均线在下,并同时上移If(MALEFast[1] > MALESlow[1] and MALXFast[1] > MALXSlow[1] and High >= High[1] And Vol > 0){firstPrice = Open;//第一次开仓的价格,就是以开盘价来开了。//LastPrice = firstPrice;//刚开始的最后一次开仓价先赋值为开仓价。//Buy(0,firstPrice);//以第一次开仓价买2手,方便加减操作的,当然实盘多少都是随个人的习惯。//}}}else If(MarketPosition==1) // 多仓时,加减仓的具体操作{If(BarsSinceEntry > 0 And Vol > 0)  // 当前持仓的第一个建仓位置到当前位置的Bar计数不为0(即当前Bar开多仓时下一Bar之后才可平多仓),当前Bar有一定成交量{// 小周期多头均线组合成空头排列出场// 空头排列:短期移动平均值在下方,长期移动平均线在上方,并同时呈弧形下降If(MALXFast[1] < MALXSlow[1] )                          {// 对当前合约发出平多仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// 采用当前Bar的开盘价进行平多仓操作Sell(0,Open);}// 两组均线分别空头排列且低于上根BAR最低价出场Else If( MASEFast[1] < MASESlow[1] and MASXFast[1] < MASXSlow[1] and Low <= Low[1])  {// 对当前合约发出平多仓的指令// 默认值为0表示使用系统设置参数,通过全局交易设置,修改默认交易数量// Min(Open,Low[1])表示选择(当前Bar的开盘价,前一Bar的最低价)的较小值进行开多仓操作Sell(0,Min(Open,Low[1]));}}While(CurrentEntries < 4 && High >= LastPrice + AddSet*MinPoint) // 加仓操作,当持仓的建仓次数小于4次,并且最高价 大于等于 (最后一次开仓 + 固定系数30乘以最小跳动价格){LastPrice = LastPrice + AddSet*MinPoint;// 循环累加,符合条件的累次加仓直到不符合条件if(Open > LastPrice) // 开盘价大于最后一次开仓价LastPrice = Open;// 把开盘价赋予给最后一次开仓价Buy(1,LastPrice);// 以最后一次开仓价,加仓一手}While(CurrentEntries > 0 && Low <= firstPrice - SubSet*MinPoint) // 减仓操作,当持仓的建仓次数大于0,并且最低价 小于 (第一次开仓价 - 固定系数30乘以最小跳动价格){firstPrice = firstPrice - SubSet*MinPoint;//循环累减,符合条件的依次减,直到没有持仓if(Open < firstPrice) // 开盘价小于第一次开仓价firstPrice = Open;// 把开盘价赋值给第一次开仓价Sell(1,firstPrice);// 以第一次开仓价,平掉一手}}If(BarsSinceentry == 0)    // 获得当前持仓的第一个建仓位置到当前位置的Bar计数,条件满足:开仓Bar{HighestAfterEntry = Close;// 开仓后的最高价为收盘价。//LowestAfterEntry = Close; // 开仓后的最低价为收盘价。//If(MarketPosition <> 0)// 有持仓时执行以下代码{// 开仓Bar,将开仓价和当时的收盘价的较大值保留到HighestAfterEntryHighestAfterEntry = Max(HighestAfterEntry,AvgEntryPrice);// 开仓Bar,将开仓价和当时的收盘价的较小值保留到LowestAfterEntryLowestAfterEntry = Min(LowestAfterEntry,AvgEntryPrice);  }}else //非开仓Bar时进行以下运算{// 记录下当前Bar的最高点,用于下一个Bar的跟踪止损判断HighestAfterEntry = Max(HighestAfterEntry,High); // 记录下当前Bar的最低点,用于下一个Bar的跟踪止损判断LowestAfterEntry = Min(LowestAfterEntry,Low);}Commentary("HighestAfterEntry="+Text(HighestAfterEntry));//在超级图表当前Bar添加一行注释信息,显示最高价HighestAfterEntryCommentary("LowestAfterEntry="+Text(LowestAfterEntry));  //在超级图表当前Bar添加一行注释信息,显示最低价LowestAfterEntryMinPoint = MinMove*PriceScale;// 最小跳动价公式MyEntryPrice = AvgEntryPrice; // 把开仓均价赋值给MyEntryPriceIf(MarketPosition==1 And BarsSinceEntry>=1) // 有多仓的情况{// 第二级跟踪止损的条件表达式If(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart2*MinPoint) // 假如最高价 大于等于 (开仓均价 + 跟踪止损启动设置2 * 最小跳动价){If(Low <= HighestAfterEntry[1] - TrailingStop2*MinPoint)// 假如当前Bar最低价 小于等于 (最高价 - 跟踪止损设置2 * 最小跳动价){MyExitPrice = HighestAfterEntry[1] - TrailingStop2*MinPoint;// 平仓价 等于 (最高价 - 跟踪止损设置2 * 最小跳动价)If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价即跳空触发,则用开盘价代替Sell(0,MyExitPrice); // 以计算得的平仓价,平仓}}else if(HighestAfterEntry[1] >= MyEntryPrice + TrailingStart1*MinPoint)// 第一级跟踪止损的条件表达式{If(Low <= HighestAfterEntry[1] - TrailingStop1*MinPoint)// 假如当前Bar最低价 小于等于 (最高价 - 跟踪止损设置1 * 最小跳动价){MyExitPrice = HighestAfterEntry[1] - TrailingStop1*MinPoint;// 平仓价 等于 (最高价 - 跟踪止损设置1 * 最小跳动价)If(Open < MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价即跳空触发,则用开盘价代替Sell(0,MyExitPrice);// 以计算得的平仓价,平仓}}else if(Low <= MyEntryPrice - StopLossSet*MinPoint) //初始的固定止损处理,即为当前Bar最低价 小于等于 (开仓均价 - 固定止损系数 * 最小跳动价){MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;// 平仓价 等于 (开仓价 - 止损系数 * 最小跳动价)If(Open < MyExitPrice) MyExitPrice = Open;  // 如果该Bar开盘价即跳空触发,则用开盘价代替Sell(0,MyExitPrice);// 以计算得的平仓价,平仓}}else if(MarketPosition==-1 And BarsSinceEntry>=1) // 有空仓的情况。代码都差不多,但就是意思反过来了。//{// 第二级跟踪止损的条件表达式If(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart2*MinPoint) // 假如最低价 小于等于 (开仓均价 - 跟踪止损启动设置2 * 最小跳动价){If(High >= LowestAfterEntry[1] + TrailingStop2*MinPoint)// 假如当前Bar最高价 大于等于 (最低价 + 跟踪止损设置2 * 最小跳动价){MyExitPrice = LowestAfterEntry[1] + TrailingStop2*MinPoint;// 平仓价 等于 (最低价 + 跟踪止损设置2 * 最小跳动价)If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价即跳空触发,则用开盘价代替BuyToCover(0,MyExitPrice);// 以计算得的平仓价,平仓}}else if(LowestAfterEntry[1] <= MyEntryPrice - TrailingStart1*MinPoint)// 第一级跟踪止损的条件表达式{If(High >= LowestAfterEntry[1] + TrailingStop1*MinPoint)// 假如当前Bar最高价 大于等于 (最低价 + 跟踪止损设置1 * 最小跳动价){MyExitPrice = LowestAfterEntry[1] + TrailingStop1*MinPoint;// 平仓价 等于 (最低价 + 跟踪止损设置1 * 最小跳动价)If(Open > MyExitPrice) MyExitPrice = Open; // 如果该Bar开盘价即跳空触发,则用开盘价代替BuyToCover(0,MyExitPrice);// 以计算得的平仓价,平仓}}else If(High >= MyEntryPrice + StopLossSet*MinPoint)//初始的固定止损处理,即为当前Bar最高价 大于等于 (开仓均价 + 固定止损系数 * 最小跳动价){MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;// 平仓价 等于 (开仓价 + 止损系数 * 最小跳动价)If(Open > MyExitPrice) MyExitPrice = Open;  // 如果该Bar开盘价即跳空触发,则用开盘价代替BuyToCover(0,MyExitPrice);// 以计算得的平仓价,平仓}}
End//------------------------------------------------------------------------
// 编译版本 GS2015.12.25
// 用户版本 2019/12/27 21:21:21
// 版权所有 user_wap
// 更改声明 TradeBlazer Software保留对TradeBlazer平台
//          每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------

四均线交易系统(Four Set of MA Crossover System)相关推荐

  1. 写一个双均线交易系统

    写一个双均线交易系统需要完成以下步骤: 数据获取:从金融市场获取股票价格数据. 数据预处理:对获取的数据进行清理.格式化等处理. 计算均线:使用算术平均数等方法计算出短期均线和长期均线. 生成交易信号 ...

  2. 金融类自定义View(四)--股票蜡烛图以及MA、BOLL指标

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 金融类自定义View(四)–股票蜡烛图(包含MA.BOLL指标)以及代码重构 前言 本文只描述蜡烛图单独的绘制逻辑,至于和分时图相 ...

  3. MQL4:双均线交易系统

    2019独角兽企业重金招聘Python工程师标准>>> 一.交易策略 入场原则: 做多入场:30分钟图上10周期EMA向上交叉20周期EMA 做空入场:30分钟图上10周期EMA向下 ...

  4. 卡夫曼自适应移动均线交易系统

    传统的移动均线包括简单移动均线,加权移动均线以及指数式移动均线,它们有着固有的弱点--慢趋势和滞后. 短周期的均线系统虽然能快速反映期货价格的走势,但是又难以抵抗价格"噪音"的干扰 ...

  5. MQL4: 双重时间框架双均线交易系统

    2019独角兽企业重金招聘Python工程师标准>>> 一.交易策略 二.EA源码 //+---------------------------------------------- ...

  6. 如何使用MA均线来交易?

    MA均线也叫移动平均线,它产生于二十世纪中期,是用统计分析的方法,将一定时期内的证券价格(指数)加以平均,并把不同时间的平均值连接起来,形成一根MA,用以观察证券价格变动趋势,是当今应用最普遍的技术指 ...

  7. 双均线通道过滤交易系统

    本策略简介 传统的双均线交易系统是通过快速均线与慢速均线的交叉来捕捉趋势:当快速均线上穿慢速均线的时候,出现买入信号,指示有一波上涨趋势:当快速均线下穿慢速均线的时候,出现卖出信号,指示有一波下跌趋势 ...

  8. 【全新升级】SF06(源码):过滤震荡,抓稳趋势,均线构建过滤通道,让利润奔跑(MC,金字塔,TB,文华8 四版本源码)

    致力于分享量化策略,培训视频,Python,算法研究等相关内容. 策略思想: 传统的双均线交易系统是通过快速均线与慢速均线的交叉来捕捉趋势:当快速均线上穿慢速均线的时候,出现买入信号,指示有一波上涨趋 ...

  9. 大智慧交易系统测试软件,均线交易系统测试

    今天有空,玩玩均线交易系统测试,也让我们知道一下,究竟均线系统如何设置为好. 应用大智慧新一代软件做测试. 第一步,设定交易系统函数. 大智慧软件--公式--公式管理--交易系统(双击)--指标交易系 ...

最新文章

  1. Android Studio 第五十一期 - 自定义RecycleView Gallery
  2. python中raise stoplteration_推导表达式迭代器生成器模块和包 | 编程电脑技术交流...
  3. 21天学通HTML5和CSS3第二版,21天学通HTML5+CSS3
  4. C++Builder中使用Pas文件
  5. 阿里为什么建议给MVC三层架构多加一层Manager层?
  6. 【数据结构与算法】之重复的DNA序列的算法求解
  7. 3-间隔插入排序C实现(希尔排序铺垫)
  8. 神龙架构没那么难理解—图解世界领先的阿里云神龙架构(二)神龙出世
  9. redis value多大会影响性能_Redis 最常见面试问题
  10. 它们把色情版 “微信” 的底裤都给挖出来了,网友: 草率了。。。
  11. 基于PHP+小程序(MINA框架)+Mysql数据库的共享会议室预约小程序系统设计与实现
  12. idea如何连接夜神模拟器
  13. 中华流传十大吉祥图解
  14. win7开机加速怎么设置|win7开机加速的方法
  15. 《王亡於江上》之周昭王姬瑕
  16. 小红书行业黑话大全,小红书专业术语一手掌握
  17. js插入浏览器实现自动点击按钮
  18. Unity设置字体颜色渐变
  19. react实现echarts的疫情地图
  20. 什么是RC低通滤波电路

热门文章

  1. 旋转木马图片切换展示js特效
  2. 超实用硬盘数据恢复工具介绍!永久免费
  3. 小米A1(小米5X国际版)刷机完全指南
  4. 一文简述BSD,System V ,POSIX,SUS版本历史, 以及glibc移植的特性测试宏
  5. 动漫制作技巧如何制作动漫视频
  6. vulnhub——Bulldog1
  7. 敏捷型程序员_组织敏捷程序:第2部分,用于管理敏捷程序的网络
  8. 845透色android10,和平精英TCA845透色
  9. 火线精英手游服务器维护,4399火线精英7月4日23:00全区停机维护公告
  10. 10大主流压力测试工具