📅 财经日历 📊 实时波动 📈 大盘云图 📶 行情走势 🆚 投机情绪 🚀 今日热点

    求EA高手帮提取个脚本

    淘客 LV16
    2013-10-01 · 12270 阅读
    1. #property copyright "MDP"
    2. #property link      ""
    3. #property show_inputs

    4. //#include <stdlib.mqh>
    5. #import "stdlib.ex4"
    6.    string ErrorDescription(int a0);

    7. #import

    8. extern string Configuration = "==== Configuration ====";
    9. extern int Magic = 0;
    10. extern string OrderCmt = "";
    11. extern string Suffix = "";
    12. extern bool NDDmode = FALSE;
    13. extern bool Show_Debug = FALSE;
    14. extern bool Verbose = FALSE;
    15. extern string TradingSettings = "==== Trade settings ====";
    16. extern bool TradeALLCurrencyPairs = FALSE;
    17. extern double MaxSpread = 26.0;
    18. extern double TakeProfit = 5.0;
    19. extern double StopLoss = 30.0;
    20. extern double TrailingStart = 0.0;
    21. extern double Commission = 7.0;
    22. extern bool UseDynamicVolatilityLimit = TRUE;
    23. extern double VolatilityMultiplier = 125.0;
    24. extern double VolatilityLimit = 180.0;
    25. extern bool UseVolatilityPercentage = TRUE;
    26. extern double VolatilityPercentageLimit = 60.0;
    27. extern bool UseMovingAverage = TRUE;
    28. extern bool UseBollingerBands = TRUE;
    29. extern double Deviation = 1.5;
    30. extern int OrderExpireSeconds = 3600;
    31. extern string Money_Management = "==== Money Management ====";
    32. extern double MinLots = 0.01;
    33. extern double MaxLots = 1000.0;
    34. extern double Risk = 2.0;
    35. extern string Screen_Shooter = "==== Screen Shooter ====";
    36. extern bool TakeShots = FALSE;
    37. extern int DelayTicks = 1;
    38. extern int ShotsPerBar = 1;
    39. string gsa_272[26] = {"EURUSD", "USDJPY", "GBPUSD", "USDCHF", "USDCAD", "AUDUSD", "NZDUSD", "EURJPY", "GBPJPY", "CHFJPY", "CADJPY", "AUDJPY", "NZDJPY", "EURCHF", "EURGBP", "EURCAD", "EURAUD",
    40.       "EURNZD", "GBPCHF", "GBPAUD", "GBPCAD", "GBPNZD", "AUDCHF", "AUDCAD", "AUDNZD", "NZDCHF",
    41.    "NZDCAD", "CADCHF"};
    42. string gsa_276[];
    43. bool gi_unused_284 = FALSE;
    44. bool gi_288 = TRUE;
    45. bool gi_292 = FALSE;
    46. int g_period_296 = 3;
    47. int gi_300 = 0;
    48. int g_digits_304 = 0;
    49. int g_slippage_308 = 3;
    50. int gia_312[30];
    51. int gi_316 = 0;
    52. int g_time_320 = 0;
    53. int g_count_324 = 0;
    54. int gi_328 = 0;
    55. int gi_332 = 0;
    56. int gi_336 = 0;
    57. double g_pips_340 = 0.0;
    58. double gd_unused_348 = 0.0;
    59. double g_lots_356 = 0.1;
    60. double gd_unused_364 = 0.4;
    61. double gd_372 = 1.0;
    62. double g_pips_380 = 5.0;
    63. double g_pips_388 = 10.0;
    64. double g_pips_396 = 20.0;
    65. double gda_404[30];
    66. double gda_408[30];
    67. double gda_412[30];
    68. double gd_416;
    69. double gd_424;
    70. int gi_440;
    71. int gi_444 = -1;
    72. int gi_448 = 3000000;
    73. int gi_452 = 0;

    74. int init() {
    75.    VolatilityPercentageLimit = VolatilityPercentageLimit / 100.0 + 1.0;
    76.    VolatilityMultiplier /= 10.0;
    77.    ArrayInitialize(gda_412, 0);
    78.    VolatilityLimit *= Point;
    79.    Commission = f0_12(Commission * Point);
    80.    g_digits_304 = Digits;
    81.    int li_0 = MathMax(MarketInfo(Symbol(), MODE_FREEZELEVEL), MarketInfo(Symbol(), MODE_STOPLEVEL));
    82.    if (TakeProfit < li_0) TakeProfit = li_0;
    83.    if (StopLoss < li_0) StopLoss = li_0;
    84.    if (gi_300 < li_0) gi_300 = li_0;
    85.    if (MathMod(Digits, 2) == 0.0) g_slippage_308 = 0;
    86.    else gi_316 = -1;
    87.    if (MaxLots > MarketInfo(Symbol(), MODE_MAXLOT)) MaxLots = MarketInfo(Symbol(), MODE_MAXLOT);
    88.    if (MinLots < MarketInfo(Symbol(), MODE_MINLOT)) MinLots = MarketInfo(Symbol(), MODE_MINLOT);
    89.    if (TradeALLCurrencyPairs == TRUE) f0_6();
    90.    if (Magic < 0) f0_13();
    91.    start();
    92.    return (0);
    93. }

    94. int deinit() {
    95.    return (0);
    96. }

    97. int start() {
    98.    if (g_digits_304 == 0) return (init());
    99.    f0_1(gda_404, gda_408, gia_312, gd_372);
    100.    f0_8();
    101.    return (0);
    102. }

    103. void f0_8() {
    104.    string ls_0;
    105.    string symbol_8;
    106.    bool bool_16;
    107.    bool li_20;
    108.    int li_unused_24;
    109.    bool li_28;
    110.    int li_32;
    111.    int li_unused_36;
    112.    int ticket_40;
    113.    int datetime_44;
    114.    int li_48;
    115.    int li_52;
    116.    int li_56;
    117.    int pos_60;
    118.    int li_68;
    119.    int index_72;
    120.    int count_76;
    121.    double price_84;
    122.    double price_92;
    123.    double ld_100;
    124.    double ld_108;
    125.    double ld_116;
    126.    double ld_124;
    127.    double order_stoploss_140;
    128.    double order_takeprofit_148;
    129.    double ld_156;
    130.    double ihigh_164;
    131.    double ilow_172;
    132.    double ld_180;
    133.    double ld_188;
    134.    double ld_196;
    135.    double ibands_204;
    136.    double ibands_212;
    137.    double ld_220;
    138.    double ld_228;
    139.    double ld_236;
    140.    double ld_244;
    141.    double ld_252;
    142.    double ld_260;
    143.    double ld_268;
    144.    double ld_276;
    145.    double ld_284;
    146.    double ld_292;
    147.    if (g_time_320 < Time[0]) {
    148.       g_time_320 = Time[0];
    149.       g_count_324 = 0;
    150.    } else g_count_324++;
    151.    if (TradeALLCurrencyPairs == FALSE) {
    152.       gi_336 = 1;
    153.       symbol_8 = Symbol();
    154.    }
    155.    for (int count_80 = 0; count_80 != gi_336; count_80++) {
    156.       symbol_8 = gsa_276[index_72];
    157.       ihigh_164 = iHigh(symbol_8, PERIOD_M1, 0);
    158.       ilow_172 = iLow(symbol_8, PERIOD_M1, 0);
    159.       ld_228 = ihigh_164 - ilow_172;
    160.       ld_180 = iMA(symbol_8, PERIOD_M1, g_period_296, 0, MODE_LWMA, PRICE_LOW, 0);
    161.       ld_188 = iMA(symbol_8, PERIOD_M1, g_period_296, 0, MODE_LWMA, PRICE_HIGH, 0);
    162.       ld_196 = ld_188 - ld_180;
    163.       li_28 = Bid >= ld_180 + ld_196 / 2.0;
    164.       ibands_204 = iBands(symbol_8, PERIOD_M1, g_period_296, Deviation, 0, PRICE_OPEN, MODE_UPPER, 0);
    165.       ibands_212 = iBands(symbol_8, PERIOD_M1, g_period_296, Deviation, 0, PRICE_OPEN, MODE_LOWER, 0);
    166.       ld_220 = ibands_204 - ibands_212;
    167.       li_32 = Bid >= ibands_212 + ld_220 / 2.0;
    168.       li_unused_36 = 0;
    169.       if (UseMovingAverage == FALSE && UseBollingerBands == TRUE && li_32 == 1) {
    170.          li_unused_36 = 1;
    171.          gd_416 = ibands_204;
    172.          gd_424 = ibands_212;
    173.       } else {
    174.          if (UseMovingAverage == TRUE && UseBollingerBands == FALSE && li_28 == 1) {
    175.             li_unused_36 = 1;
    176.             gd_416 = ld_188;
    177.             gd_424 = ld_180;
    178.          } else {
    179.             if (UseMovingAverage == TRUE && UseBollingerBands == TRUE && li_28 == 1 && li_32 == 1) {
    180.                li_unused_36 = 1;
    181.                gd_416 = MathMax(ibands_204, ld_188);
    182.                gd_424 = MathMin(ibands_212, ld_180);
    183.             }
    184.          }
    185.       }
    186.       ld_236 = MathMax(MarketInfo(symbol_8, MODE_FREEZELEVEL), MarketInfo(symbol_8, MODE_STOPLEVEL)) * Point;
    187.       ld_244 = Ask - Bid;
    188.       if (ld_236 > 1.0 * Point) {
    189.          li_20 = FALSE;
    190.          ld_108 = MaxSpread * Point;
    191.          ld_252 = g_pips_388 * Point;
    192.          ld_116 = g_pips_380 * Point;
    193.       } else {
    194.          li_20 = TRUE;
    195.          ld_108 = g_pips_396 * Point;
    196.          ld_252 = g_pips_340 * Point;
    197.          ld_116 = TrailingStart * Point;
    198.       }
    199.       ld_108 = MathMax(ld_108, ld_236);
    200.       if (li_20) ld_252 = MathMax(ld_252, ld_236);
    201.       ArrayCopy(gda_412, gda_412, 0, 1, 29);
    202.       gda_412[29] = ld_244;
    203.       if (gi_328 < 30) gi_328++;
    204.       ld_260 = 0;
    205.       pos_60 = 29;
    206.       for (int count_64 = 0; count_64 < gi_328; count_64++) {
    207.          ld_260 += gda_412[pos_60];
    208.          pos_60--;
    209.       }
    210.       ld_268 = ld_260 / gi_328;
    211.       ld_276 = f0_12(Ask + Commission);
    212.       ld_284 = f0_12(Bid - Commission);
    213.       ld_292 = ld_268 + Commission;
    214.       if (UseDynamicVolatilityLimit == TRUE) VolatilityLimit = ld_292 * VolatilityMultiplier;
    215.       li_68 = 0;
    216.       if (ld_228 && VolatilityLimit && gd_424 && gd_416) {
    217.          if (ld_228 > VolatilityLimit) {
    218.             ld_100 = ld_228 / VolatilityLimit;
    219.             if (UseVolatilityPercentage == FALSE || (UseVolatilityPercentage == TRUE && ld_100 > VolatilityPercentageLimit)) {
    220.                if (Bid < gd_424) li_68 = -1;
    221.                else
    222.                   if (Bid > gd_416) li_68 = 1;
    223.             }
    224.          } else ld_100 = 0;
    225.       }
    226.       ld_124 = MathMax(ld_236, ld_124);
    227.       if (Bid == 0.0 || MarketInfo(symbol_8, MODE_LOTSIZE) == 0.0) ld_124 = 0;
    228.       datetime_44 = TimeCurrent() + OrderExpireSeconds;
    229.       if (MarketInfo(symbol_8, MODE_LOTSTEP) == 0.0) li_48 = 5;
    230.       else li_48 = f0_3(0.1, MarketInfo(symbol_8, MODE_LOTSTEP));
    231.       if (Risk < 0.001 || Risk > 100.0) {
    232.          Comment("ERROR -- Invalid Risk Value.");
    233.          return;
    234.       }
    235.       if (AccountBalance() <= 0.0) {
    236.          Comment("ERROR -- Account Balance is " + DoubleToStr(MathRound(AccountBalance()), 0));
    237.          return;
    238.       }
    239.       g_lots_356 = f0_10(symbol_8);
    240.       index_72 = 0;
    241.       count_76 = 0;
    242.       for (pos_60 = 0; pos_60 < OrdersTotal(); pos_60++) {
    243.          OrderSelect(pos_60, SELECT_BY_POS, MODE_TRADES);
    244.          if (OrderMagicNumber() == Magic && OrderCloseTime() == 0) {
    245.             if (OrderSymbol() != symbol_8) {
    246.                count_76++;
    247.                continue;
    248.             }
    249.             switch (OrderType()) {
    250.             case OP_BUY:
    251.                if (gi_288) {
    252.                   order_stoploss_140 = OrderStopLoss();
    253.                   order_takeprofit_148 = OrderTakeProfit();
    254.                   if ((order_takeprofit_148 < f0_12(ld_276 + ld_108) && ld_276 + ld_108 - order_takeprofit_148 > ld_116)) {
    255.                      order_stoploss_140 = f0_12(Bid - ld_108);
    256.                      order_takeprofit_148 = f0_12(ld_276 + ld_108);
    257.                      gi_332 = GetTickCount();
    258.                      bool_16 = OrderModify(OrderTicket(), 0, order_stoploss_140, order_takeprofit_148, datetime_44, Lime);
    259.                      gi_332 = GetTickCount() - gi_332;
    260.                      if (bool_16 > FALSE && TakeShots && (!IsTesting()) && (!gi_292)) f0_7();
    261.                   }
    262.                }
    263.                index_72++;
    264.                continue;
    265.                break;
    266.             case OP_SELL:
    267.                if (gi_288) {
    268.                   order_stoploss_140 = OrderStopLoss();
    269.                   order_takeprofit_148 = OrderTakeProfit();
    270.                   if ((order_takeprofit_148 > f0_12(ld_284 - ld_108) && order_takeprofit_148 - ld_284 + ld_108 > ld_116)) {
    271.                      order_stoploss_140 = f0_12(Ask + ld_108);
    272.                      order_takeprofit_148 = f0_12(ld_284 - ld_108);
    273.                      gi_332 = GetTickCount();
    274.                      bool_16 = OrderModify(OrderTicket(), 0, order_stoploss_140, order_takeprofit_148, datetime_44, Orange);
    275.                      gi_332 = GetTickCount() - gi_332;
    276.                      if (bool_16 > FALSE && TakeShots && (!IsTesting()) && (!gi_292)) f0_7();
    277.                   }
    278.                }
    279.                index_72++;
    280.                continue;
    281.                break;
    282.             case OP_BUYSTOP:
    283.                if (!li_28) {
    284.                   ld_156 = OrderTakeProfit() - OrderOpenPrice() - Commission;
    285.                   if ((f0_12(Ask + ld_252) < OrderOpenPrice() && OrderOpenPrice() - Ask - ld_252 > ld_116)) {
    286.                      gi_332 = GetTickCount();
    287.                      bool_16 = OrderModify(OrderTicket(), f0_12(Ask + ld_252), f0_12(Bid + ld_252 - ld_156), f0_12(ld_276 + ld_252 + ld_156), 0, Lime);
    288.                      gi_332 = GetTickCount() - gi_332;
    289.                   }
    290.                   index_72++;
    291.                   continue;
    292.                }
    293.                OrderDelete(OrderTicket());
    294.                continue;
    295.                break;
    296.             case OP_SELLSTOP: break;
    297.             }
    298.             if (li_28) {
    299.                ld_156 = OrderOpenPrice() - OrderTakeProfit() - Commission;
    300.                if ((f0_12(Bid - ld_252) > OrderOpenPrice() && Bid - ld_252 - OrderOpenPrice() > ld_116)) {
    301.                   gi_332 = GetTickCount();
    302.                   bool_16 = OrderModify(OrderTicket(), f0_12(Bid - ld_252), f0_12(Ask - ld_252 + ld_156), f0_12(ld_284 - ld_252 - ld_156), 0, Orange);
    303.                   gi_332 = GetTickCount() - gi_332;
    304.                }
    305.                index_72++;
    306.                continue;
    307.             }
    308.             OrderDelete(OrderTicket());
    309.          }
    310.       }
    311.       li_unused_24 = 0;
    312.       if (gi_316 >= 0 || gi_316 == -2) {
    313.          li_52 = NormalizeDouble(Bid / Point, 0);
    314.          li_56 = NormalizeDouble(Ask / Point, 0);
    315.          if (li_52 % 10 != 0 || li_56 % 10 != 0) gi_316 = -1;
    316.          else {
    317.             if (gi_316 >= 0 && gi_316 < 10) gi_316++;
    318.             else gi_316 = -2;
    319.          }
    320.       }
    321.       if (index_72 == 0 && li_68 != 0 && f0_12(ld_292) <= f0_12(MaxSpread * Point) && gi_316 == -1) {
    322.          if (li_68 < 0) {
    323.             gi_332 = GetTickCount();
    324.             if (li_20) {
    325.                price_84 = Ask + gi_300 * Point;
    326.                if (NDDmode) {
    327.                   ticket_40 = OrderSend(symbol_8, OP_BUYSTOP, g_lots_356, price_84, g_slippage_308, 0, 0, OrderCmt, Magic, 0, Lime);
    328.                   if (OrderSelect(ticket_40, SELECT_BY_TICKET)) OrderModify(OrderTicket(), OrderOpenPrice(), price_84 - StopLoss * Point, price_84 + TakeProfit * Point, datetime_44, Lime);
    329.                } else {
    330.                   ticket_40 = OrderSend(symbol_8, OP_BUYSTOP, g_lots_356, price_84, g_slippage_308, price_84 - StopLoss * Point, price_84 + TakeProfit * Point, OrderCmt, Magic, datetime_44,
    331.                      Lime);
    332.                }
    333.                if (ticket_40 < 0) {
    334.                   li_unused_24 = 1;
    335.                   Print("ERROR BUYSTOP : " + f0_4(Ask + ld_252) + " SL:" + f0_4(Bid + ld_252 - ld_124) + " TP:" + f0_4(ld_276 + ld_252 + ld_124));
    336.                   gi_332 = 0;
    337.                } else {
    338.                   gi_332 = GetTickCount() - gi_332;
    339.                   PlaySound("news.wav");
    340.                   Print("BUYSTOP : " + f0_4(Ask + ld_252) + " SL:" + f0_4(Bid + ld_252 - ld_124) + " TP:" + f0_4(ld_276 + ld_252 + ld_124));
    341.                }
    342.             } else {
    343.                if (Bid - ilow_172 > 0.0) {
    344.                   ticket_40 = OrderSend(symbol_8, OP_BUY, g_lots_356, Ask, g_slippage_308, 0, 0, OrderCmt, Magic, datetime_44, Lime);
    345.                   if (ticket_40 < 0) {
    346.                      li_unused_24 = 1;
    347.                      Print("ERROR BUY Ask:" + f0_4(Ask) + " SL:" + f0_4(Bid - ld_124) + " TP:" + f0_4(ld_276 + ld_124));
    348.                      gi_332 = 0;
    349.                   } else {
    350.                      bool_16 = OrderModify(ticket_40, 0, f0_12(Bid - ld_124), f0_12(ld_276 + ld_124), datetime_44, Lime);
    351.                      gi_332 = GetTickCount() - gi_332;
    352.                      PlaySound("news.wav");
    353.                      Print("BUY Ask:" + f0_4(Ask) + " SL:" + f0_4(Bid - ld_124) + " TP:" + f0_4(ld_276 + ld_124));
    354.                   }
    355.                }
    356.             }
    357.          } else {
    358.             if (li_68 > 0) {
    359.                if (li_20) {
    360.                   price_92 = Bid - gi_300 * Point;
    361.                   gi_332 = GetTickCount();
    362.                   if (NDDmode) {
    363.                      ticket_40 = OrderSend(symbol_8, OP_SELLSTOP, g_lots_356, price_92, g_slippage_308, 0, 0, OrderCmt, Magic, 0, Orange);
    364.                      if (OrderSelect(ticket_40, SELECT_BY_TICKET)) OrderModify(OrderTicket(), OrderOpenPrice(), price_92 + StopLoss * Point, price_92 - TakeProfit * Point, datetime_44, Orange);
    365.                   } else {
    366.                      ticket_40 = OrderSend(symbol_8, OP_SELLSTOP, g_lots_356, price_92, g_slippage_308, price_92 + StopLoss * Point, price_92 - TakeProfit * Point, OrderCmt, Magic, datetime_44,
    367.                         Orange);
    368.                   }
    369.                   if (ticket_40 < 0) {
    370.                      li_unused_24 = 1;
    371.                      Print("ERROR SELLSTOP : " + f0_4(Bid - ld_252) + " SL:" + f0_4(Ask - ld_252 + ld_124) + " TP:" + f0_4(ld_284 - ld_252 - ld_124));
    372.                      gi_332 = 0;
    373.                   } else {
    374.                      gi_332 = GetTickCount() - gi_332;
    375.                      PlaySound("news.wav");
    376.                      Print("SELLSTOP : " + f0_4(Bid - ld_252) + " SL:" + f0_4(Ask - ld_252 + ld_124) + " TP:" + f0_4(ld_284 - ld_252 - ld_124));
    377.                   }
    378.                } else {
    379.                   if (ihigh_164 - Bid < 0.0) {
    380.                      ticket_40 = OrderSend(symbol_8, OP_SELL, g_lots_356, Bid, g_slippage_308, 0, 0, OrderCmt, Magic, datetime_44, Orange);
    381.                      if (ticket_40 < 0) {
    382.                         li_unused_24 = 1;
    383.                         Print("ERROR SELL Bid:" + f0_4(Bid) + " SL:" + f0_4(Ask + ld_124) + " TP:" + f0_4(ld_284 - ld_124));
    384.                         gi_332 = 0;
    385.                      } else {
    386.                         bool_16 = OrderModify(ticket_40, 0, f0_12(Ask + ld_124), f0_12(ld_284 - ld_124), datetime_44, Orange);
    387.                         gi_332 = GetTickCount() - gi_332;
    388.                         PlaySound("news.wav");
    389.                         Print("SELL Bid:" + f0_4(Bid) + " SL:" + f0_4(Ask + ld_124) + " TP:" + f0_4(ld_284 - ld_124));
    390.                      }
    391.                   }
    392.                }
    393.             }
    394.          }
    395.       }
    396.       if (gi_316 >= 0) Comment("Robot is initializing...");
    397.       else {
    398.          if (gi_316 == -2) Comment("ERROR -- Instrument " + symbol_8 + " prices should have " + g_digits_304 + " fraction digits on broker account");
    399.          else {
    400.             ls_0 = TimeToStr(TimeCurrent()) + " Tick: " + f0_9(g_count_324);
    401.             if (Show_Debug || Verbose) {
    402.                ls_0 = ls_0
    403.                + "\n*** DEBUG MODE *** \nVolatility: " + f0_4(ld_228) + ", VolatilityLimit: " + f0_4(VolatilityLimit) + ", VolatilityPercentage: " + f0_4(ld_100);
    404.                ls_0 = ls_0
    405.                + "\nPriceDirection: " + StringSubstr("BUY NULLSELL", li_68 * 4 + 4, 4) + ", ImaHigh: " + f0_4(ld_188) + ", ImaLow: " + f0_4(ld_180) + ", BBandUpper: " + f0_4(ibands_204);
    406.                ls_0 = ls_0 + ", BBandLower: " + f0_4(ibands_212) + ", Expire: " + TimeToStr(datetime_44, TIME_MINUTES) + ", NnumOrders: " + index_72;
    407.                ls_0 = ls_0
    408.                + "\nTrailingLimit: " + f0_4(ld_252) + ", TrailingDist: " + f0_4(ld_108) + "; TrailingStart: " + f0_4(ld_116) + ", UseStopOrders: " + li_20;
    409.             }
    410.             ls_0 = ls_0
    411.             + "\nBid: " + f0_4(Bid) + ", Ask: " + f0_4(Ask) + ", AvgSpread: " + f0_4(ld_268) + ", Commission: " + f0_4(Commission) + ", RealAvgSpread: " + f0_4(ld_292) + ", Lots: " + f0_11(g_lots_356,
    412.                li_48) + ", Execution: " + gi_332 + " ms";
    413.             if (f0_12(ld_292) > f0_12(MaxSpread * Point)) {
    414.                ls_0 = ls_0
    415.                   + "\n"
    416.                + "The current spread (" + f0_4(ld_292) + ") is higher than what has been set as MaxSpread (" + f0_4(MaxSpread * Point) + ") so no trading is allowed right now on this currency pair!";
    417.             }
    418.             Comment(ls_0);
    419.             if (index_72 != 0 || li_68 != 0 || Verbose) f0_2(ls_0);
    420.          }
    421.       }
    422.    }
    423. }

    424. void f0_1(double &ada_0[30], double &ada_4[30], int &aia_8[30], double a_pips_12) {
    425.    if (aia_8[0] == 0 || MathAbs(Bid - ada_0[0]) >= a_pips_12 * Point) {
    426.       for (int li_20 = 29; li_20 > 0; li_20--) {
    427.          ada_0[li_20] = ada_0[li_20 - 1];
    428.          ada_4[li_20] = ada_4[li_20 - 1];
    429.          aia_8[li_20] = aia_8[li_20 - 1];
    430.       }
    431.       ada_0[0] = Bid;
    432.       ada_4[0] = Ask;
    433.       aia_8[0] = GetTickCount();
    434.    }
    435. }

    436. string f0_4(double ad_0) {
    437.    return (DoubleToStr(ad_0, g_digits_304));
    438. }

    439. string f0_11(double ad_0, int ai_8) {
    440.    return (DoubleToStr(ad_0, ai_8));
    441. }

    442. double f0_12(double ad_0) {
    443.    return (NormalizeDouble(ad_0, g_digits_304));
    444. }

    445. string f0_9(int ai_0) {
    446.    if (ai_0 < 10) return ("00" + ai_0);
    447.    if (ai_0 < 100) return ("0" + ai_0);
    448.    return ("" + ai_0);
    449. }

    450. double f0_3(double ad_0, double ad_8) {
    451.    return (MathLog(ad_8) / MathLog(ad_0));
    452. }

    453. void f0_2(string as_0) {
    454.    int li_8;
    455.    int li_12 = -1;
    456.    while (li_12 < StringLen(as_0)) {
    457.       li_8 = li_12 + 1;
    458.       li_12 = StringFind(as_0,
    459.       "\n", li_8);
    460.       if (li_12 == -1) {
    461.          Print(StringSubstr(as_0, li_8));
    462.          return;
    463.       }
    464.       Print(StringSubstr(as_0, li_8, li_12 - li_8));
    465.    }
    466. }

    467. void f0_6() {
    468.    string ls_unused_0;
    469.    string ls_8;
    470.    double ask_28;
    471.    gi_336 = 0;
    472.    for (int index_16 = 0; index_16 != gi_336; index_16++) {
    473.       ls_8 = gsa_272[index_16];
    474.       ask_28 = MarketInfo(ls_8 + Suffix, MODE_ASK);
    475.       if (ask_28 != 0.0) {
    476.          gi_336++;
    477.          ArrayResize(gsa_276, gi_336);
    478.          gsa_276[gi_336 - 1] = ls_8;
    479.       } else Print("The broker does not support ", ls_8);
    480.    }
    481. }

    482. int f0_13() {
    483.    string ls_0 = Symbol();
    484.    int str_len_8 = StringLen(ls_0);
    485.    int li_12 = 0;
    486.    for (int li_16 = 0; li_16 < str_len_8 - 1; li_16++) li_12 += StringGetChar(ls_0, li_16);
    487.    Magic = AccountNumber() + li_12;
    488.    return (0);
    489. }

    490. void f0_7() {
    491.    int li_0;
    492.    if (ShotsPerBar > 0) li_0 = MathRound(60 * Period() / ShotsPerBar);
    493.    else li_0 = 60 * Period();
    494.    int li_4 = MathFloor((TimeCurrent() - Time[0]) / li_0);
    495.    if (Time[0] != gi_440) {
    496.       gi_440 = Time[0];
    497.       gi_444 = DelayTicks;
    498.    } else
    499.       if (li_4 > gi_448) f0_0("i");
    500.    gi_448 = li_4;
    501.    if (gi_444 == 0) f0_0("");
    502.    if (gi_444 >= 0) gi_444--;
    503. }

    504. string f0_5(int ai_0, int ai_4) {
    505.    for (string dbl2str_8 = DoubleToStr(ai_0, 0); StringLen(dbl2str_8) < ai_4; dbl2str_8 = "0" + dbl2str_8) {
    506.    }
    507.    return (dbl2str_8);
    508. }

    509. void f0_0(string as_0 = "") {
    510.    gi_452++;
    511.    string ls_8 = "SnapShot" + Symbol() + Period() + "\" + Year() + "-" + f0_5(Month(), 2) + "-" + f0_5(Day(), 2) + " " + f0_5(Hour(), 2) + "_" + f0_5(Minute(), 2) + "_" + f0_5(Seconds(),
    512.       2) + " " + gi_452 + as_0 + ".gif";
    513.    if (!WindowScreenShot(ls_8, 640, 480)) Print("ScreenShot error: ", ErrorDescription(GetLastError()));
    514. }

    515. double f0_10(string a_symbol_0) {
    516.    double lotstep_8 = MarketInfo(a_symbol_0, MODE_LOTSTEP);
    517.    double ld_ret_16 = AccountFreeMargin() * Risk / StopLoss / 100.0;
    518.    ld_ret_16 = MathFloor(ld_ret_16 / lotstep_8) * lotstep_8;
    519.    if (g_lots_356 > MaxLots) g_lots_356 = MaxLots;
    520.    if (g_lots_356 < MinLots) g_lots_356 = MinLots;
    521.    return (ld_ret_16);
    522. }
    复制代码
    上面是MDP-Plus_2.2.3的原代码,我很喜欢那个快速移动止损和 TrailingStart (就那个止赢自己会移动的);希望有高手能帮编个脚本,我好用自己的1分钟操作,谢谢
    ""
    还没有人打赏,支持一下
    回复

    举报

     

    回答|共 10 个

    为你而生 LV4

    发表于 2013-10-2 15:32:22 | 显示全部楼层

    这么多行,一句注释都没有,变量还用流水编号。。。。是为了防止别人看懂吗?

    为你而生 LV4

    发表于 2013-10-2 15:54:40 | 显示全部楼层

    f0_8()
    ....
    for(pos_60....
    ....
    switch(orderType())
         你要的都在这里。单独不太好拿出来。
    ----------------------
    移动止损止盈,只需根据条件使用orderModify就行。

    淘客 LV16

    发表于 2013-10-2 17:08:42 | 显示全部楼层

    哦那我看看谢谢

    外汇笔记 LV17

    发表于 2013-10-2 21:23:37 | 显示全部楼层

    你可以到www.eanotes.com 搜索移动止损。

    alisas LV6

    发表于 2014-10-30 17:31:52 | 显示全部楼层

    回复看看

    ctm1kwko02om LV3

    发表于 2014-11-1 01:35:48 | 显示全部楼层

    没有使用说明书

    杨过 LV3

    发表于 2014-11-10 01:37:20 | 显示全部楼层

    EA真的能赚钱么?

    灿才策晨 LV3

    发表于 2014-11-18 12:14:12 | 显示全部楼层

    谢谢分享!!!!!

    forexer LV3

    发表于 2014-11-25 22:28:42 | 显示全部楼层

    nice!!!!!!!!!!!!
    12下一页
    您需要登录后才可以回帖 登录 | 注册

    提醒: 禁止引战、谩骂、灌水内容

    微信二维码

    有问题联系客服