以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 【新手上路】报错缺少分号,麻烦看一下是什么情况 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=154620) |
-- 作者:QuantMe -- 发布时间:2017/6/2 10:12:11 -- 【新手上路】报错缺少分号,麻烦看一下是什么情况 如题 图中293显示报错缺少分号,我想请问一下是什么情况 |
-- 作者:王锋 -- 发布时间:2017/6/2 10:14:05 -- 建议将代码贴过来,不要贴图,以便于我们客服人员检查问题 |
-- 作者:QuantMe -- 发布时间:2017/6/2 10:26:35 -- 好的,稍等~ |
-- 作者:QuantMe -- 发布时间:2017/6/2 10:33:09 -- 您好,整个代码太大超过上限,然后我选择添加附件的时候没有窗口跳出来,我想问一下应该怎么处理比较好呢? |
-- 作者:wenarm -- 发布时间:2017/6/2 10:52:52 -- 你以文件形式导出后压缩,发到论坛上。(和发图方式一样) 或者分段贴出来,再或者提出提示有问题的部分 |
-- 作者:QuantMe -- 发布时间:2017/6/2 11:05:40 -- //Turtles Trading System INPUT : t20( 20 , 15 , 60 , 1 ); INPUT : t10( 10 , 10 , 30 , 1 ); INPUT : atrLen( 20 , 15 , 30 , 1 ); VARIABLE : flag = 0 ; // 查看今日是否发生交易 VARIABLE : _debug = 1 ; // 是否输出前台交易指令 VARIABLE : _tDebug = 1 ; // 是否输出后台交易指令 VARIABLE : _debugOut = 1 ; // 是否输出后台交易的调试信息 VARIABLE : entryPrice = 0 ; // 入市价格 VARIABLE : exitPrice = 0 ; // 退出价格 VARIABLE : turtleUnits = 0 ; // 海龟单位 VARIABLE : position = 0 ; // 目前持有状态 1 多头仓位 -1 空头仓位 0 空仓 VARIABLE : t20H = CLOSE ; VARIABLE : t20L = CLOSE ; VARIABLE : t10H = CLOSE ; VARIABLE : t10L = CLOSE ; VARIABLE : avgTR = 0 ; VARIABLE : posNum = 0 ; VARIABLE : long = True ; VARIABLE : short = True ; VARIABLE : exitByStd = True ; VARIABLE : exitByCut = True ; t20H := REF( HHV( H , t20 ) , 1 ); t20L := REF( LLV( L , t20 ) , 1 ); t10H := REF( HHV( H , t10 ) , 1 ); t10L := REF( LLV( L , t10 ) , 1 ); avgTR := REF( MA( TR , atrLen ) , 1 ); posNum := 2 ; //应该根据avgTR调整,但目前缺少信息 strEntryBarPos := STRCAT( STKLABEL , \'ENTRYBARPOS\' ) ; strExitBarPos := STRCAT( STKLABEL , \'EXITBARPOS\' ) ; strPreEntryPrice := STRCAT( STKLABEL , \'PREENTRYPRICE\' ) ; strTurtleUnits := STRCAT( STKLABEL , \'TURTLEUNITS\' ) ; strPosition := STRCAT( STKLABEL , \'POSITION\' ) ; strPreN := STRCAT( STKLABEL , \'PREN\' ) ; IF NOT( WORKMODE = 1 ) THEN BEGIN DRAWTEXTEX( 1 , 0 , 0 , 0 , \'本系统仅用于后台交易\' ); EXIT; END IF BARPOS = 1 THEN BEGIN POSITION := 0; END |
-- 作者:QuantMe -- 发布时间:2017/6/2 11:07:22 -- IF ISLASTBAR THEN // 对最后一根K线情况进行特殊处理, 因为最后一根K线数据可能是实时更新的 BEGIN IF EXTGBDATA( strExitBarPos <> BARPOS ) THEN // 当最后一根K线未发出过出场信号时进行处理 BEGIN IF EXTGBDATA( strEntryBarPos ) = BARPOS THEN // 当新录入数据棒的位置与之前位置相同,说明是数据实时更新,需要进行数据覆盖,避免发生错误 BEGIN POSITION := EXTGBDATA( strPosition ) ; entryPrice := EXTGBDATA( strPreEntryPrice ) ; turtleUnits := EXTGBDATA( strTurtleUnits ) ; N := EXTGBDATA( preN ) ; END IF POSITION = 0 THEN BEGIN long = H > t20H ; short = L < t20L ; IF NOT ( long AND short ) THEN BEGIN IF long THEN BEGIN entryPrice := IF( OPEN > t20H + MINDIFF , OPEN , t20H + MINDIFF ) ; //这个地方买价需要讨论 POSITION := 1 ; turtleUnits := 1 ; N := avgTR ; TBUY( _debug , posNum , LMT , entryPrice ) , ALLOWREPEAT ; EXTGBDATASET( strEntryBarPos , BARPOS ) ; EXTGBDATASET( strPosition , POSITION ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; EXTGBDATASET( strPreN , N ) ; EXTGBDATASET( strPreEntryPrice , entryPrice ) ; END IF short THEN BEGIN entryPrice := IF( OPEN < t20L - MINDIFF , OPEN , t20L - MINDIFF ) ; //这个地方买价需要讨论 POSITION := -1 ; turtleUnits := 1 ; N := avgTR ; TBUYSHORT( _debug , posNum , LMT , entryPrice ) , ALLOWREPEAT ; EXTGBDATASET( strEntryBarPos , BARPOS ) ; EXTGBDATASET( strPosition , POSITION ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; EXTGBDATASET( strPreN , N ) ; EXTGBDATASET( strPreEntryPrice , entryPrice ) ; END END END |
-- 作者:QuantMe -- 发布时间:2017/6/2 11:10:17 -- ELSE IF POSITION = 1 THEN BEGIN entryPrice := EXTGBDATA( strPreEntryPrice ) ; turtleUnits := EXTGBDATA( strTurtleUnits ) ; IF ( BARPOS > t20 ) AND ( H > L ) THEN BEGIN WHILE ( H > entryPrice + 0.5 * N ) AND ( turtleUnits < 4) DO BEGIN entryPrice := IF( entryPrice + 0.5 * N > OPEN , entryPrice + 0.5 * N , OPEN ) ; entryPrice := CEILING( entryPrice / MINDIFF ) *MINDIFF ; turtleUnits := turtleUnits + 1 ; N := avgTR ; EXTGBDATASET( strEntryBarPos , BARPOS ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; EXTGBDATASET( strPreN , N ) ; EXTGBDATASET( strPreEntryPrice , entryPrice ) ; END END exitByStd := L < t10L ; IF ( exitByStd ) AND ( EXTGBDATA( strEntryBarPos ) <> BARPOS ) THEN BEGIN exitPrice := IF( OPEN < t10L - MINDIFF , OPEN , t10L - MINDIFF ) ; POSITION := 0 ; turtleUnits := 0 ; exitPrice := FLOOR( exitPrice / MINDIFF ) * MINDIFF ; TSELL( _debug , 0 , LMT , exitPrice ) ; EXTGBDATASET( strExitBarPos , BARPOS ) ; EXTGBDATASET( strPosition , POSITION ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; END exitByCut := L < entryPrice - 2 * N ; IF ( POSITION = 1 ) AND ( exitByCut ) AND ( EXTGBDATA(strEntryBarPos) <> BARPOS ) THEN BEGIN exitPrice := IF( OPEN < entryPrice - 2 * N , OPEN , entryPrice - 2 * N ) ; POSITION := 0 ; turtleUnits := 0 ; exitPrice := FLOOR( exitPrice / MINDIFF ) * MINDIFF ; TSELL( _debug , 0 , LMT , exitPrice ) ; EXTGBDATASET( strExitBarPos , BARPOS ) ; EXTGBDATASET( strPosition , POSITION ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; END END |
-- 作者:QuantMe -- 发布时间:2017/6/2 11:11:36 -- ELSE IF POSITION = -1 THEN BEGIN entryPrice := EXTGBDATA( strPreEntryPrice ) ; turtleUnits := EXTGBDATA( strTurtleUnits ) ; IF ( BARPOS > t20 ) AND ( H > L ) THEN BEGIN WHILE ( L < entryPrice - 0.5 * N ) AND ( turtleUnits < 4 ) DO BEGIN entryPrice := IF( OPEN < entryPrice - 0.5 * N , OPEN , entryPrice - 0.5 * N ) ; turtleUnits := turtleUnits + 1 ; entryPrice := FLOOR( entryPrice / MINDIFF ) * MINDIFF ; N := avgTR ; EXTGBDATASET( strEntryBarPos , BARPOS ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; EXTGBDATASET( strPreN , N ) ; EXTGBDATASET( strPreEntryPrice , entryPrice ) ; END END exitByStd := H > t10H ; IF ( exitByStd ) AND ( EXTGBDATA( strEntryBarPos ) <> BARPOS ) THEN BEGIN POSITION := 0 ; turtleUnits := 0 ; exitPrice := IF( OPEN > t10H + MINDIFF , OPEN , t10H + MINDIFF ) ; exitPrice := CEILING( exitPrice / MINDIFF ) * MINDIFF ; TSELLSHORT( _debug , 0 , LMT , exitPrice ) ; EXTGBDATASET( strExitBarPos , BARPOS ) ; EXTGBDATASET( strPosition , POSITION ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; END exitByCut := H > entryPrice + 2 * N ; IF ( POSITION = -1 ) AND ( exitByCut ) AND ( EXTGBDATA( strEntryBarPos ) <> BARPOS ) THEN BEGIN POSITION := 0 ; turtleUnits := 0 ; exitPrice := IF( OPEN > entryPrice + 2 * N , OPEN , entryPrice + 2 * N ) ; exitPrice := CEILING( exitPrice / MINDIFF ) * MINDIFF ; TSELLSHORT( _debug , 0 , LMT , exitPrice ) ; EXTGBDATASET( strExitBarPos , BARPOS ) ; EXTGBDATASET( strPosition , POSITION ) ; EXTGBDATASET( strTurtleUnits , turtleUnits ) ; END END |
-- 作者:QuantMe -- 发布时间:2017/6/2 11:12:36 -- END ELSE BEGIN END END ELSE BEGIN IF POSITION = 0 AND BARPOS > t20 AND H > L THEN BEGIN long := H > t20H; short := L < t20L; IF NOT ( long AND short ) THEN BEGIN IF long THEN BEGIN entryPrice := IF( OPEN > t20H + MINDIFF , OPEN , t20H + MINDIFF ) ; POSITION := 1 ; turtleUnits := 1 ; N := avgTR ; TBUY( _debug , posNum , LMT , entryPrice ); flag := 1 ; END IF short THEN BEGIN entryPrice := IF( OPEN < t20L - MINDIFF , OPEN , t20L - MINDIFF ) ; POSITION := -1 ; turtleUnits := 1 ; N := avgTR ; TSELL( _debug , posNum , LMT , entryPrice ) ; flag := 1 ; END END END |