双均线交叉系统交易模型源代码

合集下载

量化交易策略:MACD双均线交叉策略

量化交易策略:MACD双均线交叉策略

概述该策略基于MACD指标,利用MACD指标中的MACD线和Signal线的交叉来判断交易信号。

当MACD 线上穿Signal线时产生做多信号,当MACD线下穿Signal线时产生做空信号。

同时使用前一根K线的最低价作为多头止损位,前一根K线的最高价作为空头止损位。

止盈位设置为4倍ATR(平均真实波幅)。

策略原理MACD指标由DIF线和DEA线组成,DIF线是快速均线和慢速均线的差值,DEA线是DIF线的移动平均线。

当DIF线上穿DEA线时,表明股价已经脱离超卖区域并开始向上,产生做多信号;当DIF线下穿DEA线时,表明股价已经脱离超买区域并开始向下,产生做空信号。

同时,策略使用前一根K线的最低价和最高价分别作为多头止损位和空头止损位,以控制风险。

止盈位设置为4倍ATR,以获取更多利润。

优势分析1.MACD指标能够较好地捕捉股价的趋势变化,特别是中长期趋势。

2.止损位的设置能够有效控制风险,避免单笔交易的损失过大。

3.止盈位的设置能够让利润充分扩大,提高策略收益。

4.代码逻辑清晰,容易理解和实现。

风险分析1.MACD指标有滞后性,可能错过最佳建仓时机。

2.止损位的设置相对简单,可能无法应对某些极端行情。

3.止盈位的设置可能导致错过更大的利润空间。

4.缺乏仓位管理,风险控制能力有限。

优化方向1.可以考虑加入其他指标,如RSI、布林带等,以提高信号准确性。

2.可以优化止损位的设置,如使用ATR或百分比止损,以更好地控制风险。

3.可以优化止盈位的设置,如使用移动止盈或部分止盈,以获取更多利润。

4.可以加入仓位管理,如基于风险比例调整仓位大小,以提高风险控制能力。

总结该策略基于MACD指标,通过MACD线和Signal线的交叉来判断交易信号,同时使用前一根K线的最低价和最高价作为止损位,止盈位设置为4倍ATR。

策略逻辑清晰,容易实现,能够较好地捕捉股价趋势。

但是,该策略也存在一些风险,如指标滞后、止损位设置简单等。

通达信均线交叉算法 主图源码

通达信均线交叉算法 主图源码

均线交叉算法均线交叉包括所谓的金叉和死叉。

大多数股盲喜欢金叉买,死叉卖。

屡试屡败,不知错在何处?有经验者,喜欢用所谓的有效交叉原理进行过滤,以期提高胜率,仍是雾里看花,水中捞月。

何之在《大师的命门》一书中,道破玄机,几人能懂?其实,通过简单算法,可以知道,所谓均线的交叉与之前的价格与昨天的均线有关,通过计算,可以知道均线交叉的均衡点,若今天收盘价大于均衡,一定是金叉,反之亦然。

----------------------------------------------------------------------------------------------以上证指数为例,月线级别,3均在五月K线处,已经金叉5均,本月均衡点在2682,不破仍是金叉状态。

周线级别,5均在20均之下,目前的均衡点在3124,不能站上,仍是所谓的死叉状态。

日线级别,5均在六一金叉20均,目前均衡点在2563,可以明白短线处于强势区域。

3均在五三零已经金叉5均,目前均衡点在2769,与目前指数2938相距169,超短线也是强势,强势不玩,岂不可惜?通达信源码如下参数N 1 60 5P 1 60 20------------------------------------------MN:MA(C,N),COLORWHITE;MP:MA(C,P),COLORYELLOW;RN:=REF(MN,1);RP:=REF(MP,1);A1:=N*P*(RP-RN);A2:=P*REF(C,N)-N*REF(C,P);JC:IF(CURRBARSCOUNT<=20,(A1+A2)/(P-N),DRAWNULL),COLORFFFF00,DOTLINE;。

图解双均线双交叉期货股票操作系统课件

图解双均线双交叉期货股票操作系统课件

图解“双均线双交叉”期货、股票操作系统
2、操作方式与周期的选择 做股票,由于中国A股不能做空,不能T+0,因
此日内操作受到限制,再者股票无交割期,因此 做股票可以在较长的时期持有。若要把握一轮中 级上涨行情赚大钱,选时看大盘指数是否上5月 线,周线双均线双交叉系统是否双金叉,,日线 MACD双均线是否上横轴。选股与看大盘选时的 条件差不多,但更要周线MACD双均线上横轴。 以后就是周线双均线双金叉时买入股票并持有, 周线双均线双死叉时空仓。
线在横轴线之上为多头,在横轴线之下为 空头。 MACD双均线在横轴线之上: 1、金叉后,DIF、DEA方向相同为多头 强势上涨。 2、金叉后,DIF、DEA方向相反,甚至 DIF、DEA死叉,为多头上涨修正。
图解“双均线双交叉”期货、股票操作系统
MACD双均线在横轴线之下: 1、死叉后,DIF、DEA方向相同为空头
图解“双均线双交叉”期货、股票操作系统
2、做期货 由于其交易制度正好与中国A股市场相反,并且
还有资金的杠杆作用,因此做期货的操作方式比 较灵活多样。可以按日、周周期做大趋势,也可 以选择从15分钟到日线周期做波段。更可以选择 从1分钟到15分钟周期做日内波动。 期货做大趋势看周线图中的技术图形选品种,做 波段或者日内波动看价格的活跃程度选品种。 做期货,注意控制仓位,注意防隔夜风险,注意 交割期。 ——————END——————
强势下跌。 2、死叉后,DIF、DEA方向相反,甚至
DIF、DEA金叉,为空头下跌修正。
图解“双均线双交叉”期货、股票操作系统
三、MA、MACD双均线双交叉操作系统及使用 规则
双均线双金叉,上涨趋势形成买多。 1、MACD双均线在横轴线之上,是多头上涨,

自适应均线的源代码以及改良

自适应均线的源代码以及改良

自适应均线的源代码以及改良根据考夫曼的自适应均线原理,利用文华财经编了一下,还是不错的,现把源代码公布出来给大家参考。

交易指标即自适应均线的源代码,我根据指标改良了一下交易系统,考夫曼原来是采用均线值的变化率发出买卖信号,我觉得不是很好,就用最高最低价构建了一个智能均线带,采用最低最高价突破来发出信号,大家一起探讨阿。

交易指标:DIRECTION:=CLOSE-REF(CLOSE,N);VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);ER:=ABS(DIRECTION/VOLATILITY);FASTSC:=2/(2 + 1);SLOWSC:=2/(30 + 1);SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;CONSTANT:=SSC*SSC;AMAHIGH:REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1));AMALOW:REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1));交易模型:DIRECTION:=CLOSE-REF(CLOSE,N);VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),N);ER:=ABS(DIRECTION/VOLATILITY);FASTSC:=2/(2 + 1);SLOWSC:=2/(30 + 1);SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;CONSTANT:=SSC*SSC;AMAHIGH:=REF(EMA(HIGH,N),1)+CONSTANT*(HIGH- REF(EMA(HIGH,N),1));AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));AMALOW:=REF(EMA(LOW,N),1)+CONSTANT*(LOW- REF(EMA(LOW,N),1));LOW>AMAHIGH,BK;CLOSE<AMACLOSE,SP;HIGH<AMALOW,SK;CLOSE>AMACLOSE,BP;AMACLOSE:=REF(EMA(CLOSE,N),1)+CONSTANT*(CLOSE- REF(EMA(CLOSE,N),1));这还不是原书中定义的自适应均线。

通达信变色双均线主图源码通达信指标源码

通达信变色双均线主图源码通达信指标源码

{P1:1 100 10 P2: 1 100 20}DRAWGBK(C>0, RGB(0,10,10),RGB(88,0,0),0,'11',0);DRAWNUMBER(ISLASTBAR,C,C),COLORMAGENTA;N8:=STRCAT(CON2STR(YEAR,0),' 年');Y8:=STRCAT(CON2STR(MONTH,0),' 月');R8:=STRCAT(CON2STR(DAY,0),' 日');MAR1:=MA(CLOSE,P1);C1:=C>=MAR1;C2:=C<MAR1;AA:=C1>=C2;BB:=C2>C1;STICKLINE(AA,C,O,3,0),COLORRED;STICKLINE(AA,H,L,0,0),COLORRED;STICKLINE(BB,C,O,3,0),COLOR00FF00;STICKLINE(BB,H,L,0,0),COLOR00FF00;STICKLINE(AA,CLOSE,OPEN,3,0),COLOR000099;STICKLINE(AA,CLOSE,OPEN,2.2,0),COLOR0000CC;STICKLINE(AA,CLOSE,OPEN,1.5,0),COLOR0000FF;STICKLINE(AA,CLOSE,OPEN,0.5,0),COLORCC66FF;STICKLINE(BB,CLOSE,OPEN,3,0),COLORFF7700;STICKLINE(BB,CLOSE,OPEN,2.2,0),COLORFF9900;STICKLINE(BB,CLOSE,OPEN,1.5,0),COLORFFBB00;STICKLINE(BB,CLOSE,OPEN,0.5,0),COLORCYAN;MAA:MAR1,COLOR00FF00,LINETHICK2;IF(MAA>=REF(MAA,1),MAA,DRAWNULL),COLORRED,LINETHICK2;IF(MAA<REF(MAA,1),MAA,DRAWNULL),COLORFFFFFF,LINETHICK2;MAB:MA(CLOSE,P2),COLOR00FF00,LINETHICK2;IF(MAB>=REF(MAB,1),MAB,DRAWNULL),COLORMAGENTA,LINETHICK2;IF(MAB<REF(MAB,1),MAB,DRAWNULL),COLORGREEN,LINETHICK2;SJ8:=STRCAT(STRCAT(N8,Y8), R8);VAR2:=(2*CLOSE+HIGH+LOW)/4;VAR3:=IF(YEAR>=2099 AND MONTH>2,0,1);VAR4:=LLV(LOW,5);VAR5:=HHV(HIGH,4);VAR6:=EMA((VAR2-VAR4)/(VAR5-VAR4)*100,4)*VAR3;VAR7:=EMA(0.667*REF(VAR6,1)+0.333* VAR6,2)*VAR3;DRAWTEXT(CROSS(VAR6, VAR7) AND VAR6<30,L-0.05,'←低吸'),COLOR00FFFF; DRAWTEXT(CROSS(VAR7, VAR6) AND VAR6>70,H+0.05,'←高抛'),COLOR00FFFF;DRAWICON(CROSS(VAR6, VAR7) AND VAR6<30,L-0.05,13);DRAWICON(CROSS(VAR7, VAR6) AND VAR6>70,H+0.05,14);AAA:= MAA>=REF(MAA,1);{C>=MAA;}BBB:= MAA<REF(MAA,1);{ C<MAA;}DDD:=MAB>=REF(MAB,1);EEE:=MAB<REF(MAB,1);TT:=IF(ISLASTBAR,240/FROMOPEN,1);NN:=120;HH:=HHV(V*TT,NN);LL:=LLV(V,NN);最高:=CONST(HH);最低:=CONST(LL);最高2:=CONST(HHV(H,NN));最低2:=CONST(LLV(L,NN));PP:=IF((最高2*0.9-(最高2-最低2)*0.5)>CONST(LLV(L,20)),0.9,IF((最高2*0.9-(最高2-最低2)*0.5)>CONST(LLV(L,50)),0.7,0.6)),NODRAW;RCC1:=最高2*0.9-(最高2-最低2)*PP;最低3:=MIN(RCC1,最低2);AA1:=最低3;STICKLINE(AAA,AA1-0.000*AA1,AA1-0.040*AA1,4,0),COLOR0000FF;STICKLINE(BBB,AA1-0.000*AA1,AA1-0.040*AA1,4,1),COLOR686868;STICKLINE(EEE,AA1-0.050*AA1,AA1-0.090*AA1,4,1),COLOR686868;STICKLINE(DDD,AA1-0.050*AA1,AA1-0.090*AA1,4,0),COLORFF00FF;DRAWTEXT_FIX(C>0,0.5,0,0,SJ8),COLOR00FFFF;DRAWTEXT_FIX(1,0.5,0.84,0,'★★A-红色均线持股★★B-粉色均线持股★★'),COLOR00FFFF;今日保护价:(REF(C,2)+REF(C,1)+O)/3,COLOR00FFFF,NODRAW;顶点:IF(CURRBARSCOUNT<=60,CONST(IF(ISLASTBAR=1,HHV(H,BARSLAST(CURRBARSCO UNT=60)),1)),DRAWNULL),COLORRED,DOTLINE;低点:IF(CURRBARSCOUNT<=60,CONST(IF(ISLASTBAR=1,LLV(L,BARSLAST(CURRBARSCOU NT=60)),1)),DRAWNULL),COLORMAGENTA,DOTLINE;STICKLINE(CCI>=200 AND H>=顶点,O,C,3,0),COLORBLUE;STICKLINE(CCI<=100 AND L<=低点,O,C,3,0),COLORYELLOW;DRAWTEXT(ISLASTBAR,顶点,'顶点'),COLORRED;DRAWTEXT(ISLASTBAR,低点,'低点'),COLORMAGENTA;。

双均画线通达信指标公式源码

双均画线通达信指标公式源码

出现连续阳线一般是多方所为,在上一次连续阳线出现后我们在它的实体平均价格画一条黄色水平线,在它的成交额/成交量/100(均价)的平均价画一条洋红色水平线,看看多方在上次进攻中的成本在哪个位置?因为有画线,所以必须要到画线未来函数,而我的画线没画历史画线,只考虑最后一次的成本价位。

比如;两连阳就取最后一次两根阳线的实体高低点进行平分画线。

八连阳就取八根K线的均价画线到今天。

源码提供方便大家自行设置预警。

既然预警画线未来函数就无所谓了。

双均画线主图
JJ:=AMOUNT/VOL/100;
VAR0:=BARSLASTCOUNT(C>O);
T:=BARSLAST(CROSS(VAR0=1 AND REFX(VAR0=2,1),0.5));
VAR2:=IF(ISLASTBAR,VAR0>1,VAR0>1 AND REFX(C<=O,1));
T2:=BARSLAST(VAR2);
中间价:CONST((REF(HHV(C,T+1),T2)+REF(LLV(O,T+1),T2))/2),NODRAW;
中间均价:CONST(REF(SUM(JJ,T+1)/(T+1),T2)),NODRAW;
IF(CURRBARSCOUNT<=CONST(T)+1,中间价,DRAWNULL),COLORYELLOW;
IF(CURRBARSCOUNT<=CONST(T)+1,中间均价,DRAWNULL),COLORMAGENTA;。

双均线模型

双均线模型

ParamsNumeric Length1(10);Numeric Length2(20);Numeric Lots(1);Numeric TrailingStop(1); // 跟踪止损百分比Numeric BarsReEntry(5); // 出场后趋势维持多少根Bar后再进场VarsNumericSeries MA1;NumericSeries MA2;BoolSeries condBuy(false);BoolSeries condSell(false);Numeric MinPoint;Numeric MyExitPrice;NumericSeries HigherAfterEntry;NumericSeries LowerAfterEntry;Numeric StopLine(0);BoolSeries bLongStoped(false);BoolSeries bShortStoped(false);Numeric BarsAfterLongExit(0);Numeric BarsAfterShortExit(0);Begin/*if (BarStatus > 0) // V4中可以省略的序列变量传递部分{bLongStoped = bLongStoped[1];bShortStoped = bShortStoped[1];}*/Commentary("bLongStoped="+IIFString(bLongStoped,"true","false"));Commentary("bShortStoped="+IIFString(bShortStoped,"true","false"));if (BarsSinceEntry == 1){HigherAfterEntry = AvgEntryPrice;LowerAfterEntry = AvgEntryPrice;} Else If(BarsSinceEntry > 1){HigherAfterEntry = Max(HigherAfterEntry[1],High[1]);LowerAfterEntry = Min(LowerAfterEntry[1],Low[1]);}Else{HigherAfterEntry = HigherAfterEntry[1];LowerAfterEntry = LowerAfterEntry[1];}MA1 = AverageFC(Close,Length1);MA2 = AverageFC(Close,Length2);PlotNumeric("MA1",MA1);PlotNumeric("MA2",MA2);condBuy = CrossOver(MA1,MA2);condSell = CrossUnder(MA1,MA2);if ( condBuy == false and condSell == false ){condBuy = condBuy[1];condSell = condSell[1];}If ( MarketPosition <> 1 and condBuy[1] == true and bLongStoped == false) {Buy(Lots,Open);HigherAfterEntry = Open;bLongStoped = false;bShortStoped = false;}If ( MarKetPosition <>-1 and condSell[1] == true and bShortStoped == false) {SellShort(lots,Open);LowerAfterEntry = Open;bLongStoped = false;bShortStoped = false;}BarsAfterLongExit = NthCon(!bLongStoped,1);Commentary("BarsAfterLongExit="+text(BarsAfterLongExit));If(bLongStoped and MarketPosition == 0 and condBuy[1] == true and BarsAfterLongExit >= BarsReEntry){Buy(Lots,Open);bLongStoped = False;HigherAfterEntry = Open;Return;}BarsAfterShortExit = NthCon(!bShortStoped,1);Commentary("BarsAfterShortExit="+text(BarsAfterShortExit));If(bShortStoped and MarketPosition == 0 and condSell[1] == true and BarsAfterShortExit >= BarsReEntry){SellShort(Lots,Open);bShortStoped = False;LowerAfterEntry = Open;Return;}MinPoint = MinMove * PriceScale;If(MarketPosition==1){StopLine = HigherAfterEntry * (1 - TrailingStop * 0.01);If(Low <= StopLine){MyExitPrice = StopLine - MinPoint;If(Open < MyExitPrice) MyExitPrice = Open;Sell(0,MyExitPrice);bLongStoped = true;}}Else If(MarketPosition==-1){StopLine = LowerAfterEntry * ( 1 + TrailingStop * 0.01);If(High >= StopLine){MyExitPrice = StopLine + MinPoint;If(Open > MyExitPrice) MyExitPrice = Open;BuyToCover(0,MyExitPrice);bShortStoped = true;}}End。

双均线交系统EA模板,非常好用

双均线交系统EA模板,非常好用

双均线交系统EA模板,非常好用双均线交系统EA模板#define MAGICMA 123 //订单标记数//--- Inputsinput string 仓位设置="";input double Lots =0.01;input string 风险系数="";input double MaximumRisk =0.002;//风险系数input double DecreaseFactor=3;input string 均线参数=" ";input int Ma1 =8;input int Ma2 =24;//均线的参数//+------------------------------------------------------------------+//| Calculate open positions |//+------------------------------------------------------------------+int CalculateCurrentOrders(string symbol) //计算指定商品的持仓数,查询账户状态函数{int buys=0,sells=0;//---for(int i=0;i<="" p="">{if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)//判断当前持仓单是否是当前商品的,及持仓单的序号是否为MAGICMA{if(OrderType()==OP_BUY) buys++; //如果是多单,则多单个数+1if(OrderType()==OP_SELL) sells++;}}//--- return orders volumeif(buys>0) return(buys);else return(sells);}//+------------------------------------------------------------------+//| Calculate optimal lot size |//+------------------------------------------------------------------+double LotsOptimized() //计算当前入场的手数,根据资金管理确定{double lot=Lots;int orders=HistoryTotal(); // history orders totalint losses=0; // 亏损订单变量number of losses orders without a break//--- select lot sizelot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/ 1000.0,1);//按照风险比例得出的下单数量,AccountFreeMargin账户资金的保证金//--- calcuulate number of losses orders without a breakif(DecreaseFactor>0){for(int i=orders-1;i>=0;i--)//如果历时订单-1后还大于0执行循环{if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)//S ELECT_BY_POS,MOD订单类型为开单和挂单,MODE_HISTORY来自历史的定单(平仓和取消定单)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

系统是个常见的交易系统,这里给出例子,目的在于告诉大家交易系统编码,设计需要考虑的问题,和注意点。

交易规则:
如果短期均线上穿长期均线,做多,如原来持有空单,则先平空单,再建多仓
如果短期均线下穿长期均线,做空,如原来持有多单,则先平多单,再建空单
短周期:10
长周期:20
交易头寸暂为1手
出场部分设计
我们使用三种类型的止损设置:
进场后设置初始止损;
有一定盈利后设置保本止损;
盈利增大后使用追踪止盈(峰值价回落ATR倍数);
为此,设置三个止损参数:
Numeric InitialStop(20); // 初始止损(千分之N)
Numeric BreakEvenStop(30); // 保本止损(千分之N)
Numeric TrailingStop(50); // 追踪止损(千分之N)
三种止损的代码可以放在一起处理,取最有利的价格作为止损(赢)价。

多头止损部分的代码
// 初始止损
StopLine = EntryPrice * (1-InitialStop/1000);
// 达到保本止损条件,将止损位上移到保本的价位
If (HigherAfterEntry >= EntryPrice * (1+BreakEvenStop/1000))
StopLine = EntryPrice;
// 追踪止损的价位超过保本止损价,止损价随盈利峰值价的上升同步提高
If (StopLine < HigherAfterEntry*(1-TrailingStop/1000))
StopLine = HigherAfterEntry*(1-TrailingStop/1000);
Commentary("止损价:"+Text(StopLine));
// 止损触发
If(Low <= StopLine)
{
MyPrice = StopLine;
If(Open < MyPrice) MyPrice = Open;
Sell(Lots,MyPrice);
bLongStoped = True; // 止损后设置标志
Commentary("Long Position Stoped at "+text(MyPrice));
}
其他规则
其他策略和例子1相同:
采用多空模型分开设计;
再进场必须行情再创新高(低);
过滤集合竞价数据
止损处理的细节
无论初次进场还是再次进场,进场后都是把进场价作为开仓后的盈利最高价或最低价。

两者的区别之处在于:
初次进场,因为是开盘价进场,可以在开仓Bar实现止损;
而再次入场,因为在历史K线中,无法确定入场点和最高价最低价在时间次序上的关系,从而无法实现在开仓BAR的止损。

因此,必须在记录开仓后最高和最低后,加上Return指令,从而忽略掉后面的止损部分公式。

相关文档
最新文档