交易开拓者代码学习各种买卖指令及实例

上传人:gbs****77 文档编号:10174939 上传时间:2020-04-10 格式:DOCX 页数:37 大小:24.80KB
返回 下载 相关 举报
交易开拓者代码学习各种买卖指令及实例_第1页
第1页 / 共37页
交易开拓者代码学习各种买卖指令及实例_第2页
第2页 / 共37页
交易开拓者代码学习各种买卖指令及实例_第3页
第3页 / 共37页
点击查看更多>>
资源描述
交易开拓者代码学习各种买卖指令及实例 (TB)(转)2012年07月27日 22:35原文地址:交易开拓者代码学习各种买卖指令及实例 (TB)(转)作者:竹本无青各种买卖指令Buy说明 产生一个多头建仓操作。 语法 Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数 Share 买入数量,为整型值,默认为使用系统设置参数;Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。 备注 产生一个多头建仓操作,无返回值,该函数仅支持交易指令。该函数仅用于多头建仓,其处理规则如下:如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行多头建仓。如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数首先平掉所有空仓,达到持平的状态,然后再按照参数进行多头建仓。如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。 示例 在MarketPosition=0的情况下:Buy(50,10.2,1) 表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。Buy(10,Close) 表示用当前Bar收盘价买入10张合约,马上发送委托。Buy(5,0) 表示用现价买入5张合约,马上发送委托。 BuyToCover说明 产生一个空头平仓操作。 语法 BuyToCover(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数 Share 买入数量,为整型值,默认为平掉当前所有持仓;Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。 备注 产生一个空头平仓操作,无返回值,该函数仅支持交易指令。该函数仅用于空头平仓,其处理规则如下:如果当前持仓状态为持平,即MarketPosition = 0 时,该函数不执行任何操作。如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数不执行任何操作。如果当前持仓状态为空仓,即MarketPosition = -1 时,如果此时Share使用默认值,该函数将平掉所有空仓,达到持平的状态,否则只平掉参数Share的空仓。 示例 在MarketPosition = -1的情况下:BuyToCover(50,10.2,1) 表示用10.2的价格空头买入50张合约,延迟到下一个Bar发送委托。BuyToCover(10,Close) 表示用当前Bar收盘价空头买入10张合约,马上发送委托。BuyToCover(5,0) 表示用现价空头买入5张合约),马上发送委托。 sell说明 产生一个多头平仓操作。 (BK)语法 Sell(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数 Share 卖出数量,为整型值,默认为平掉当前所有持仓;Price 卖出价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 卖出动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。 备注 产生一个多头平仓操作,无返回值,该函数仅支持交易指令。该函数仅用于多头平仓,其处理规则如下:如果当前持仓状态为持平,即MarketPosition = 0 时,该函数不执行任何操作。如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数不执行任何操作。如果当前持仓状态为多仓,即MarketPosition = 1 时,如果此时Share使用默认值,该函数将平掉所有多仓,达到持平的状态,否则只平掉参数Share的多仓。 示例 在MarketPosition=0的情况下:Sell(50,10.2,1) 表示用10.2的价格卖出50张合约,延迟到下一个Bar发送委托。Sell(10,Close) 表示用当前Bar收盘价卖出10张合约,马上发送委托。Sell(5,0) 表示用现价卖出5张合约,马上发送委托。 sellshort说明 产生一个空头建仓操作。 语法 SellShort(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数 Share 卖出数量,为整型值,默认为使用系统设置参数;Price 卖出价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 卖出动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。 备注 产生一个空头建仓操作,无返回值,该函数仅支持交易指令。该函数仅用于空头建仓,其处理规则如下:如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行空头建仓。如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数首先平掉所有多仓,达到持平的状态,然后再按照参数进行空头建仓。如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。 示例 在MarketPosition=0的情况下:SellShort(50,10.2,1) 表示用10.2的价格空头卖出50张合约,延迟到下一个Bar发送委托。SellShort(10,Close) 表示用当前Bar收盘价空头卖出10张合约,马上发送委托。SellShort(5,0) 表示用现价空头卖出5张合约,马上发送委托。对应的BPK,SPK,你清楚了吗函数名 描述 Buy 平掉所有空头持仓,开多头仓位。(*BPK*)Sell 平掉指定的多头持仓。 SellShort 平掉所有多头持仓,开空头仓位。 (*SPK*)BuyToCover 平掉指定的空头持仓。 获得当前持仓状态,太妙了MarketPosition说明 获得当前持仓状态。 语法 Integer MarketPosition()参数 无 备注 获得当前持仓状态,返回值为整型,该函数仅支持交易指令。返回值定义如下:-1 当前位置为持空仓0 当前位置为持平1 当前位置为持多仓 示例 无内建平仓指令-精华之特色内建平仓指令除了上节的Sell和BuyToCover可以进行平仓之外,TradeBlazer公式提供了额外的八种平仓函数,通过合理的应用内建平仓函数,可以帮助您有效的锁定风险并及时获利。您可以组合使用内建平仓函数,也可以在自己的交易指令中调用内建平仓函数进行平仓,八个内建平仓函数如下:函数名 描述 SetExitOnClose 该平仓函数用来在当日收盘后产生一个平仓动作,将当前所有的持仓按当日收盘价全部平掉。 SetBreakEven 该平仓函数在获利条件满足的情况下启动,当盈利回落达到保本时产生平仓动作,平掉指定的仓位。 SetStopLoss 该平仓函数在亏损达到设定条件时产生平仓动作,平掉指定的仓位。 SetProfitTarget 该平仓函数在盈利达到设定条件时产生平仓动作,平掉指定的仓位。 SetPeriodTrailing 该平仓函数在盈利回落到设定条件时产生平仓动作,平掉指定的仓位。 SetPercentTrailing 该平仓函数在盈利回落到设定条件时产生平仓动作,平掉指定的仓位。 SetDollarTrailing 该平仓函数在盈利回落到设定条件时产生平仓动作,平掉指定的仓位。 SetInactivate 该平仓函数在设定时间内行情一直在某个幅度内波动时产生平仓动作,平掉指定的仓位。 关于ExitPosition上述多个平仓函数都用到了参数ExitPosition,作为平仓函数仓位控制的重要参数,有必要对该参数进行单独说明。ExitPosition是布尔型参数,当ExitPosition=True时,表示将当前所有的持仓作为一个整体,根据其平均建仓成本,计算各平仓函数的盈亏,当条件满足时,会将所有仓位一起平掉;当ExitPosition=False时,表示单独对每个建仓位置进行平仓,单独计算各平仓函数盈亏时,当单个建仓位置条件满足后,平掉该建仓位置即可。触发单触发单触发单是交易开拓者特有的交易方式,触发单是指用户设置条件,将触发单提交到交易开拓者的交易服务器,当设定条件满足情况,交易服务器会自动发送委托到交易所。触发单可以帮助解决用户盯盘的辛苦,及手动发单的速度问题。触发单分为以下四种类型:吊买、吊卖、追买、追卖。每个触发单在发送时需要输入以下参数:触发价格:触发单设定的条件价格,通过比较现价和触发价格确定是否下单。下单之后,该触发单会从交易服务器中删除;执行价格:条件满足之后,发送委托的价格,设定为0可自动获取当时的叫买/卖价;过期时间:设定触发单的过期时间,到这个时间还没有触发的订单会被设为过期,不再进行监控。吊买吊买是指当现价向下跌破触发价格,即按执行价格产生一个即时买入委托单,如下图所示:吊卖吊卖是指当现价向上突破触发价格,即按执行价格产生一个即时卖出委托单,如下图所示:追买追买是指当现价向上突破触发价格,即按执行价格产生一个即时买入委托单,如下图所示:追卖追卖是指当现价向下跌破触发价格,即按执行价格产生一个即时卖出委托单,如下图所示:修改或删除触发单当存在某个商品的触发单,可通过双击帐户管理的触发单页面的项目,打开交易师,进行修改或删除操作。您可以修改数量、触发单类型、触发价格、执行价格、过期时间及止损获利等,完成修改之后,点击修改按钮即可完成修改;您可以直接点击删除按钮将该触发单删除。注意: 触发单在发送之后将会生效,该委托单在服务器上运行,此时您关闭程序或电脑不会影响触发单的执行。 SetPercentTrailing(2000,0.2,True); 又是一个宝SetPercentTrailing(2000,0.2,True); 当前所有持仓盈利在大于2000之后回落,当回落百分比达到20%之后,执行所有持仓位置的百分比回落平仓。(此时是计算所有持仓的盈利数)SetPercentTrailing(1000,0.1,False); 当前持仓的某一个建仓位置的盈利大于1000之后回落,当回落百分比达到10%之后,执行该持仓位置的百分比回落平仓。(此时只计算该持仓位置的盈利) SetStopLoss(0,2000,True); 当前所有持仓亏损达到2000之后,执行所有持仓位置的止损平仓。(此时是计算所有持仓的亏损数)SetStopLoss(1,50, False); 当前持仓的某一个建仓位置每张合约的亏损达到50之后,执行该持仓位置的止损平仓。(此时只计算该持仓位置的每张合约亏损)SetBreakEven(0,2000,True); 当前所有持仓的盈利达到2000之后,启动所有持仓位置的保本平仓。(此时是计算所有持仓的盈利数)SetBreakEven(1,50, False); 当前持仓的某一个建仓位置每张合约的盈利达到50之后,启动该持仓位置的保本平仓。(此时只计算该持仓位置的每张约的盈利) 精华中精华文华所没有实现复杂策略工具一循环语句循环语句包括两种表达方式:For和While。ForFor语句是一个循环语句,重复执行某项操作,直到循环结束。语法如下:For 循环变量 = 初始值 To 结束值TradeBlazer公式语句;循环变量为在之前已经定义的一个数值型变量,For循环的执行是从循环变量从初始值到结束值,按照步长为1递增,依次执行TradeBlazer公式语句。结束值必须大于或等于初始值才有意义,初始值和结束值可以使用浮点数,但是在执行过程中会被直接取整。只计算其整数部分。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。第一次执行时,首先将循环变量赋值为初始值,然后判断循环变量是否小于等于结束值,如果满足条件,则执行TradeBlazer公式语句,同时循环变量加1。接着重新判断循环变量是否小于等于结束值,一直到条件为False,退出循环。例如,以下的用户计算Price最近Length周期的和。ParamsNumericSeries Price(1);Numeric Length(10);VarsNumeric SumValue(0);Numeric i;Beginfor i = 0 to Length - 1SumValue = SumValue Price i ;Return SumValue;End如果希望For语句从大到小进行循环,可以使用以下的语法:For 循环变量 = 初始值 DownTo 结束值TradeBlazer公式语句;For-DownTo让循环变量从结束值每次递减1直到等于结束值,依次调用TradeBlazer公式语句执行,初始值必须大于或等于结束值才有意义。For语句是比较常用的一种循环控制语句,它应用于知道循环次数的地方,很多内建用户函数中都使用For语句来完成相应的功能,比如Summation,Highest,Lowest,LinearReg等。WhileWhile语句在条件为真的时候重复执行某一项操作。即,只要条件表达式的值为真(True)时,就重复执行某个动作。直到行情信息改变以致条件为假(False)时,循环才结束。语法如下:While (Condition)TradeBlazer公式语句;Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被循环执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。例如,以下的公式用来计算要产生大于100000成交量需要最近Bar的个数:VarsNumeric SumVolume(0);Numeric Counter (0);BeginWhile (SumVolume 100000)SumVolume = SumVolume VolCounterCounter = Counter 1;End首先,我们定义两个变量SumVolume和Counter,并将其默认值设为0。当SumVolume High1)Counter = Counter1 1;.End在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If语句,当条件满足的时候,在满足条件的Bar上面进行标记。例如,下面的语句就是特征走势的例子:If(High High1 AND Low High1 AND Low High1 AND Low Close1,Value1 = Value1 Vol;否则Value1 = Value1 - Vol,脚本如下:If (Colse Close1)Value1 = Value1 Vol;ElseValue1 = Value1 - Vol;If-Else-IfIf-Else-If是在If-Else的基础上进行扩展,支持条件的多重分支。语法如下:If (Condition1)TradeBlazer公式语句1;Else If(Condition2)TradeBlazer公式语句2;ElseTradeBlazer公式语句3;Condition1是一个逻辑表达式,当Condition1为True的时候,TradeBlazer公式语句1将会被执行,Condition1为False时,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句2将会被执行。Condition2为False时,TradeBlazer公式语句3将会被执行。Condition1,Condition2可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。If-Else-If的语句可以根据需要一直扩展,在最后的Else之后再加If(Condition)和新的执行代码即可。当然您也可以省略最后的Else分支,语法如下:If (Condition1)TradeBlazer公式语句1;Else If(Condition2)TradeBlazer公式语句2;If-Else的嵌套If-Else的嵌套是在If-Else的执行语句中包含新的条件语句,即一个条件被包含在另一个条件中。语法如下:If (Condition1)If (Condition2)TradeBlazer公式语句1;ElseTradeBlazer公式语句2;ElseIf (Condition3)TradeBlazer公式语句3;ElseTradeBlazer公式语句4;Condition1是一个逻辑表达式,当Condition1为True的时候,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句1将会被执行。Condition2为False时,TradeBlazer公式语句2将会被执行。当Condition1为False的时候,将会继续判断Condition3的值,当Condition3为True时,TradeBlazer公式语句3将会被执行。Condition3为False时,TradeBlazer公式语句4将会被执行。Condition1,Condition2,Condition3可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。例如,在一个交易指令中,条件设置如下:当前行情上涨的时候,如果收盘价高于开盘价时,则产生一个以收盘价买入1张合约;否则产生一个以开盘价买入1张合约。当前行情没有上涨的时候,如果收盘价高于开盘价,则产生一个以收盘价卖出1张合约;否则产生一个以开盘价卖出1张合约。脚本如下:If (Open High1)If (CloseOpen)Buy(1,Open);ElseBuy(1,Close);ElseIf (Close Open)Sell(1,Open);ElseSell (1,Close); 接平仓东东SetDollarTrailing (2000,True); 当前所有持仓盈利在回落达到2000之后,执行所有持仓位置的价值回落平仓。(此时是计算所有持仓的盈利数)SetDollarTrailing (1000,False); 当前持仓的某一个建仓位置的盈利在回落达到1000之后,执行该持仓位置的价值回落平仓。(此时只计算该持仓位置的盈利) 说明 当日收盘全部平仓。 语法 SetExitOnClose()参数 无 备注 当日收盘全部平仓,无返回值,该函数仅支持交易指令。在当日收盘之后以收盘价全部平仓,将持仓状态变为持平,该函数仅用于历史数据测试,在小于1日线的周期情况下,该操作在建仓日期的最后一个Bar上执行,在1日线及以上的周期中,该操作以建仓Bar的收盘价在同一Bar内执行。在自动交易中因为收盘之后不一定能够保证成功发送委托,所以该函数延迟到第二天的开盘发送。PositionProfit说明 获得当前持仓位置的浮动盈亏。 语法 Numeric PositionProfit()参数 无 备注 获得当前持仓位置的浮动盈亏,已考虑交易费用,返回值为浮点数,该函数仅支持交易指令。只有当MarketPosition != 0时,即有持仓的状况下,该函数才有意义,否则返回0。当前持仓的平均建仓价格说明 获得当前持仓的平均建仓价格。 语法 Numeric AvgEntryPrice()参数 无 备注 获得当前持仓的平均建仓价格,返回值为浮点数,该函数仅支持交易指令。 示例 无当前持仓位置的每手浮动盈亏ContractProfit说明 获得当前持仓位置的每手浮动盈亏。 语法 Numeric ContractProfit()参数 无 备注 获得当前持仓位置的每手浮动盈亏,已考虑交易费用,返回值为浮点数,该函数仅支持交易指令。只有当MarketPosition != 0时,即有持仓的状况下,该函数才有意义,否则返回0。获得当前的可用资金CurrentCapital说明 获得当前的可用资金。 语法 Numeric CurrentCapital()参数 无 备注 获得当前的可用资金,已考虑交易费用,返回值为浮点数,该函数仅支持交易指令。根据参数进行获利平仓操作SetProfitTarget (0,2000,True); 当前所有持仓盈利达到2000之后,执行所有持仓位置的获利平仓。(此时是计算所有持仓的盈利数)SetProfitTarget (1,50, False); 当前持仓的某一个建仓位置每张合约的盈利达到50之后,执行该持仓位置的获利平仓。(此时只计算该持仓位置的每张合约盈利) 第一课:实例之战一个文华交易系统的移植例子多空趋势-交易系统之文华的公式脚本:Copy to clipboard - CODE:MA1:=EMA(CLOSE,16);MA2:=EMA(CLOSE,35),COLORYELLOW;MA3:=EMA(CLOSE,60);MA4:=REF(HIGH,1);LOWV:=LLV(LOW,9);HIGHV:=HHV(HIGH,9);RSV:=EMA(CLOSE-LOWV)/(HIGHV-LOWV)*100,3);K:=EMA(RSV,3);D:=MA(K,3);MV5:=MA(VOL,5);KK:=REF(K,1);PP:=REF(LOW,1);VAR3:=(2*CLOSE HIGH LOW)/4;VAR4:=LLV(LOW,33);VAR5:=HHV(HIGH,33);ZL:=EMA(VAR3-VAR4)/(VAR5-VAR4)*100,17);SH:=EMA(0.667*REF(ZL,1) 0.333*ZL,2);LC:=REF(CLOSE,1);RSI:=SMA(MAX(CLOSE-LC, 0), 6, 1)/SMA(ABS(CLOSE-LC), 6, 1)*100;CROSS(CLOSE,MA1)&(KD)&(ZLSH)|CROSS(MA1,MA2)&(ZLSH)&(VOL1.25*MV5)&(KD)|CROSS(K,D)&(CLOSEMA1)&(ZLSH)|CROSS(RSI,70),BK;CROSS(PP,CLOSE)&(DK)&(SHZL)|CROSS(D,K)&(CLOSEMA1)&(MA1ZL),SK;CROSS(D,K)|(CLOSEMA1*1.001),BP;TradeBlazer公式代码:Copy to clipboard - CODE:/-/ 简称: Test/ 名称: 多空趋势交易系统/ 类别: 交易指令/ 类型: 其他/ 输出:/-ParamsNumeric Length1(16);Numeric Length2(35);Numeric Length3(9);Numeric Lots(1);VarsNumericSeries Value1;NumericSeries Value2;Numeric LowestValue;NumericSeries Value5;NumericSeries RSV;NumericSeries KValue;NumericSeries DValue;Numeric AvgVol5;NumericSeries CloseTmp1;NumericSeries CloseTmp2;NumericSeries RSIValue;NumericSeries PreLow;NumericSeries PreKValue;Numeric Lowest33Value;NumericSeries VarTmp1;NumericSeries VarTmp2;NumericSeries ZL;Numeric SH;BeginValue1 = XAverage(Close,Length1);Value2 = XAverage(Close,Length2);/取两条均线的值LowestValue = Lowest(Low,Length3);/取最低值Value5 = (CLOSE-LowestValue)/(Highest(High,Length3)-LowestValue)*100;RSV = XAverage(Value5,3);KValue = XAverage(RSV,3);DValue = Average(KValue,3);PreKValue = KValue1;PreLow = Low1;AvgVol5 = Average(Vol,5);Lowest33Value = Lowest(Low,33);VarTmp1 =(2*CLOSE HIGH LOW)/4 - Lowest33Value )/(Highest(High,33) - Lowest33Value) * 100;ZL = XAverage(VarTmp1,17);VarTmp2 = 0.667*ZL1 0.333*ZL;SH = XAverage(VarTmp2,2);CloseTmp1 = Max(Close - Close1, 0);CloseTmp2 = Abs(Close - Close1);RSIValue = WAverage(CloseTmp1,6)/WAverage(CloseTmp2,6) *100;/以上为KD部分只要如何换书写方式就可了,higest =hhv lowest=llv xAverager=ma / Buy什么时做买入动作,条件If( (CrossOver(Close,Value1 ) & (KValue DValue) & (ZLSH) Or(CrossOver(Value1,Value2) & (ZLSH) & (Vol 1.25 * AvgVol5) & (KValue DValue) Or(CrossOver(KValue,DValue) & (Close Value1) & (ZLSH) Or(CrossOver(RSIValue,70)/条件Buy(Lots,Close);/ SellShort 什么作卖出动作If( (CrossOver(PreLow,Close) & (KValue DValue ) & (SHZL) ) Or(CrossOver(DValue,KValue) & (Close Value1) & (Value1 ZL)/条件SellShort(Lots,Close);/ Sell 什么做多平动作If(CrossOver(DValue,KValue) | Close Value1 * 1.001)/条件BuyToCover;End/-/ 编译版本 GS2004.06.12/ 用户版本 2007-06-25 10:37/ 版权所有 TradeBlazer/ 更改声明 TradeBlazer Software保留对TradeBlazer平台/ 每一版本的TrabeBlazer公式修改和重写的权利/- 第二课:交易思想是灵魂要是打算根据3日的高低价平仓呢?想法如下想实现这样一个一个想法:价格突破5天最高价,开多仓,把当天和前一天的K线做比较,取两日的最低价格做为止损,当价格突破3日最低价时,平多仓。价格突破5日最低价,开空仓,把今天和 .你看看哦,代码大致如此: ParamsvarsNumericSeries EntryHi;NumericSeries EntryLo;NumericSeries ShortStop;NumericSeries LongStop;NumericSeries SellHi;NumericSeries SellLo;Numeric myEntryPrice;Numeric myExitPrice;begin/入场点,开多和开空点,突破5天最高或最低EntryHi = Highest(high1,5);EntryLo = Lowest(low1,5);/离场点,止盈点,三天较高或较低SellHi=Highest(high1,3);SellLo= Lowest(low1,3);/止损点,两天较高或较低ShortStop= Highest(high1,2);LongStop=Lowest(low1,2);if(MarketPosition =0)If(CrossOver(high,EntryHi)myEntryPrice = min(high,EntryHi );myEntryPrice = IIF(myEntryPrice Open, Open,myEntryPrice);SellShort(0,myEntryPrice);If(MarketPosition =1)if (CrossUnder(Low,LongStop)myExitPrice = max(low,LongStop );myExitPrice = IIF(myExitPrice Open, Open,myExitPrice);Sell(0,myExitPrice);Elseif (CrossUnder(Low,SellLo)myExitPrice = max(low,SellLo );myExitPrice = IIF(myExitPrice Open, Open,myExitPrice);Sell(0,myExitPrice);If(MarketPosition =-1)if (CrossOver(high,ShortStop)myExitPrice = min(high,ShortStop );myExitPrice = IIF(myExitPrice Open, Open,myExitPrice);BuyToCover(0,myExitPrice);Elseif (CrossOver(high,SellHi)myExitPrice = min(high,SellHi );myExitPrice = IIF(myExitPrice 0.1)Buy(CurrentContracts,Close); / 再按照当前的仓位买入EndCurrentCapital,AvgEntryPrice,CurrentContracts,ContractProfit等函数可获得测试时的资金,盈亏等数据。然后进行后续仓位控制。 第5课:资金管理与TB的结合范例应通过对资金管理来实现及时止损和止赢(最为关键一课) 第6课:海龟-著名交易系统只有吃透海龟你才算是合格的系统交易者 第七课:实战例/-/ 简称: sd/ 名称: sd/ 类别: 交易指令/ 类型: 多头建仓/ 输出:/-VarsNumeric lots(8);/精华在这里Bool szwy;Bool ssly;Bool sly;Bool sszwy;Beginif (BarStatus = 2 )Lots=A_FreeMargin /(Q_AskPrice*ContractUnit*MarginRatio);Lots= IntPart(Lots); / 取整Else If(BarStatus2 )Lots=CurrentCapital/(Close*ContractUnit*MarginRatio);Lots=IntPart(Lots); / 取整 /这是本例华部分,也是作者思想可取,一个好的交易者先首要件就是控制作风险.SZWY=(closeopen)&(close1=open1)&(close2OPEN)&(CLOSE1=OPEN1)&(CLOSE2=OPEN2)&(CLOSE3=OPEN3
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!