hslixuexue 发表于 2013-9-26 00:16:35

本帖最后由 hslixuexue 于 2013-9-26 01:05 编辑

六十、简单策略逐行解读六点数图突破交易策略 //-------智能交易公式点数图突破交易策略------
{策略:
1.价格升破点数图最近几列的最高点时平空开多
2.价格跌破点数图最近几列的最低点时平多开空
***点数图的算法和画法略***}
input:
   格值(30),转向格(5),突破列数(3),偏移量(1);
   const: 最大列数(10); //常数声明,突破列数应小于此数
   array: 极点值[最大列数](0); //数组声明,上涨列为最高格值,下跌列为最低格值
variable:转向价(0),涨跌方向(0),     突破买价(99999),突破卖价(0);//初始化
if BarPos <= 1 then begin//第一bar线     转向价 := Round(Close);
     涨跌方向 := 0;  //初始化为无方向
     突破买价 := High + 偏移量;
     突破卖价 := Low - 偏移量;
    end//第一bar线结束
else begin//不是第一bar线if 涨跌方向 = 0 then begin   //尚未确定方向if High>= 转向价 + 格值 * 转向格 then begin
极点值 := 转向价 + 格值 * 转向格;
涨跌方向 := 1;  //上涨
end //上涨确定结束
else ifLow <= 转向价 - 格值 * 转向格 then begin         极点值 := 转向价 - 格值 * 转向格;
         涨跌方向 := -1;  //下跌
       end; //下跌确定结束
end//确定方向结束
else if 涨跌方向 = 1 then begin//不是第一bar线,上涨
if High>= 极点值 + 格值 then begin //增加向上X格子whileHigh >= 极点值 + 格值 do begin极点值 := 极点值 + 格值;
转向价 := 极点值 - 格值 * 转向格;  //抬高转向价
end; //增加向上X格子结束
end//不是第一bar线,上涨结束
else ifLow <= 转向价 then begin//不是第一bar线,下跌         for n = 0 to 最大列数-1 do begin  //数组移位
           极点值[最大列数-n] := 极点值[最大列数-n-1];
         end; //不是第一bar线,下跌,结束
//以下使点数图新增下跌列
         极点值 := 转向价;
         涨跌方向 := -1;  //转为下跌
         转向价 := 极点值+ 格值 * 转向格;         while Low <= 极点值 - 格值 do begin
           极点值 := 极点值- 格值;           转向价 := 极点值+ 格值 * 转向格;         end;
       end;
     end //当前列为上涨   
     else begin //当前列为下跌
       if Low <= 极点值 - 格值 then begin //增加向下的O格子
         while Low <= 极点值 - 格值 do begin
          极点值 := 极点值- 格值;           转向价 := 极点值+ 格值 * 转向格;         end;
       end
       else if High >= 转向价 then begin //下跌转为上涨         for n = 0 to 最大列数-1 do begin
           极点值[最大列数-n] := 极点值[最大列数-n-1];
         end;
         极点值 := 转向价;
         涨跌方向 := 1;
         转向价 := 极点值- 格值 * 转向格;         while High >= 极点值 + 格值 do begin
           极点值 := 极点值+ 格值;           转向价 := 极点值- 格值 * 转向格;         end;
       end;
     end; //当前列为下跌   //根据最近若干列的极点值计算突破价位
     value1:= 0;
     value2:= 99999;
     for n = 1 to 突破列数 do begin
       if 极点值 > value1 then value1 := 极点值;
       if 极点值 < value2 then value2 := 极点值;
     end;
     突破买价 := value1 + 偏移量;
     突破卖价 := value2 - 偏移量;
   end;  
      
   Buy(, DEFAULT, 突破买价, -1, OT_STOP);
   SellShort(, DEFAULT, 突破卖价, -1, OT_STOP);  
      
买线: 突破买价, Precision0;   
卖线: 突破卖价, Precision0;
盈利因子: -GrossProfit/GrossLoss,Precision2, LineThick0;盈亏比: -(GrossProfit/NumWinTrades)/(GrossLoss/NumLosTrades), Precision2,LineThick0;
胜率%: PercentProfit, Precision2,LineThick0;净利: NetProfit,Precision2,LineThick0;当前连亏次数: NumConsecLosers, Precision0,LineThick0;   {注解:
   1.用variable定义变量可增加可读性,在本例其实可以省略
  2.Precision指定输出数值的小数位数   3.盈亏比=平均盈利/平均亏损,GrossLoss返回值为负数
   }
点数图算法的代码比较复杂,如果每个涉及到点数图的公式都包含那么多代码会比较难看,我们是否可以把它做成公共代码供其它公式调用呢?用传统的调用指标公式的方法不太好使,而且一次调用只能返回一个结果,本例的点数图就需要返回“突破买价”和“突破卖价”两个结果,用户能否自编函数,并且让这个函数能同时返回多个结果呢?


hslixuexue 发表于 2013-9-26 00:17:54

本帖最后由 hslixuexue 于 2013-9-26 01:07 编辑

六十一、简单策略逐行解读七均线与趋势线交叉加仓位管理 如何应用公共(自编)函数,如何在公式中调用手工绘制的趋势线产生交易信号,如何根据前次交易结果调整下单量,如何应用新的文本绘制函数?
首先在公式树的【公共函数】下创建名为“显示绩效”的公式:
input:    NumericSeriesMA1, //序列参数
    Numeric 下单量, //数值参数
    NumericRef盈利因子, //数值型引用参量装载计算结果
    NumericRef 盈亏比;
    均线: MA1,Precision0;
    单量: 下单量,Precision0, LineThick0;
    胜率%: PercentProfit, Precision0,LineThick0;
盈利因子:= -GrossProfit/GrossLoss;  //总盈利/总亏损
盈亏比:= -(GrossProfit/NumWinTrades)/(GrossLoss/NumLosTrades);
   return (InitialCapital+NetProfit);  //结束此函数的执行,并将它的参数作为函数的值返回
编译通过后,再创建以下智能交易公式:
//----智能交易公式.均线与趋势线交叉加仓位管理策略-----
{策略:
1.均线与手工画的趋势线交叉作为交易信号
2.上次交易为'止盈'平仓或首次开仓,下单量为初始单量
3.上次交易为非'止盈'平仓的,下单量按加仓步长渐次增加
4.下单量增大到超过最大单量则回复为初始单量}
input:
     TL标识号(99), //手工绘制趋势线的标识号,【设置画线】标题栏可见
     止盈价差(600),
     止损价差(200),
     初始单量(1),
     加仓步长(1),    //下单量渐次增加步长
     最大单量(10),
     转折强度(15);    //波峰波谷前后N周期最高最低
variable:下单量(1),等量次数(1);
MA1 :=MA(C,2); //中间变量TLV :=TL_GetValue(TL标识号, Date, Time); //中间变量,指定趋势线在某一时间数值。bEnterLong :=CrossOver(MA1,TLV); //均线上叉趋势线平空开多,bEnterLong自定义中间变量,代表上叉信号bEnterShort:=CrossUnder(MA1,TLV); //均线下叉趋势线平多开空,代表下叉信号
ifbEnterLong or bEnterShort then begin//有交叉信号ifExitName(1) = '止盈' OR ExitName(1) =  then //上次持仓最后一次平仓标识名为'止盈'或没有交易过下单量 = 初始单量; //初始下单
elsebegin //如果不是初次下单也不是止赢单。if 下单量=初始单量 or 等量次数 =2 then begin   下单量 = 下单量 + 加仓步长; //渐次增加下单量
  等量次数 = 1; //本价格第一次开仓
  end
else//不是初次下单、等量次数不是2,比如为1。
  等量次数 = 等量次数+1; //准备第二次开仓if (下单量 > 最大单量) then 下单量 = 初始单量;
    end
end

ifbEnterLong then beginBuy(,下单量); //市价单
ID1:=Text_New(Date,Time,L, 314, true); //绘制314号图标-右上箭头Text_SetColor(ID1,ColorMagenta);
end
ifbEnterShort then beginSellShort(,下单量);
ID1:=Text_New(Date,Time,H, 316, true); //绘制316号图标-右下箭头Text_SetColor(ID1,ColorCyan);
Text_SetStyle(ID1,0, 1);  //设置下对齐end

ifMarketPosition = 1 then begin //多头持仓Sell(,DEFAULT,EntryPrice+止盈价差,0,OT_LIMIT,OB_NEXTBAR,'止盈');
Sell(,DEFAULT,EntryPrice-止损价差,0,OT_STOP,OB_NEXTBAR,'止损');
end
ifMarketPosition = -1 then begin //空头持仓BuyToCover(,DEFAULT,EntryPrice-止盈价差,0,OT_LIMIT,OB_NEXTBAR,'止盈');
BuyToCover(,DEFAULT,EntryPrice+止损价差,0,OT_STOP,OB_NEXTBAR,'止损');
end

//显示波峰点
pos :=SwingHighBar(1,High,转折强度,转折强度+1);//波峰SWV :=SwingHigh(1,High,转折强度,转折强度+1); //波峰数值if pos =转折强度 then beginID1 :=Text_New(Date,Time,SWV, SWV);Text_SetColor(ID1,ColorMagenta);
Text_SetStyle(ID1,2, 1); //设置水平中对齐、垂直下对齐End

//显示波谷点
pos :=SwingLowBar(1,Low,转折强度,转折强度+1); //波谷SWV :=SwingLow(1,Low,转折强度,转折强度+1);//波谷数值if pos =转折强度 then beginID1 :=Text_New(Date,Time,SWV, SWV);Text_SetColor(ID1,ColorBlue);
Text_SetStyle(ID1,2, 0);  //设置水平中对齐、垂直上对齐end

//调用“显示绩效”公共函数显示绩效,并计算返回余额、盈利因子、盈亏比
variable://公式中可以有多组input、variable声明PF(0),PR(0);  //引用型变量声明,装回计算结果
余额:显示绩效(MA1,下单量,PF,PR),Precision0,OwnerScale;//“显示绩效”为引用用户自编的公共函数,括号内为输入自编函数参数,顺序与自编函数input设置顺序相同。参数名可以用声明的变量代替。变量将取得参数值。盈亏比: PR, Precision1, LineThick0; //
盈利因子: PF, Precision1, LineThick0; //



hslixuexue 发表于 2013-9-26 00:22:10

本帖最后由 hslixuexue 于 2013-9-26 01:12 编辑

六十二、简单策略逐行解读八向前引用 示范模型 //该模型仅仅用来示范如何根据指标编写简单的模型
//用户需要根据自己交易经验,进行修改后再实际应用!!!

//AA=当前周期的开盘价 -[ (一个周期前的最高价减最低价的差+两个周期前的最高价减最低价的差+三个周期前的最高价减最低价的差+四个周期前的最高价减最低价的差)/4]*1.8
AA:O-(((H-O)+(H-O)+(H-O)+(H-O))/4)*1.8;
//连续四个周期的收盘价小于前一周期的收盘价并且当前周期的收盘价大于AA
bEnterLong :=c<cand c<c and c<c and c>AA;
//bExitLong :=0;
//连续四个周期的收盘价大于前一周期的收盘价并且当前周期的收盘价小于等于AA                  
bEnterShort :=c>c and c>c andc>c and c<=AA;
//bExitShort :=0;

//发出买平并且买开(反手)交易指令
ifbEnterLong then buy;//发出卖平并且卖开(反手)交易指令
ifbEnterShort then SellShort;六十三、简单策略逐行解读九瀑布线 示范模型input: P1(4,1,10,1),
     P2(6,1,10,1),
     P3(8,1,10,1),
     P4(11,1,30,1),
     P5(15,1,30,1),
     P6(19,1,30,1);

//(收盘价的P1日指数移动平均+收盘价的2*P1日简单移动平均+收盘价的4*P1日简单移动平均)/3
PB1: (ema(C,P1)+ma(C,2*P1)+ma(C,4*P1))/3;
//(收盘价的P2日指数移动平均+收盘价的2*P2日简单移动平均+收盘价的4*P2日简单移动平均)/3
PB2: (ema(C,P2)+ma(C,2*P2)+ma(C,4*P2))/3;
PB3: (ema(C,P3)+ma(C,2*P3)+ma(C,4*P3))/3;
PB4: (ema(C,P4)+ma(C,2*P4)+ma(C,4*P4))/3;
PB5: (ema(C,P5)+ma(C,2*P5)+ma(C,4*P5))/3;
PB6: (ema(C,P6)+ma(C,2*P6)+ma(C,4*P6))/3,COLORCYAN;//定义6条瀑布线
//第一条瀑布线上穿第六条
bEnterLong :=CROSS(PB1,PB6);//第六条瀑布线上穿第一条  
bEnterShort :=CROSS(PB6,PB1);

ifbEnterLong then buy;//短线瀑布线金叉长线瀑布,做多。ifbEnterShort then SellShort;//短线瀑布线死叉长线瀑布,做空。六十四、简单策略逐行解读十DMA-QL钱龙趋向 示例模型input:n(14,2,100),
     m(6),
     n0(20),
     m0(20);

//收盘价与最低价做差,最高价与前一周期收盘价做差,最低价与前一周期收盘价作差,在上述三个数据中取绝对值最大者,对该最大值做移动平均。
TR1 :=SMA(MAX(MAX(H-L,ABS(H-C)),ABS(L-C)),N,1);HD :=H-H;//最高价与前一根K线最高价作差定义为HDLD :=L-L;//前一根K线最低价减去当前最低价DMP:=SMA(IIF(HD>0 and HD>LD,HD,0),N,1);//如果HD大于0并且HD>LD取HD否则取0,对该值做移动平均。DMM:=SMA(IIF(LD>0 and LD>HD,LD,0),N,1);//如果LD大于0并且LD>HD取LD否则取0,对该值做移动平均。PDI: DMP*100/TR1;MDI: DMM*100/TR1;//取(MDI与PDIN做差的绝对值)及(MDI及PDI的和),差与和之间作比值并放大100倍,对该值做移动平均。
ADX1:SMA(ABS(MDI-PDI)/(MDI+PDI)*100,N,1);ADXR: (ADX1+ADX1)/2;//ADX与前M个周期的ADX之和的一半定义为ADXR

//PDI上穿MDI
bEnterLong :=CROSS(PDI,MDI);//N0周期内ADX1的最高值*(1-0.01*M0)上穿ADX1   
   bEnterShort :=CROSS(HHV(ADX1,N0)*(1-0.01*M0),ADX1);
   if bEnterLong then buy;//PDI上穿MDI,做多。
   if bEnterShort then SellShort;//ADX回落超过前N0周期内的M0%,做空。
六十五、简单策略逐行解读十一当根K线开仓模型#Run_Every_Tick
Input:x(9.3);//用于预设时间
//时间为9:30(93000)且最新价大于当天开盘价
bEnterLong :=Time=(x*10000)and C>OpenD(0);   //时间为9:30(93000)且最新价小于当天开盘价
bEnterShort :=Time=(x*10000)and C<OpenD(0);
//多头开仓条件满足,在当前k线下单
ifbEnterLong then Buy(, DEFAULT, 0, 0, OT_Market, OB_ThisBar, );//空头开仓条件满足,在当前k线下单
ifbEnterShort then SellShort(, DEFAULT, 0, 0, OT_Market, OB_ThisBar, );六十六、简单策略逐行解读十二日线四价引用示例模型aa:=HighD(1);//引用昨天的最高价
bb:=LowD(1);//引用昨天的最低价
cc:=OpenD(1);//引用昨天的开盘价
dd:=CloseD(1);//引用昨天的收盘价
movAvgVal : (aa + bb + cc + dd)/4;
//收盘价上穿movAvgVal
bEnterLong :=CrossOver(c, movAvgVal); {多头开仓} //收盘价下穿movAvgVal
bEnterShort :=CrossUnder(c, movAvgVal);{空头开仓}
//多头开仓条件成立,开多仓,如果有空头仓位,会先平空仓,再开多仓
ifbEnterLong then Buy;//空头开仓条件成立,开空仓,如果有多头仓位,会先平多仓,再开空仓
ifbEnterShort then SellShort;
{使内建平仓出场函数的参数基于单口持仓。内建出场函数包括:SetStopLoss,SetProfitTarget,SetBreakEven,SetDollarTrailing,SetPercentTrailing}SetStopContract;{单口持仓的浮盈金额达到 20天平均真实波幅/2*BigPointValue 元后,启动跟踪止损,若从最大浮盈回撤了100元,则全部平仓出场 }
SetDollarTrailing(100,ATRD(20)/2*BigPointValue);
{单口持仓亏损金额达到 20天平均真实波幅/2*BigPointValue元(与开仓价差ATRD(20)/2个点)时平仓出场 }
SetStopLoss(ATRD(20)/2*BigPointValue);
六十七、简单策略逐行解读十三异同离差乖离率 示例模型//参数设置
Input:                                       
     N(5,1,100),
     m(16,1,100),
     t(76,1,100); //缺省值,最小值,最大值,步长

BIAS:=(C-MA(C,N))/MA(C,N);//(收盘价-N周期均值)/N周期均值
DIF:=(BIAS-BIAS);//当根K的BIAS与前M个周期的BIAS做差
DBCD:SMA(DIF,T,1),OwnerScale;//DIF的移动平均值。
MM:MA(DBCD,5),OwnerScale;//DBCD的5周期简单均值。

//DBCD金叉MM
bEnterLong :=CROSS(DBCD,MM);{多头开仓} //DBCD死叉MM
bEnterShort :=CROSS(MM,DBCD);{空头开仓}

ifbEnterLong then buy;ifbEnterShort then SellShort;
利润:NetProfit,OwnerScale;//以自己的指标来显示利润
六十八、简单策略逐行解读十四价差型模型示例
MA5:MA(C,5);//5个周期收盘价的简单移动平均
MA10:MA(C,10);//10个周期收盘价的简单移动平均

//5周期均线上穿10周期均线或者收盘价与5周期均线的差值大于8
bEnterLong :=CROSS(MA5,MA10)or (MA5-C)>8; {多头买入} //5周期均线与收盘价的差值大于6
bExitLong :=(MA5-C)>6;{多头卖出}
//10周期均线上穿5周期均线或者收盘价与5周期均线的差值大于8
bEnterShort :=CROSS(MA10,MA5)or (C-MA5)>8;//收盘价与5周期均线的差值大于6
bExitShort :=(C-MA5)>6;

ifbEnterLong then buy;//满足开多条件,开多仓ifbExitLong then sell;//满足平多条件,平多仓ifbEnterShort then SellShort;//满足开空条件,开空仓ifbExitShort then BuyToCover;//满足平空条件,平空仓

hslixuexue 发表于 2013-9-26 00:22:51

本帖最后由 hslixuexue 于 2013-9-26 01:08 编辑

六十九、简单策略逐行解读十五慢速KD 示例模型
//参数设置
Input:                                       
     N(1,1,100),
     m1(6,2,50),
     m2(6,2,50),
     m3(5,1,50); //缺省值,最小值,最大值,步长

//(收盘价-N日内最低价的最低值)/(N日内最高价的最高值-N日内最低价的最低值)*100
RSV:=(C-LLV(L,N))/(HHV(H,N)-LLV(L,N))*100;FASTK:=SMA(RSV,M1,1);
K:SMA(FASTK,M2,1);
D:SMA(K,M3,1);

//K金叉D
bEnterLong :=CROSS(K,D);//D金叉K  
bEnterShort :=CROSS(D,K);

ifbEnterLong then buy;//满足开多条件,开多仓if bEnterShortthen SellShort;//满足开空条件,开空仓七十、简单策略逐行解读十六MIKE 示范模型input:n(12,1,200);

TYP:=(H+L+C)/3;//当根K线的最高值最低值收盘价的简单均值定义为TYP。
LL:=LLV(L,N);//N个周期的最低值
HH:=HHV(H,N);//N个周期的最高值

SR:2*HH-LL;     //strong resistanceMR:TYP+(HH-LL);//medium 阻力WR:TYP+(TYP-LL);//weak阻力WS:TYP-(HH-TYP);//weakSupport MS:TYP-(HH-LL);//medium 支撑 SS:2*LL-HH;     //strong 支撑

//WR,MR,SR同时下拐
bEnterLong :=WR<WRand WR>WR  and  MR<MR and MR>MR  and SR<SR and SR>SR;  //WS,MS,SS同时上拐     
bEnterShort :=WS>WSand WS<WS  and  MS>MS and MS<MS  and SS>SS and SS<SS;
ifbEnterLong then buy;//满足开多条件,开多仓ifbEnterShort then SellShort;//满足开空条件,开空仓七十一、简单策略逐行解读十七时间函数 示例模型MA5:MA(C,5);//定义5周期的简单移动平均线
MA10:MA(C,10);//定义10周期的简单移动平均线

{9点05分之后14点55分之前的时间段内出现5周期线金叉10周期线}
bEnterLong :=TIME>=090500and TIME<145500 and CROSS(MA5,MA10); //时间到14点55分
bExitLong :=TIME>=145500;
//9点05分之后14点55分之前的时间段内出现5周期线死叉10周期线
bEnterShort :=TIME>=090500and TIME<145500 and CROSS(MA10,MA5);//时间到14点55分
bExitShort :=TIME>=145500;

ifbEnterLong then buy;//满足开多条件,开多仓ifbExitLong then sell;//满足平多条件,平多仓ifbEnterShort then SellShort;//满足开空条件,开空仓ifbExitShort then BuyToCover;//满足平空条件,平空仓七十二、简单策略逐行解读十八多条件模型示例 RSV:=(C-LLV(L,9))/(HHV(H,9)-LLV(L,9))*100;
K:=SMA(RSV,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
//以上为KDJ公式

MA5:MA(C,5);
MA10:MA(C,10);
//以上为定义5个周期收盘价的简单移动平均和10个周期收盘价的简单移动平均

//5周期均线上穿10周期均线并且前一个周期的J值(KDJ)少于70或者KD金叉时并且J值小于30
bEnterLong :=(CROSS(MA5,MA10)and J<70) or(CROSS(K,D) and J<30); {多头买入} //KD出现金叉并且前一个周期J值小于30
bExitLong :=CROSS(K,D)and J<30; {多头卖出}

//5周期均线下叉10周期均线并且前一个周期的J值(KDJ)大于30或者KD死叉时并且J值大于70   
bEnterShort :=(CROSS(MA10,MA5)and J>30) or(CROSS(D,K) and J>70);//KD出现死叉并且前一个周期J值大于70
bExitShort :=CROSS(D,K)and J>70;

ifbEnterLong then buy;//满足开多条件,开多仓ifbExitLong then sell;//满足平多条件,平多仓ifbEnterShort then SellShort;//满足开空条件,开空仓ifbExitShort then BuyToCover;//满足平空条件,平空仓

hslixuexue 发表于 2013-9-26 00:25:05

本帖最后由 hslixuexue 于 2013-10-1 01:09 编辑

七十三编程简易模板 {策略描述}
{预计功能模块
参数、变量根据需要简单记录,再编代码雏形,最后完善参数变量模块}
{需要的关键函数,因为不熟,必须在字典里翻。函数一变,设想的参数、变量、模块全变。好多方案因为找不到相应函数而放弃!}
{错误调试描述}#NOTE  "公式说明"   #MAINCHART{参数设置}#TEMPLATE"参数名:Param#1 参数说明"  //参数精灵格式:#TEMPLATE " "第一个参数名: Param#1  参数说明,第二个参数: Param#2;" 参数说明可以省略。Input:  //没有就删除

{变量设置}
variable:  //没有就删除

{-----不同功能代码之间,空行或者注释便于分段查看-----}
If  begin
     If  begin
     End
     Else if  begin
    End
End
   Elseif  begin
  End
{-----不同功能代码之间,空行或者注释便于分段查看-----}






hslixuexue 发表于 2013-9-26 00:32:28

本帖最后由 hslixuexue 于 2013-9-26 01:27 编辑

七十四根据开启投机波动密码群天骄大哥一张图片编制简易函数
用text文件编制更加清楚明了,没得word那样复杂格式。
{
1,图形上画指标函数,目前没适合选股策略
2、区间起点应该是指定的某个高点或低点价格,自动判别上升或下降,自动判别另一高点或低点作为区间终点。
3、水平射线,起点都是区间起点。区间开始、结束、指定回测幅度,分别画水平射线。其中区间起点、结束为实线,回撤线为虚线
}
{预计功能模块
输入某个高点或低点价格,自动选择区间起点、射线起点、自动判别趋势,自动找出区间终点;
计算回撤
画线
参数、变量根据需要简单记录,中文英文皆可,再编代码雏形,最后完善参数变量模块
}
{
需要的关键函数:因为不熟,必须在字典里翻。这个可能是新手最难的。函数变化,参数、变量、模块都要变。    DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND),新画线函数要求time,不好用在日线以上周期。
}
{
错误调试描述:精确,但是改变周期,K线变化,重新输入参数。
}
{参数设置}
#MAINCHART
Input:
H1(18030,0,100000),L1(16925,0,100000),c1(17485,0,100000), H2(21300,0,100000), L2(20110,0,100000), c2(20810,0,100000),
{变量设置}
ifh2>h1 then begin j:=h2-l1;
j1:=h2-0.382*j;
j2:=h2-0.5*j;
j3:=h2-0.618*j;
DRAWLINE(c=C1,j1,c=C2,j1,1);
DRAWTEXT(c=C1,j1,'38.2%'+J1);
DRAWLINE(c=C1,j2,c=C2,j2,1),LINETHICK2;
DRAWTEXT(c=C1,j2,'50%'+J2);
DRAWLINE(c=C1,j3,c=C2,j3,1),LINEDOT 2 , COLORRED;
DRAWTEXT(c=C1,j3,'61.8%'+J3),COLORRED;
end
else  begin
j:=h1-l2;
j1:=l2+0.382*j;
j2:=l2+0.5*j;
j3:=l2+0.618*j;
DRAWLINE(c=C1,j1,c=C2,j1,1);
DRAWTEXT(c=C1,j1,'38.2%'+J1);
DRAWLINE(c=C1,j2,c=C2,j2,1);
DRAWTEXT(c=C1,j2,'50%'+J2);
DRAWLINE(c=C1,j3,c=C2,j3,1);
DRAWTEXT(c=C1,j3,'61.8%'+J3);
End
DRAWLINE(c=C1,H2,c=C2,H,1);
DRAWLINE(c=C1,l,c=C2,L1,1);

代码2
{
错误调试描述:本来设想,上例改进为同一品种下能够使用不同周期不在输入。却发现周期改变,K线最高价和最低价发生变换。官方解释:日线的数据是来自于交易所发过来的数据。而分钟线的数据是由分笔数据计算的,当瞬间的最高最低价被分笔合并之后再发送过来,可能就显示不出来了。http://www.hs633.com/forum.php?mod=viewthread&tid=11038&page=1#pid42707
}

#MAINCHART
Input:d1(0,700101,1341231),h1(0,0,100000),l2(0,0,100000),l1(16925,0,100000),h2(21300,0,100000);
// h1与l2一组,l1与h2一组,分别代表起点终点,两组只输一组。如果有两个相同起点值,用d1日期选择起点。

If d1=0 then begin
if h1=0 then begin
j:=h2-l1;
j1:=h2-0.382*j;
j2:=h2-0.5*j;
j3:=h2-0.618*j;
DRAWLINE(l=l1,j1,h=h2,j1,1);
DRAWTEXT(l=l1,j1,'38.2%'+J1);
DRAWLINE(l=l1,j2,h=h2,j2,1), LINETHICK2;
DRAWTEXT(l=l1,j2,'50%'+J2);
DRAWLINE(l=l1,j3,h=h2,j3,1),LINEDOT 2, COLORRED;
DRAWTEXT(l=l1,j3,'61.8%'+J3), COLORRED;
DRAWLINE(l=l1,l1,h=h2,l1,1);
DRAWLINE(l=l1,h2,h=h2,h2,1);
end
else  begin
j:=h1-l2;
j1:=l2+0.382*j;
j2:=l2+0.5*j;
j3:=l2+0.618*j;
DRAWLINE(h=h1,j1,l=l2,j1,1);
DRAWTEXT(h=h1,j1,'38.2%'+J1);
DRAWLINE(h=h1,j2,l=l2,j2,1);
DRAWTEXT(h=h1,j2,'50%'+J2);
DRAWLINE(h=h1,j3,l=l2,j3,1);
DRAWTEXT(h=h1,j3,'61.8%'+J3);
DRAWLINE(h=h1,H1,l=l2,h1,1);
DRAWLINE(h=h1,l2,l=l2,L2,1);
end
end

打开金魔方,打开公式管理,在指标公式下新建文件夹,然后再里面新建函数,把代码粘贴进去,编译。打开橡胶主连,周期锁定5月至九月,双击指标就上主图了。基本上与原图一样。


hslixuexue 发表于 2013-9-26 00:34:22

本帖最后由 hslixuexue 于 2013-9-26 01:23 编辑

结束了,当做自己读书笔记吧

kenykau 发表于 2013-9-27 17:04:14

hslixuexue 发表于 2013-9-26 00:34 static/image/common/back.gif
结束了,当做自己读书笔记吧

谢谢楼主的努力!感动中!
本来想开一个新的帖子把自己的笔记也分享给大家,看到大大的帖子,感到还差远了!
所以,如果您不介意,我能把我的笔记也发在这吗?
另建议把原稿也付上,省了大家翻来翻去的麻烦!

kenykau 发表于 2013-9-27 17:08:45

本帖最后由 kenykau 于 2013-9-27 17:14 编辑

原稿请见(PPT档)


kenykau 发表于 2013-9-27 17:15:34

本帖最后由 kenykau 于 2013-9-27 17:16 编辑








页: 1 2 3 4 5 6 [7] 8 9 10 11
查看完整版本: 自制《金语言初级教程》--从0开始学习金语言