乐于分享
好东西不私藏

一个手单交易的 “作弊神器” EA源码分享

一个手单交易的 “作弊神器” EA源码分享
大家好!休息这么久哥终于回归了!
没有浪哥陪你们的日子过的怎么样,交易水平有没有提升呢?
浪哥一直说,交易这事,不用搞得太复杂。找对工具,有时候比瞎努力管用多了。所以今天给大家分享的是一个短线的神器,也是浪哥实打实测了将近一个月才敢拿来给大家分享的!说实话,虽然浪哥是个老鸟,但是它给的信号,可比自己瞎猜、乱复盘靠谱多了。尤其是适合新手!
还有两个点,我个人特别喜欢。
一是它自带双EMA平滑,信号不会滞后,既能灵敏捕捉到行情反转,又能在一定程度上避免被震荡行情骗单;二是区间划分得清清楚楚,-100到+100的范围,超买超卖一眼就能看清,尤其是50、0轴这两个关键位,做多还是做空,边界明明白白,不用瞎琢磨。
当然,我也不吹它多神。它不适合极端单边行情,要是搭配主图的趋势指标再过滤一下,效果能直接拉满。想要趋势指标的可以私浪哥,浪哥单独发给你们。
源码浪哥放下面了,如果不会解析的直接联系浪哥。
//+------------------------------------------------------------------+//|                                                 3D Oscillator.mq4|//|                                                                  |//|                                                                  |//+------------------------------------------------------------------+#property copyright "Author - Luis Damiani. Ramdass - Conversion only"#property indicator_separate_window#property indicator_buffers 4#property indicator_color1 Lime#property indicator_width1  3#property indicator_color2 Red#property indicator_width2  3#property indicator_color3 Lime#property indicator_width3  3#property indicator_color4 Red#property indicator_width4  3// Add levels to the indicator#property indicator_level1 0#property indicator_levelcolor clrRed#property indicator_width1 2#property indicator_level2 50#property indicator_level3 -50#property indicator_level4 100#property indicator_level5 -100//---- input parametersextern int D1RSIPer = 13;extern int D2StochPer = 8;extern int D3tunnelPer = 8;extern double hot = 0.4;extern int sigsmooth = 4;//---- buffersdouble sig1n[];double sig2n[];double upX[], dnX[];//+------------------------------------------------------------------+//| Custom indicator initialization function                         |//+------------------------------------------------------------------+intinit() {    string short_name;    //---- indicator line    SetIndexStyle(0, DRAW_LINE);    SetIndexStyle(1, DRAW_LINE);    SetIndexBuffer(0, sig1n);    SetIndexBuffer(1, sig2n);    SetIndexStyle(2, DRAW_ARROW);    SetIndexArrow(2159);    SetIndexBuffer(2, upX);    SetIndexStyle(3, DRAW_ARROW);    SetIndexArrow(3159);    SetIndexBuffer(3, dnX);    //----    SetIndexDrawBegin(0, D1RSIPer + D2StochPer + D3tunnelPer + hot + sigsmooth);    SetIndexDrawBegin(1, D1RSIPer + D2StochPer + D3tunnelPer + hot + sigsmooth);    SetIndexDrawBegin(2, D1RSIPer + D2StochPer + D3tunnelPer + hot + sigsmooth);    SetIndexDrawBegin(3, D1RSIPer + D2StochPer + D3tunnelPer + hot + sigsmooth);    //----    return (0);}//+------------------------------------------------------------------+//| 3D Oscillator                                                     |//+------------------------------------------------------------------+intstart() {    int i, i2, counted_bars = IndicatorCounted();    double rsi, maxrsi, minrsi, storsi, E3D, sig1, sig2, sk, ss, sk2;    double cs;    bool init = true;    //----    cs = D1RSIPer + D2StochPer + D3tunnelPer + hot + sigsmooth;    if (Bars <= cs) return (0);    ss = sigsmooth;    if (ss < 2) ss = 2;    sk = 2 / (ss + 1);    sk2 = 2 / (ss * 0.8 + 1);    init = false;    //---- initial zero    if (counted_bars < 1) {        for (i = 1; i <= cs; i++) sig1n[Bars - i] = 0.0;        for (i = 1; i <= cs; i++) sig2n[Bars - i] = 0.0;        for (i = 1; i <= cs; i++) upX[Bars - i] = 0.0;        for (i = 1; i <= cs; i++) dnX[Bars - i] = 0.0;    }    i = Bars - cs - 1;    if (counted_bars >= cs) i = 300;    while (i >= 0) {        rsi = iRSI(NULL, 0, D1RSIPer, PRICE_CLOSE, i);        maxrsi = rsi;        minrsi = rsi;        for (i2 = i + D2StochPer; i2 >= i; i2--) {            rsi = iRSI(NULL, 0, D1RSIPer, PRICE_CLOSE, i2);            if (rsi > maxrsi) maxrsi = rsi;            if (rsi < minrsi) minrsi = rsi;        }        storsi = ((rsi - minrsi) / (maxrsi - minrsi) * 200 - 100);        E3D = hot * iCCI(NULL, 0, D3tunnelPer, PRICE_TYPICAL, i) + (1 - hot) * storsi;        sig1n[i] = sk * E3D + (1 - sk) * sig1;        sig2n[i] = sk2 * sig1 + (1 - sk2) * sig2;        sig1 = sig1n[i];        sig2 = sig2n[i];        if (sig1n[i] > sig2n[i] && sig1n[i + 1] < sig2n[i + 1]) upX[i] = sig2n[i] - 15;        if (sig1n[i] < sig2n[i] && sig1n[i + 1] > sig2n[i + 1]) dnX[i] = sig2n[i] + 15;        i--;    }    return (0);}//+------------------------------------------------------------------+