û

   
#property copyright "Copyright © 2011-2022, cmillion@narod.ru" #property link "https://www.mql5.com/en/market/product/83179" #property strict #import "kernel32.dll" int _lopen(string a0, int a1); int _lclose(int a0); #import extern bool ðàçðåøèòü_ñäåëêè_Buy = TRUE;//Allow Buy extern bool ðàçðåøèòü_ñäåëêè_Sell = TRUE;//Allow Sell extern bool çàïðåò_ïåðâîãî_îðäåðà = TRUE;//EA markes first order extern bool îòêðûâàòü_îðäåðà_ïî_òðåíäó = FALSE;//Open order on trend extern int ïåðâûé_øàã = 10;//First step extern int íå_ñòàâèòü_îðäåð_áëèæå = 30;//Minimum price distance extern int øàã_ïåðåìåùåíèÿ = 5;//Move Step extern int ðàññòîÿíèå_ìåæäó_îðäåðàìè = 30;//Distance between orders extern double ìàêñèìàëüíûé_óáûòîê = 100000.0;//Maximum allowed loss extern double óáûòîê_çàêð_ïî_îáù_ïðîôèòó = 10.0;//Close loss by drawdown extern double îáúåì_îðäåðà = 0.1;//Order lotsize extern double äîáàâêà_ê_îáúåìó_îðäåðà = 0.0;//Increase losize by extern double óìíîæåíèå_îáúåìà_îðäåðà = 1.5;//Multiply losize by extern int îêðóãëåíèå_ëîòîâ = 2;//Rounding losize decimals extern double ïðèáûëü_çàêð_2_íàïðàâëåíèé = 10.0;//Profit for closing 2 directions extern double ïðèáûëü_çàêð_1_íàïðàâëåíèÿ = 50.0;//Profit for closing 1 direction extern int Ê_àâòîðàñ÷åòà_ïðèáûëè = 50;//Auto calculated profit extern double óáûòîê_äëÿ_çàêðûòèÿ = 100000.0;//Loss for closing input string in_01= "";//__________________ extern string Íàñòðîéêè_òðàëëà = "0-Off 1-Candle 2-Fractals 3-Points";//Trailing_settings extern int äëèííà_òðàëëà = 1;// trailing_type extern int øàã_òðàëëà = 0;// trailing_step extern int ìèíèìàëüíûé_ïðîôèò_òðàëëà = 10;// Minimum trailing profit extern int îòñòóï_îò_ôðàêòàëà_ñâå÷è = 0;// Padding by fractal or candles extern int òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ = 15;// Timeframe fractal or candles extern string in_02 = "";//__________________ extern int Magic = 777;//Magic extern int ðàçìåð_øðèôòà = 10;//Font size extern color öâåò_âûâîäà_èíôîðìàöèè = Lime;//info_color extern int Stoploss = 0;//Stop Loss extern int Takeprofit = 0;//TakeProfit extern string Íàñòðîéêè_èíäèêàòîðà = "RSI";//indicator extern bool îòêðûòèå_1_îðäåðà_ïî_èíäèêàòó = FALSE;//open_1_order_by_indicator extern int çîíà_ïåðåïðîäàííîñòè = 15;//Oversold zone extern int çîíà_ïåðåêóïëåííîñòè = 85;//Overbought zone extern int RSI_Period = 5;//RSI_Period extern int òàéìôðåéì_èíäèêàòîðà = 0;//timeframe of the indicator extern int Key = 0;//Key // 添加ATR加权RSI参数 extern int ATR_Period = 14; // ATR周期 extern double ATR_Weight = 0.30; // ATR权重 (0~1),收盘价权重 = 1-ATR_Weight extern bool UseATR_RSI = false; // 是否启用ATR加权RSI // 添加单边市场识别参数 extern bool UseTrendFilter = true; // 启用单边市场过滤 extern int TrendPeriod = 50; // 趋势判断周期 extern double TrendThreshold = 0.002; // 趋势阈值 (0.2%) extern int TrendTimeframe = 60; // 趋势判断时间框架 bool G_bool_292; double G_tickvalue_296; int Gi_304; int Gi_308 = 3456; int G_acc_number_312; int G_slippage_316; string Gs_320; //+------------------------------------------------------------------+ //| 计算ATR加权价格 | //+------------------------------------------------------------------+ double ATRWeightedPrice(int tf, int index) { double close_price = iClose(NULL, tf, index); if(!UseATR_RSI) return(close_price); // 如果未启用ATR加权,返回普通收盘价 double atr_value = iATR(NULL, tf, ATR_Period, index); return(close_price * (1.0 - ATR_Weight) + atr_value * ATR_Weight); } //+------------------------------------------------------------------+ //| 计算ATR加权RSI | //+------------------------------------------------------------------+ double RSI_ATR(int tf, int period, int shift) { double prices[]; int bars = 2 * period + 1; ArrayResize(prices, bars); ArraySetAsSeries(prices, true); for(int i = 0; i < bars; i++) prices[i] = ATRWeightedPrice(tf, shift + i); return(iRSIOnArray(prices, 0, period, 0)); } //+------------------------------------------------------------------+ //| 单边市场识别函数 | //+------------------------------------------------------------------+ bool IsTrendingMarket() { if(!UseTrendFilter) return(false); double emaFast = iMA(NULL, TrendTimeframe, TrendPeriod/2, 0, MODE_EMA, PRICE_CLOSE, 0); double emaSlow = iMA(NULL, TrendTimeframe, TrendPeriod, 0, MODE_EMA, PRICE_CLOSE, 0); double currentPrice = iClose(NULL, TrendTimeframe, 0); // 计算价格相对于EMA的偏离程度 double deviation = MathAbs(currentPrice - emaSlow) / emaSlow; // 如果价格偏离EMA超过阈值,认为是单边市 if(deviation > TrendThreshold) { return(true); } // 额外检查:如果快慢EMA分离明显,也认为是趋势市 double emaSeparation = MathAbs(emaFast - emaSlow) / emaSlow; if(emaSeparation > TrendThreshold * 0.7) { return(true); } return(false); } //+------------------------------------------------------------------+ //| 获取市场趋势方向 | //+------------------------------------------------------------------+ int GetMarketTrendDirection() { if(!UseTrendFilter) return(0); double ema = iMA(NULL, TrendTimeframe, TrendPeriod, 0, MODE_EMA, PRICE_CLOSE, 0); double currentPrice = iClose(NULL, TrendTimeframe, 0); if(currentPrice > ema * (1 + TrendThreshold)) { return(1); // 上升趋势 } else if(currentPrice < ema * (1 - TrendThreshold)) { return(-1); // 下降趋势 } return(0); // 震荡市 } // E37F0136AA3FFAF149B351F6A4C948E9 int init() { Gs_320 = " " + AccountCurrency(); G_tickvalue_296 = MarketInfo(Symbol(), MODE_TICKVALUE); if (!IsDllsAllowed()) { Comment("Âêëþ÷èòå ðàçðåøèòü èñïîëüçîâàíèå DLL"); return(0); } òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ = f0_4285(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ); if (Digits == 5 || Digits == 3) G_slippage_316 = 30; Comment("Ñåòêà-ïîëçó÷êà"); Gi_304 = MarketInfo(Symbol(), MODE_STOPLEVEL); if (ðàññòîÿíèå_ìåæäó_îðäåðàìè < Gi_304) { Alert("ðàññòîÿíèå_ìåæäó_îðäåðàìè ìåíüøå STOPLEVEL, èçìåíåí íà ", Gi_304); ðàññòîÿíèå_ìåæäó_îðäåðàìè = Gi_304; } if (ïåðâûé_øàã < Gi_304) { Alert("ïåðâûé_øàã ìåíüøå STOPLEVEL, èçìåíåí íà ", Gi_304); ïåðâûé_øàã = Gi_304; } int y_0 = ðàçìåð_øðèôòà + ðàçìåð_øðèôòà / 2; ObjectCreate("Balance", OBJ_LABEL, 0, 0, 0); ObjectSet("Balance", OBJPROP_CORNER, 1); ObjectSet("Balance", OBJPROP_XDISTANCE, 5); ObjectSet("Balance", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("Equity", OBJ_LABEL, 0, 0, 0); ObjectSet("Equity", OBJPROP_CORNER, 1); ObjectSet("Equity", OBJPROP_XDISTANCE, 5); ObjectSet("Equity", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("FreeMargin", OBJ_LABEL, 0, 0, 0); ObjectSet("FreeMargin", OBJPROP_CORNER, 1); ObjectSet("FreeMargin", OBJPROP_XDISTANCE, 5); ObjectSet("FreeMargin", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; G_acc_number_312 = AccountNumber(); G_bool_292 = (!IsDemo()) && (!IsTesting()); ObjectCreate("ProfitB", OBJ_LABEL, 0, 0, 0); ObjectSet("ProfitB", OBJPROP_CORNER, 1); ObjectSet("ProfitB", OBJPROP_XDISTANCE, 5); ObjectSet("ProfitB", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("ProfitS", OBJ_LABEL, 0, 0, 0); ObjectSet("ProfitS", OBJPROP_CORNER, 1); ObjectSet("ProfitS", OBJPROP_XDISTANCE, 5); ObjectSet("ProfitS", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("Profit", OBJ_LABEL, 0, 0, 0); ObjectSet("Profit", OBJPROP_CORNER, 1); ObjectSet("Profit", OBJPROP_XDISTANCE, 5); ObjectSet("Profit", OBJPROP_YDISTANCE, y_0); y_0 += 3 * ðàçìåð_øðèôòà; int count_4 = 0; string name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 3 * ðàçìåð_øðèôòà; ObjectSetText(name_8, "Óñòàíîâëåííûå ïàðàìåòðû", ðàçìåð_øðèôòà + 2, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; string str_concat_16 = ""; if (ðàçðåøèòü_ñäåëêè_Buy) str_concat_16 = "Buy "; if (ðàçðåøèòü_ñäåëêè_Sell) str_concat_16 = StringConcatenate(str_concat_16, "Sell "); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Ðàçðåøåíû ", str_concat_16), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Object" + count_4; if (!îòêðûâàòü_îðäåðà_ïî_òðåíäó) { ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "Íå îòêðûâàòü îðäåðà ïî òðåíäó ", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Object" + count_4; } ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; if (çàïðåò_ïåðâîãî_îðäåðà) ObjectSetText(name_8, "Ñîâåòíèê ñàì âûñòàâëÿåò ïåðâûé îðäåð", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); else ObjectSetText(name_8, "Ñîâåòíèê æäåò ïåðâûé îðäåð", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Ïåðâûé øàã ", ïåðâûé_øàã, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Ìèíèìàëüíîå ðàññòîÿíèå äî öåíû ", íå_ñòàâèòü_îðäåð_áëèæå, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Øàã èçìåíåíèÿ îðäåðà ", øàã_ïåðåìåùåíèÿ, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Øàã ìåæäó îðäåðàìè ", ðàññòîÿíèå_ìåæäó_îðäåðàìè, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); ObjectSetText(name_8, "íå îòêðûâàòü äàííîå íàïðàâëåíèå", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate("Char.b", OBJ_LABEL, 0, 0, 0); ObjectSet("Char.b", OBJPROP_CORNER, 1); ObjectSet("Char.b", OBJPROP_XDISTANCE, 5); ObjectSet("Char.b", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText("Char.b", CharToStr(233), ðàçìåð_øðèôòà, "Wingdings", Lime); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); ObjectSetText(name_8, StringConcatenate("ïðè äîñòèæåíèè óáûòêà ", ìàêñèìàëüíûé_óáûòîê, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate("Char.s", OBJ_LABEL, 0, 0, 0); ObjectSet("Char.s", OBJPROP_CORNER, 1); ObjectSet("Char.s", OBJPROP_XDISTANCE, 5); ObjectSet("Char.s", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText("Char.s", CharToStr(234), ðàçìåð_øðèôòà, "Wingdings", Lime); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà; ObjectSetText(name_8, "çàêðûòèå ïî îáùåìó ïðîôèòó", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate("Char.op", OBJ_LABEL, 0, 0, 0); ObjectSet("Char.op", OBJPROP_CORNER, 1); ObjectSet("Char.op", OBJPROP_XDISTANCE, 5); ObjectSet("Char.op", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà; ObjectSetText("Char.op", CharToStr(75), ðàçìåð_øðèôòà + 2, "Wingdings", Silver); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("ïðè ïðîñàäêå ", óáûòîê_çàêð_ïî_îáù_ïðîôèòó, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("Ñòàðòîâûé ëîò ", DoubleToStr(îáúåì_îðäåðà, 2), " + ", DoubleToStr(äîáàâêà_ê_îáúåìó_îðäåðà, 2), " õ ", DoubleToStr(óìíîæåíèå_îáúåìà_îðäåðà, 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("ïðèáûëü äëÿ çàêðûòèÿ âñåõ ", ïðèáûëü_çàêð_2_íàïðàâëåíèé, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; if (f0_8364()) ïðèáûëü_çàêð_2_íàïðàâëåíèé = 0.01; if (Ê_àâòîðàñ÷åòà_ïðèáûëè == 0) f0_12282("ïðèáûëü_çàêð.1_íàïðàâëåíèÿ", StringConcatenate("ïðèáûëü çàêðûòèÿ íàïðàâëåíèÿ ", ïðèáûëü_çàêð_1_íàïðàâëåíèÿ, Gs_320), 5, y_0, öâåò_âûâîäà_èíôîðìàöèè); else { f0_12282("StopProfit1", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ ", Ê_àâòîðàñ÷åòà_ïðèáûëè), 5, y_0, öâåò_âûâîäà_èíôîðìàöèè); y_0 += ðàçìåð_øðèôòà * 2; f0_12282("StopProfit2", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ ", Ê_àâòîðàñ÷åòà_ïðèáûëè), 5, y_0, öâåò_âûâîäà_èíôîðìàöèè); } y_0 += 2 * ðàçìåð_øðèôòà; count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("óáûòîê çàêðûòèÿ buy/sell ", óáûòîê_äëÿ_çàêðûòèÿ, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; if (äëèííà_òðàëëà != 0) { if (äëèííà_òðàëëà == 1) str_concat_16 = StringConcatenate("Ïî ñâå÷àì ", f0_9613(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ), " +- ", îòñòóï_îò_ôðàêòàëà_ñâå÷è); if (äëèííà_òðàëëà == 2) str_concat_16 = StringConcatenate("Ïî ôðàêòàëàì ", f0_9613(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ), " ", f0_9613(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ), " +- ", îòñòóï_îò_ôðàêòàëà_ñâå÷è); if (äëèííà_òðàëëà > 2) str_concat_16 = StringConcatenate("Ïî ïèïñàì ", äëèííà_òðàëëà, " ï"); if (øàã_òðàëëà > 0) str_concat_16 = StringConcatenate(str_concat_16, " ñ øàãîì ", øàã_òðàëëà, " ï", " ìèíèìàëüíûé ïðîôèò òðàëëà ", ìèíèìàëüíûé_ïðîôèò_òðàëëà, " ï"); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("äëèííà_òðàëëà ", str_concat_16), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; } ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; óáûòîê_çàêð_ïî_îáù_ïðîôèòó = -1.0 * óáûòîê_çàêð_ïî_îáù_ïðîôèòó; ìàêñèìàëüíûé_óáûòîê = -1.0 * ìàêñèìàëüíûé_óáûòîê; óáûòîê_äëÿ_çàêðûòèÿ = -1.0 * óáûòîê_äëÿ_çàêðûòèÿ; return (0); } // 52D46093050F38C27267BCE42543EF60 int deinit() { ObjectsDeleteAll(0); return (0); } // EA2B2676C28C0DB26D39331A336C6B92 int start() { double price_0; double Ld_16; double Ld_24; double Ld_32; double Ld_40; double order_lots_48; double price_56; double price_64; double price_72; double price_80; int Li_88; int Li_92; int Li_96; int Li_100; int cmd_104; int ticket_108; int ticket_112; double price_116; double price_124; double price_132; double price_140; double price_148; double price_156; double Ld_164; double Ld_172; double price_180; double price_188; double price_200; double Ld_208; double Ld_216; double price_224; double lots_232; double irsi_240; // 单边市场识别 bool isTrending = IsTrendingMarket(); int trendDirection = GetMarketTrendDirection(); for (int pos_196 = 0; pos_196 < OrdersTotal(); pos_196++) { if (OrderSelect(pos_196, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && Magic == OrderMagicNumber()) { cmd_104 = OrderType(); order_lots_48 = OrderLots(); price_0 = NormalizeDouble(OrderOpenPrice(), Digits); price_72 = NormalizeDouble(OrderStopLoss(), Digits); price_80 = NormalizeDouble(OrderTakeProfit(), Digits); price_56 = price_72; price_64 = price_80; if (cmd_104 == OP_BUYSTOP) { Li_96++; if (price_116 < price_0 || price_116 == 0.0) price_116 = price_0; ticket_108 = OrderTicket(); price_148 = price_0; } if (cmd_104 == OP_SELLSTOP) { Li_100++; if (price_140 > price_0 || price_140 == 0.0) price_140 = price_0; ticket_112 = OrderTicket(); price_156 = price_0; } if (cmd_104 == OP_BUY) { Li_88++; Ld_32 += order_lots_48; Ld_172 += price_0 * order_lots_48; if (price_116 < price_0 || price_116 == 0.0) price_116 = price_0; if (price_124 > price_0 || price_124 == 0.0) price_124 = price_0; Ld_24 += OrderProfit() + OrderSwap() + OrderCommission(); if (price_72 == 0.0 && Stoploss >= Gi_304 && Stoploss != 0) price_56 = NormalizeDouble(price_0 - Stoploss * Point, Digits); else price_56 = price_72; if (price_80 == 0.0 && Takeprofit >= Gi_304 && Takeprofit != 0) price_64 = NormalizeDouble(price_0 + Takeprofit * Point, Digits); else price_64 = price_80; if (price_56 > price_72 || price_64 != price_80) if (!OrderModify(OrderTicket(), price_0, price_56, price_64, 0, White)) Print("Error OrderModify ", GetLastError()); } if (cmd_104 == OP_SELL) { Li_92++; Ld_40 += order_lots_48; Ld_164 += price_0 * order_lots_48; if (price_140 > price_0 || price_140 == 0.0) price_140 = price_0; if (price_132 < price_0 || price_132 == 0.0) price_132 = price_0; Ld_16 += OrderProfit() + OrderSwap() + OrderCommission(); if (price_72 == 0.0 && Stoploss >= Gi_304 && Stoploss != 0) price_56 = NormalizeDouble(price_0 + Stoploss * Point, Digits); else price_56 = price_72; if (price_80 == 0.0 && Takeprofit >= Gi_304 && Takeprofit != 0) price_64 = NormalizeDouble(price_0 - Takeprofit * Point, Digits); else price_64 = price_80; if (price_56 < price_72 || (price_72 == 0.0 && price_56 != 0.0) || price_64 != price_80) if (!OrderModify(OrderTicket(), price_0, price_56, price_64, 0, White)) Print("Error OrderModify ", GetLastError()); } } } } ObjectDelete("SLb"); ObjectDelete("SLs"); if (Li_88 > 0) { price_180 = NormalizeDouble(Ld_172 / Ld_32, Digits); ObjectCreate("SLb", OBJ_ARROW, 0, Time[0], price_180, 0, 0, 0, 0); ObjectSet("SLb", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SLb", OBJPROP_COLOR, Blue); } if (Li_92 > 0) { price_188 = NormalizeDouble(Ld_164 / Ld_40, Digits); ObjectCreate("SLs", OBJ_ARROW, 0, Time[0], price_188, 0, 0, 0, 0); ObjectSet("SLs", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SLs", OBJPROP_COLOR, Red); } if (äëèííà_òðàëëà != 0) { for (int pos_196 = 0; pos_196 < OrdersTotal(); pos_196++) { if (OrderSelect(pos_196, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && Magic == OrderMagicNumber()) { cmd_104 = OrderType(); price_72 = NormalizeDouble(OrderStopLoss(), Digits); price_0 = NormalizeDouble(OrderOpenPrice(), Digits); price_56 = price_72; if (cmd_104 == OP_BUY) { price_200 = f0_833(1, Bid, äëèííà_òðàëëà); if (price_200 >= price_180 + ìèíèìàëüíûé_ïðîôèò_òðàëëà * Point && price_200 > price_72 + øàã_òðàëëà * Point && (Bid - price_200) / Point > Gi_304) price_56 = price_200; if (price_56 > price_72) if (!OrderModify(OrderTicket(), price_0, price_56, OrderTakeProfit(), 0, White)) Print("Error ", GetLastError(), " Trailing Modify Buy SL ", price_72, "->", price_56); } if (cmd_104 == OP_SELL) { price_200 = f0_833(-1, Ask, äëèííà_òðàëëà); if (((price_200 <= price_188 - ìèíèìàëüíûé_ïðîôèò_òðàëëà * Point && price_200 < price_72 - øàã_òðàëëà * Point )|| price_72 == 0.0 )&& (price_200 - Ask) / Point > Gi_304) price_56 = price_200; if ((price_56 < price_72 || price_72 == 0.0 )&& price_56 != 0.0) if (!OrderModify(OrderTicket(), price_0, price_56, OrderTakeProfit(), 0, White)) Print("Error ", GetLastError(), " Trailing Modify Sell SL ", price_72, "->", price_56, " TP "); } } } } } if (Ê_àâòîðàñ÷åòà_ïðèáûëè == 0) { Ld_208 = ïðèáûëü_çàêð_1_íàïðàâëåíèÿ; Ld_216 = ïðèáûëü_çàêð_1_íàïðàâëåíèÿ; } else { if (Ld_32 == 0.0) Ld_208 = îáúåì_îðäåðà * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; else Ld_208 = Ld_32 * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; if (Ld_40 == 0.0) Ld_216 = îáúåì_îðäåðà * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; else Ld_216 = Ld_40 * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; f0_12282("StopProfit1", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ Buy ", Ld_208), 5, 0, öâåò_âûâîäà_èíôîðìàöèè); f0_12282("StopProfit2", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ Sell ", Ld_216), 5, 0, öâåò_âûâîäà_èíôîðìàöèè); } if (Ld_24 > óáûòîê_çàêð_ïî_îáù_ïðîôèòó && Ld_16 > óáûòîê_çàêð_ïî_îáù_ïðîôèòó) { ObjectSetText("Char.op", CharToStr(251), ðàçìåð_øðèôòà + 2, "Wingdings", Silver); if (Ld_24 >= Ld_208) { Print("Çàêðûòèå Buy ïî Profit ", Ld_24); f0_1880(1); return(0); } if (Ld_16 >= Ld_216) { Print("Çàêðûòèå Sell ïî Profit ", Ld_16); f0_1880(-1); return(0); } } else { ObjectSetText("Char.op", CharToStr(74), ðàçìåð_øðèôòà + 2, "Wingdings", Red); if (Ld_24 + Ld_16 >= ïðèáûëü_çàêð_2_íàïðàâëåíèé) { Print("Çàêðûòèå âñåõ îðäåðîâ ïî 2 íàïðàâëåíèÿì ", Ld_24 + Ld_16); f0_1880(0); return(0); } } if (Ld_24 <= óáûòîê_äëÿ_çàêðûòèÿ) { Print("Çàêðûòèå Buy ïî Loss ", Ld_24); f0_1880(1); return(0); } if (Ld_16 <= óáûòîê_äëÿ_çàêðûòèÿ) { Print("Çàêðûòèå Sell ïî Loss ", Ld_16); f0_1880(-1); return(0); } if (Ld_24 <= ìàêñèìàëüíûé_óáûòîê) { Comment("Íå îòêðûâàòü íàïðàâëåíèå Buy"); ObjectSetText("Char.b", CharToStr(225) + CharToStr(251), ðàçìåð_øðèôòà, "Wingdings", Red); } else ObjectSetText("Char.b", CharToStr(233), ðàçìåð_øðèôòà, "Wingdings", Lime); if (Ld_16 <= ìàêñèìàëüíûé_óáûòîê) { Comment("Íå îòêðûâàòü íàïðàâëåíèå Sell"); ObjectSetText("Char.s", CharToStr(226) + CharToStr(251), ðàçìåð_øðèôòà, "Wingdings", Red); } else ObjectSetText("Char.s", CharToStr(234), ðàçìåð_øðèôòà, "Wingdings", Lime); // 修改RSI计算部分 - 使用ATR加权RSI或标准RSI if (Li_88 == 0 || Li_92 == 0) { if (UseATR_RSI) { irsi_240 = RSI_ATR(òàéìôðåéì_èíäèêàòîðà, RSI_Period, 0); } else { irsi_240 = iRSI(NULL, òàéìôðåéì_èíäèêàòîðà, RSI_Period, PRICE_CLOSE, 0); } } // 在开仓条件中加入单边市场过滤 if (Li_96 == 0 && Ld_24 > ìàêñèìàëüíûé_óáûòîê && ðàçðåøèòü_ñäåëêè_Buy) { // 单边市场过滤:如果是强下降趋势,避免开多单 if (UseTrendFilter && isTrending && trendDirection == -1) { Comment("单边下降市场,避免开多单"); price_224 = 0; } else { if (Li_88 == 0) { if (irsi_240 < çîíà_ïåðåïðîäàííîñòè || (!îòêðûòèå_1_îðäåðà_ïî_èíäèêàòó)) price_224 = NormalizeDouble(Ask + ïåðâûé_øàã * Point, Digits); else price_224 = 0; } else { price_224 = NormalizeDouble(Ask + íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if (price_224 < NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) price_224 = NormalizeDouble(Ask + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits); } } if ((Li_88 == 0 || (price_116 != 0.0 && price_224 >= NormalizeDouble(price_116 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) && îòêðûâàòü_îðäåðà_ïî_òðåíäó) || (price_124 != 0.0 && price_224 <= NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) )&& price_224 != 0.0) { if (Li_88 == 0) lots_232 = îáúåì_îðäåðà; else lots_232 = NormalizeDouble(îáúåì_îðäåðà * MathPow(óìíîæåíèå_îáúåìà_îðäåðà, Li_88) + Li_88 * äîáàâêà_ê_îáúåìó_îðäåðà, îêðóãëåíèå_ëîòîâ); if ((lots_232 < AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED) && Li_88 > 0 )|| çàïðåò_ïåðâîãî_îðäåðà) { if (OrderSend(Symbol(), OP_BUYSTOP, lots_232, price_224, G_slippage_316, 0, 0, "cm_EA_TSO", Magic, 0, Blue) == -1) Print("íåâîçìîæíî âûñòàâèòü îðäåð BUYSTOP Lot ", DoubleToStr(lots_232, 2), " Price ", price_224, " Ask ", Ask); } else Comment("íåâîçìîæíî âûñòàâèòü Lot ", DoubleToStr(lots_232, 2)); } } if (Li_100 == 0 && Ld_16 > ìàêñèìàëüíûé_óáûòîê && ðàçðåøèòü_ñäåëêè_Sell) { // 单边市场过滤:如果是强上升趋势,避免开空单 if (UseTrendFilter && isTrending && trendDirection == 1) { Comment("单边上升市场,避免开空单"); price_224 = 0; } else { if (Li_92 == 0) { if (irsi_240 > çîíà_ïåðåêóïëåííîñòè || (!îòêðûòèå_1_îðäåðà_ïî_èíäèêàòó)) price_224 = NormalizeDouble(Bid - ïåðâûé_øàã * Point, Digits); else price_224 = 0; } else { price_224 = NormalizeDouble(Bid - íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if (price_224 < NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) price_224 = NormalizeDouble(Bid - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits); } } if ((Li_92 == 0 || (price_140 != 0.0 && price_224 <= NormalizeDouble(price_140 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) && îòêðûâàòü_îðäåðà_ïî_òðåíäó) || (price_132 != 0.0 && price_224 >= NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) )&& price_224 != 0.0) { if (Li_92 == 0) lots_232 = îáúåì_îðäåðà; else lots_232 = NormalizeDouble(îáúåì_îðäåðà * MathPow(óìíîæåíèå_îáúåìà_îðäåðà, Li_92) + Li_92 * äîáàâêà_ê_îáúåìó_îðäåðà, îêðóãëåíèå_ëîòîâ); if ((lots_232 < AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED) && Li_92 > 0 )|| çàïðåò_ïåðâîãî_îðäåðà) { if (OrderSend(Symbol(), OP_SELLSTOP, lots_232, price_224, G_slippage_316, 0, 0, "cm_EA_TSO", Magic, 0, Red) == -1) Print("íåâîçìîæíî âûñòàâèòü îðäåð SELLSTOP Lot ", DoubleToStr(lots_232, 2), " Price ", price_224, " Bid ", Bid); } else Comment("íåâîçìîæíî âûñòàâèòü Lot ", DoubleToStr(lots_232, 2)); } } ObjectSetText("Balance", StringConcatenate("Balance ", DoubleToStr(AccountBalance(), 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); ObjectSetText("Equity", StringConcatenate("Equity ", DoubleToStr(AccountEquity(), 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); ObjectSetText("FreeMargin", StringConcatenate("Free Margin ", DoubleToStr(AccountFreeMargin(), 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); double Ld_8 = Ld_24 + Ld_16; if (Ld_32 > 0.0) { ObjectSetText("ProfitB", StringConcatenate("Buy ", Li_88, " Profit ", DoubleToStr(Ld_24, 2), " Lot = ", DoubleToStr(Ld_32, 2)), ðàçìåð_øðèôòà, "Arial", f0_11449(Ld_24 > 0.0, 65280, 255)); } else ObjectSetText("ProfitB", "", ðàçìåð_øðèôòà, "Arial", Gray); if (Ld_40 > 0.0) { ObjectSetText("ProfitS", StringConcatenate("Sell ", Li_92, " Profit ", DoubleToStr(Ld_16, 2), " Lot = ", DoubleToStr(Ld_40, 2)), ðàçìåð_øðèôòà, "Arial", f0_11449(Ld_16 > 0.0, 65280, 255)); } else ObjectSetText("ProfitS", "", ðàçìåð_øðèôòà, "Arial", Gray); if (Ld_40 + Ld_32 > 0.0) ObjectSetText("Profit", StringConcatenate("Profit All ", DoubleToStr(Ld_8, 2)), ðàçìåð_øðèôòà, "Arial", f0_11449(Ld_8 >= 0.0, 32768, 255)); else ObjectSetText("Profit", "", ðàçìåð_øðèôòà, "Arial", Gray); if (price_148 != 0.0 && ðàçðåøèòü_ñäåëêè_Buy) { if (Li_88 == 0) price_224 = NormalizeDouble(Ask + ïåðâûé_øàã * Point, Digits); else price_224 = NormalizeDouble(Ask + íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if ((((NormalizeDouble(price_148 - øàã_ïåðåìåùåíèÿ * Point, Digits) > price_224 && price_224 <= NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) )|| price_124 == 0.0 || îòêðûâàòü_îðäåðà_ïî_òðåíäó )&& Li_88 == 0 )|| price_224 >= NormalizeDouble(price_116 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) || price_224 <= NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) { if (!OrderModify(ticket_108, price_224, 0, 0, 0, White)) Print("Error ", GetLastError(), " Order Modify Buy OOP ", price_148, "->", price_224); else Print("Order Buy Modify OOP ", price_0, "->", price_224); } } if (price_156 != 0.0 && ðàçðåøèòü_ñäåëêè_Sell) { if (Li_92 == 0) price_224 = NormalizeDouble(Bid - ïåðâûé_øàã * Point, Digits); else price_224 = NormalizeDouble(Bid - íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if ((((NormalizeDouble(price_156 + øàã_ïåðåìåùåíèÿ * Point, Digits) < price_224 && price_224 >= NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) )|| price_132 == 0.0 || îòêðûâàòü_îðäåðà_ïî_òðåíäó )&& Li_92 == 0 )|| price_224 <= NormalizeDouble(price_140 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) || price_224 >= NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) { if (!OrderModify(ticket_112, price_224, 0, 0, 0, White)) Print("Error ", GetLastError(), " Order Modify Sell OOP ", price_156, "->", price_224); else Print("Order Sell Modify OOP ", price_0, "->", price_224); } } return (0); } // 2208AB04CCD91A8303FE0D7679EA198F int f0_1880(int Ai_0) { int error_8; int Li_12; int cmd_16; int count_24; bool Li_4 = TRUE; if ((!G_bool_292) || Key == 5 * G_acc_number_312 - Gi_308) { while (true) { for (int pos_20 = OrdersTotal() - 1; pos_20 >= 0; pos_20--) { if (OrderSelect(pos_20, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { cmd_16 = OrderType(); if ((cmd_16 == OP_BUY && Ai_0 == 1 )|| Ai_0 == 0) { Li_4 = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), G_slippage_316, Blue); if (Li_4) Comment("Çàêðûò îðäåð N ", OrderTicket(), " ïðèáûëü ", OrderProfit(), " ", TimeToStr(TimeCurrent(), TIME_SECONDS)); } if ((cmd_16 == OP_SELL && Ai_0 == -1 )|| Ai_0 == 0) { Li_4 = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), G_slippage_316, Red); if (Li_4) Comment("Çàêðûò îðäåð N ", OrderTicket(), " ïðèáûëü ", OrderProfit(), " ", TimeToStr(TimeCurrent(), TIME_SECONDS)); } if ((cmd_16 == OP_BUYSTOP && Ai_0 == 1 )|| Ai_0 == 0) Li_4 = OrderDelete(OrderTicket()); if ((cmd_16 == OP_SELLSTOP && Ai_0 == -1 )|| Ai_0 == 0) Li_4 = OrderDelete(OrderTicket()); if (!Li_4) { error_8 = GetLastError(); if (error_8 >= 2/* COMMON_ERROR */) { if (error_8 == 129/* INVALID_PRICE */) { Comment("Íåïðàâèëüíàÿ öåíà ", TimeToStr(TimeCurrent(), TIME_SECONDS)); RefreshRates(); continue; } if (error_8 == 146/* TRADE_CONTEXT_BUSY */) { if (!(IsTradeContextBusy())) continue; Sleep(2000); continue; } Comment("Îøèáêà ", error_8, " çàêðûòèÿ îðäåðà N ", OrderTicket(), " ", TimeToStr(TimeCurrent(), TIME_SECONDS)); } } } } } count_24 = 0; for (int pos_20 = 0; pos_20 < OrdersTotal(); pos_20++) { if (OrderSelect(pos_20, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { cmd_16 = OrderType(); if (((cmd_16 == OP_BUYSTOP || cmd_16 == OP_BUY )&& Ai_0 == 1 )|| Ai_0 == 0) count_24++; if (((cmd_16 == OP_SELLSTOP || cmd_16 == OP_SELL )&& Ai_0 == -1 )|| Ai_0 == 0) count_24++; } } } if (count_24 == 0) break; Li_12++; if (Li_12 > 10) { Alert(Symbol(), " Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ", count_24); return (0); } Sleep(1000); RefreshRates(); if (!G_bool_292 || Key == 5 * G_acc_number_312 - Gi_308) continue; break; } } return (1); } // CB5FEB1B7314637725A2E73BDC9F7295 int f0_11449(bool Ai_0, int Ai_4, int Ai_8) { if (Ai_0) return (Ai_4); return (Ai_8); } // 93ADA40DA341D3F06C6B5392C2A501C5 int f0_8364() { string str_concat_0 = StringConcatenate(TerminalPath(), CharToStr(92), "experts", CharToStr(92), WindowExpertName(), ".mq", DoubleToStr(4, 0)); if (_lopen(str_concat_0, 4) >= 0) { _lclose(str_concat_0); return (1); } return (0); } // 0E521811373FA5F0D1EE10BF0C823CF0 double f0_833(int Ai_0, double Ad_4, double A_pips_12) { double price_20 = 0; if (A_pips_12 > 2.0) { if (Ai_0 == 1) price_20 = NormalizeDouble(Ad_4 - A_pips_12 * Point, Digits); else price_20 = NormalizeDouble(Ad_4 + A_pips_12 * Point, Digits); } else { if (A_pips_12 == 2.0) { if (Ai_0 == 1) { for (int Li_32 = 1; Li_32 < 100; Li_32++) { price_20 = iFractals(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, MODE_LOWER, Li_32); if (price_20 != 0.0) { price_20 -= NormalizeDouble(îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (Ad_4 - Gi_304 * Point > price_20) break; } else price_20 = 0; } ObjectDelete("FR Buy"); ObjectCreate("FR Buy", OBJ_ARROW, 0, Time[0], price_20 + Point, 0, 0, 0, 0); ObjectSet("FR Buy", OBJPROP_ARROWCODE, 218); ObjectSet("FR Buy", OBJPROP_COLOR, Red); } if (Ai_0 == -1) { for (int Li_28 = 1; Li_28 < 100; Li_28++) { price_20 = iFractals(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, MODE_UPPER, Li_28); if (price_20 != 0.0) { price_20 += NormalizeDouble(îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (Ad_4 + Gi_304 * Point < price_20) break; } else price_20 = 0; } ObjectDelete("FR Sell"); ObjectCreate("FR Sell", OBJ_ARROW, 0, Time[0], price_20, 0, 0, 0, 0); ObjectSet("FR Sell", OBJPROP_ARROWCODE, 217); ObjectSet("FR Sell", OBJPROP_COLOR, Red); } } if (A_pips_12 == 1.0) { if (Ai_0 == 1) { for (int Li_32 = 1; Li_32 < 500; Li_32++) { price_20 = NormalizeDouble(iLow(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, Li_32) - îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (price_20 != 0.0) { if (Ad_4 - Gi_304 * Point > price_20) break; price_20 = 0; } } ObjectDelete("FR Buy"); ObjectCreate("FR Buy", OBJ_ARROW, 0, iTime(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, 0), price_20 + Point, 0, 0, 0, 0); ObjectSet("FR Buy", OBJPROP_ARROWCODE, 159); ObjectSet("FR Buy", OBJPROP_COLOR, Red); } if (Ai_0 == -1) { for (int Li_28 = 1; Li_28 < 500; Li_28++) { price_20 = NormalizeDouble(iHigh(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, Li_28) + îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (price_20 != 0.0) { if (Ad_4 + Gi_304 * Point < price_20) break; price_20 = 0; } } ObjectDelete("FR Sell"); ObjectCreate("FR Sell", OBJ_ARROW, 0, iTime(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, 0), price_20, 0, 0, 0, 0); ObjectSet("FR Sell", OBJPROP_ARROWCODE, 159); ObjectSet("FR Sell", OBJPROP_COLOR, Red); } } } if (Ai_0 == 1) { if (price_20 != 0.0) { ObjectDelete("SL Buy"); ObjectCreate("SL Buy", OBJ_ARROW, 0, Time[0] + 60 * Period(), price_20, 0, 0, 0, 0); ObjectSet("SL Buy", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SL Buy", OBJPROP_COLOR, Blue); } if (Gi_304 > 0) { ObjectDelete("STOPLEVEL-"); ObjectCreate("STOPLEVEL-", OBJ_ARROW, 0, Time[0] + 60 * Period(), Ad_4 - Gi_304 * Point, 0, 0, 0, 0); ObjectSet("STOPLEVEL-", OBJPROP_ARROWCODE, 4); ObjectSet("STOPLEVEL-", OBJPROP_COLOR, Blue); } } if (Ai_0 == -1) { if (price_20 != 0.0) { ObjectDelete("SL Sell"); ObjectCreate("SL Sell", OBJ_ARROW, 0, Time[0] + 60 * Period(), price_20, 0, 0, 0, 0); ObjectSet("SL Sell", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SL Sell", OBJPROP_COLOR, Pink); } if (Gi_304 > 0) { ObjectDelete("STOPLEVEL+"); ObjectCreate("STOPLEVEL+", OBJ_ARROW, 0, Time[0] + 60 * Period(), Ad_4 + Gi_304 * Point, 0, 0, 0, 0); ObjectSet("STOPLEVEL+", OBJPROP_ARROWCODE, 4); ObjectSet("STOPLEVEL+", OBJPROP_COLOR, Pink); } } return (price_20); } // 4CEF47202C318359E58492821436342B int f0_4285(int Ai_0) { if (Ai_0 > 43200) return (0); if (Ai_0 > 10080) return (43200); if (Ai_0 > 1440) return (10080); if (Ai_0 > 240) return (1440); if (Ai_0 > 60) return (240); if (Ai_0 > 30) return (60); if (Ai_0 > 15) return (30); if (Ai_0 > 5) return (15); if (Ai_0 > 1) return (5); if (Ai_0 == 1) return (1); if (Ai_0 == 0) return (Period()); return (0);} // A9E80DEDFA897CFD8F98BAD01077E0A7 string f0_9613(int Ai_0) { if (Ai_0 == 1) return ("M1"); if (Ai_0 == 5) return ("M5"); if (Ai_0 == 15) return ("M15"); if (Ai_0 == 30) return ("M30"); if (Ai_0 == 60) return ("H1"); if (Ai_0 == 240) return ("H4"); if (Ai_0 == 1440) return ("D1"); if (Ai_0 == 10080) return ("W1"); if (Ai_0 == 43200) return ("MN1"); return ("îøèáêà ïåðèîäà"); } // DABC5DBF75D151A587AD2276CD6849E6 void f0_12282(string A_name_0, string A_text_8, int A_x_16, int A_y_20, color A_color_24) { if (ObjectFind(A_name_0) == -1) { ObjectCreate(A_name_0, OBJ_LABEL, 0, 0, 0); ObjectSet(A_name_0, OBJPROP_CORNER, 1); ObjectSet(A_name_0, OBJPROP_XDISTANCE, A_x_16); ObjectSet(A_name_0, OBJPROP_YDISTANCE, A_y_20); } ObjectSetText(A_name_0, A_text_8, ðàçìåð_øðèôòà, "Arial", A_color_24); } 纠错
10-26
#property copyright "Copyright © 2011-2022, cmillion@narod.ru" #property link "https://www.mql5.com/en/market/product/83179" #property strict #import "kernel32.dll" int _lopen(string a0, int a1); int _lclose(int a0); #import extern bool ðàçðåøèòü_ñäåëêè_Buy = TRUE;//Allow Buy extern bool ðàçðåøèòü_ñäåëêè_Sell = TRUE;//Allow Sell extern bool çàïðåò_ïåðâîãî_îðäåðà = TRUE;//EA markes first order extern bool îòêðûâàòü_îðäåðà_ïî_òðåíäó = FALSE;//Open order on trend extern int ïåðâûé_øàã = 10;//First step extern int íå_ñòàâèòü_îðäåð_áëèæå = 30;//Minimum price distance extern int øàã_ïåðåìåùåíèÿ = 5;//Move Step extern int ðàññòîÿíèå_ìåæäó_îðäåðàìè = 30;//Distance between orders extern double ìàêñèìàëüíûé_óáûòîê = 100000.0;//Maximum allowed loss extern double óáûòîê_çàêð_ïî_îáù_ïðîôèòó = 10.0;//Close loss by drawdown extern double îáúåì_îðäåðà = 0.1;//Order lotsize extern double äîáàâêà_ê_îáúåìó_îðäåðà = 0.0;//Increase losize by extern double óìíîæåíèå_îáúåìà_îðäåðà = 1.5;//Multiply losize by extern int îêðóãëåíèå_ëîòîâ = 2;//Rounding losize decimals extern double ïðèáûëü_çàêð_2_íàïðàâëåíèé = 10.0;//Profit for closing 2 directions extern double ïðèáûëü_çàêð_1_íàïðàâëåíèÿ = 50.0;//Profit for closing 1 direction extern int Ê_àâòîðàñ÷åòà_ïðèáûëè = 50;//Auto calculated profit extern double óáûòîê_äëÿ_çàêðûòèÿ = 100000.0;//Loss for closing input string in_01= "";//__________________ extern string Íàñòðîéêè_òðàëëà = "0-Off 1-Candle 2-Fractals 3-Points";//Trailing_settings extern int äëèííà_òðàëëà = 1;// trailing_type extern int øàã_òðàëëà = 0;// trailing_step extern int ìèíèìàëüíûé_ïðîôèò_òðàëëà = 10;// Minimum trailing profit extern int îòñòóï_îò_ôðàêòàëà_ñâå÷è = 0;// Padding by fractal or candles extern int òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ = 15;// Timeframe fractal or candles extern string in_02 = "";//__________________ extern int Magic = 777;//Magic extern int ðàçìåð_øðèôòà = 10;//Font size extern color öâåò_âûâîäà_èíôîðìàöèè = Lime;//info_color extern int Stoploss = 0;//Stop Loss extern int Takeprofit = 0;//TakeProfit extern string Íàñòðîéêè_èíäèêàòîðà = "RSI";//indicator extern bool îòêðûòèå_1_îðäåðà_ïî_èíäèêàòó = FALSE;//open_1_order_by_indicator extern int çîíà_ïåðåïðîäàííîñòè = 15;//Oversold zone extern int çîíà_ïåðåêóïëåííîñòè = 85;//Overbought zone extern int RSI_Period = 5;//RSI_Period extern int òàéìôðåéì_èíäèêàòîðà = 0;//timeframe of the indicator extern int Key = 0;//Key bool G_bool_292; double G_tickvalue_296; int Gi_304; int Gi_308 = 3456; int G_acc_number_312; int G_slippage_316; string Gs_320; // E37F0136AA3FFAF149B351F6A4C948E9 int init() { Gs_320 = " " + AccountCurrency(); G_tickvalue_296 = MarketInfo(Symbol(), MODE_TICKVALUE); if (!IsDllsAllowed()) { Comment("Âêëþ÷èòå ðàçðåøèòü èñïîëüçîâàíèå DLL"); return(0); } òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ = f0_4285(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ); if (Digits == 5 || Digits == 3) G_slippage_316 = 30; Comment("Ñåòêà-ïîëçó÷êà"); Gi_304 = MarketInfo(Symbol(), MODE_STOPLEVEL); if (ðàññòîÿíèå_ìåæäó_îðäåðàìè < Gi_304) { Alert("ðàññòîÿíèå_ìåæäó_îðäåðàìè ìåíüøå STOPLEVEL, èçìåíåí íà ", Gi_304); ðàññòîÿíèå_ìåæäó_îðäåðàìè = Gi_304; } if (ïåðâûé_øàã < Gi_304) { Alert("ïåðâûé_øàã ìåíüøå STOPLEVEL, èçìåíåí íà ", Gi_304); ïåðâûé_øàã = Gi_304; } int y_0 = ðàçìåð_øðèôòà + ðàçìåð_øðèôòà / 2; ObjectCreate("Balance", OBJ_LABEL, 0, 0, 0); ObjectSet("Balance", OBJPROP_CORNER, 1); ObjectSet("Balance", OBJPROP_XDISTANCE, 5); ObjectSet("Balance", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("Equity", OBJ_LABEL, 0, 0, 0); ObjectSet("Equity", OBJPROP_CORNER, 1); ObjectSet("Equity", OBJPROP_XDISTANCE, 5); ObjectSet("Equity", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("FreeMargin", OBJ_LABEL, 0, 0, 0); ObjectSet("FreeMargin", OBJPROP_CORNER, 1); ObjectSet("FreeMargin", OBJPROP_XDISTANCE, 5); ObjectSet("FreeMargin", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; G_acc_number_312 = AccountNumber(); G_bool_292 = (!IsDemo()) && (!IsTesting()); ObjectCreate("ProfitB", OBJ_LABEL, 0, 0, 0); ObjectSet("ProfitB", OBJPROP_CORNER, 1); ObjectSet("ProfitB", OBJPROP_XDISTANCE, 5); ObjectSet("ProfitB", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("ProfitS", OBJ_LABEL, 0, 0, 0); ObjectSet("ProfitS", OBJPROP_CORNER, 1); ObjectSet("ProfitS", OBJPROP_XDISTANCE, 5); ObjectSet("ProfitS", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectCreate("Profit", OBJ_LABEL, 0, 0, 0); ObjectSet("Profit", OBJPROP_CORNER, 1); ObjectSet("Profit", OBJPROP_XDISTANCE, 5); ObjectSet("Profit", OBJPROP_YDISTANCE, y_0); y_0 += 3 * ðàçìåð_øðèôòà; int count_4 = 0; string name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 3 * ðàçìåð_øðèôòà; ObjectSetText(name_8, "Óñòàíîâëåííûå ïàðàìåòðû", ðàçìåð_øðèôòà + 2, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; string str_concat_16 = ""; if (ðàçðåøèòü_ñäåëêè_Buy) str_concat_16 = "Buy "; if (ðàçðåøèòü_ñäåëêè_Sell) str_concat_16 = StringConcatenate(str_concat_16, "Sell "); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Ðàçðåøåíû ", str_concat_16), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Object" + count_4; if (!îòêðûâàòü_îðäåðà_ïî_òðåíäó) { ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "Íå îòêðûâàòü îðäåðà ïî òðåíäó ", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Object" + count_4; } ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; if (çàïðåò_ïåðâîãî_îðäåðà) ObjectSetText(name_8, "Ñîâåòíèê ñàì âûñòàâëÿåò ïåðâûé îðäåð", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); else ObjectSetText(name_8, "Ñîâåòíèê æäåò ïåðâûé îðäåð", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Ïåðâûé øàã ", ïåðâûé_øàã, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Ìèíèìàëüíîå ðàññòîÿíèå äî öåíû ", íå_ñòàâèòü_îðäåð_áëèæå, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Øàã èçìåíåíèÿ îðäåðà ", øàã_ïåðåìåùåíèÿ, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("Øàã ìåæäó îðäåðàìè ", ðàññòîÿíèå_ìåæäó_îðäåðàìè, " ï"), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); ObjectSetText(name_8, "íå îòêðûâàòü äàííîå íàïðàâëåíèå", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate("Char.b", OBJ_LABEL, 0, 0, 0); ObjectSet("Char.b", OBJPROP_CORNER, 1); ObjectSet("Char.b", OBJPROP_XDISTANCE, 5); ObjectSet("Char.b", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText("Char.b", CharToStr(233), ðàçìåð_øðèôòà, "Wingdings", Lime); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); ObjectSetText(name_8, StringConcatenate("ïðè äîñòèæåíèè óáûòêà ", ìàêñèìàëüíûé_óáûòîê, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate("Char.s", OBJ_LABEL, 0, 0, 0); ObjectSet("Char.s", OBJPROP_CORNER, 1); ObjectSet("Char.s", OBJPROP_XDISTANCE, 5); ObjectSet("Char.s", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText("Char.s", CharToStr(234), ðàçìåð_øðèôòà, "Wingdings", Lime); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà; ObjectSetText(name_8, "çàêðûòèå ïî îáùåìó ïðîôèòó", ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate("Char.op", OBJ_LABEL, 0, 0, 0); ObjectSet("Char.op", OBJPROP_CORNER, 1); ObjectSet("Char.op", OBJPROP_XDISTANCE, 5); ObjectSet("Char.op", OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà; ObjectSetText("Char.op", CharToStr(75), ðàçìåð_øðèôòà + 2, "Wingdings", Silver); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 35); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, StringConcatenate("ïðè ïðîñàäêå ", óáûòîê_çàêð_ïî_îáù_ïðîôèòó, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("Ñòàðòîâûé ëîò ", DoubleToStr(îáúåì_îðäåðà, 2), " + ", DoubleToStr(äîáàâêà_ê_îáúåìó_îðäåðà, 2), " õ ", DoubleToStr(óìíîæåíèå_îáúåìà_îðäåðà, 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("ïðèáûëü äëÿ çàêðûòèÿ âñåõ ", ïðèáûëü_çàêð_2_íàïðàâëåíèé, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; if (f0_8364()) ïðèáûëü_çàêð_2_íàïðàâëåíèé = 0.01; if (Ê_àâòîðàñ÷åòà_ïðèáûëè == 0) f0_12282("ïðèáûëü_çàêð.1_íàïðàâëåíèÿ", StringConcatenate("ïðèáûëü çàêðûòèÿ íàïðàâëåíèÿ ", ïðèáûëü_çàêð_1_íàïðàâëåíèÿ, Gs_320), 5, y_0, öâåò_âûâîäà_èíôîðìàöèè); else { f0_12282("StopProfit1", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ ", Ê_àâòîðàñ÷åòà_ïðèáûëè), 5, y_0, öâåò_âûâîäà_èíôîðìàöèè); y_0 += ðàçìåð_øðèôòà * 2; f0_12282("StopProfit2", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ ", Ê_àâòîðàñ÷åòà_ïðèáûëè), 5, y_0, öâåò_âûâîäà_èíôîðìàöèè); } y_0 += 2 * ðàçìåð_øðèôòà; count_4++; name_8 = "Param" + count_4; ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("óáûòîê çàêðûòèÿ buy/sell ", óáûòîê_äëÿ_çàêðûòèÿ, Gs_320), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; if (äëèííà_òðàëëà != 0) { if (äëèííà_òðàëëà == 1) str_concat_16 = StringConcatenate("Ïî ñâå÷àì ", f0_9613(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ), " +- ", îòñòóï_îò_ôðàêòàëà_ñâå÷è); if (äëèííà_òðàëëà == 2) str_concat_16 = StringConcatenate("Ïî ôðàêòàëàì ", f0_9613(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ), " ", f0_9613(òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ), " +- ", îòñòóï_îò_ôðàêòàëà_ñâå÷è); if (äëèííà_òðàëëà > 2) str_concat_16 = StringConcatenate("Ïî ïèïñàì ", äëèííà_òðàëëà, " ï"); if (øàã_òðàëëà > 0) str_concat_16 = StringConcatenate(str_concat_16, " ñ øàãîì ", øàã_òðàëëà, " ï", " ìèíèìàëüíûé ïðîôèò òðàëëà ", ìèíèìàëüíûé_ïðîôèò_òðàëëà, " ï"); ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += 2 * ðàçìåð_øðèôòà; ObjectSetText(name_8, StringConcatenate("äëèííà_òðàëëà ", str_concat_16), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); count_4++; name_8 = "Param" + count_4; } ObjectCreate(name_8, OBJ_LABEL, 0, 0, 0); ObjectSet(name_8, OBJPROP_CORNER, 1); ObjectSet(name_8, OBJPROP_XDISTANCE, 5); ObjectSet(name_8, OBJPROP_YDISTANCE, y_0); y_0 += ðàçìåð_øðèôòà * 2; ObjectSetText(name_8, "--------------------------------------------------------", ðàçìåð_øðèôòà, "Arial", Aqua); count_4++; name_8 = "Param" + count_4; óáûòîê_çàêð_ïî_îáù_ïðîôèòó = -1.0 * óáûòîê_çàêð_ïî_îáù_ïðîôèòó; ìàêñèìàëüíûé_óáûòîê = -1.0 * ìàêñèìàëüíûé_óáûòîê; óáûòîê_äëÿ_çàêðûòèÿ = -1.0 * óáûòîê_äëÿ_çàêðûòèÿ; return (0); } // 52D46093050F38C27267BCE42543EF60 int deinit() { ObjectsDeleteAll(0); return (0); } // EA2B2676C28C0DB26D39331A336C6B92 int start() { double price_0; double Ld_16; double Ld_24; double Ld_32; double Ld_40; double order_lots_48; double price_56; double price_64; double price_72; double price_80; int Li_88; int Li_92; int Li_96; int Li_100; int cmd_104; int ticket_108; int ticket_112; double price_116; double price_124; double price_132; double price_140; double price_148; double price_156; double Ld_164; double Ld_172; double price_180; double price_188; double price_200; double Ld_208; double Ld_216; double price_224; double lots_232; double irsi_240; for (int pos_196 = 0; pos_196 < OrdersTotal(); pos_196++) { if (OrderSelect(pos_196, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && Magic == OrderMagicNumber()) { cmd_104 = OrderType(); order_lots_48 = OrderLots(); price_0 = NormalizeDouble(OrderOpenPrice(), Digits); price_72 = NormalizeDouble(OrderStopLoss(), Digits); price_80 = NormalizeDouble(OrderTakeProfit(), Digits); price_56 = price_72; price_64 = price_80; if (cmd_104 == OP_BUYSTOP) { Li_96++; if (price_116 < price_0 || price_116 == 0.0) price_116 = price_0; ticket_108 = OrderTicket(); price_148 = price_0; } if (cmd_104 == OP_SELLSTOP) { Li_100++; if (price_140 > price_0 || price_140 == 0.0) price_140 = price_0; ticket_112 = OrderTicket(); price_156 = price_0; } if (cmd_104 == OP_BUY) { Li_88++; Ld_32 += order_lots_48; Ld_172 += price_0 * order_lots_48; if (price_116 < price_0 || price_116 == 0.0) price_116 = price_0; if (price_124 > price_0 || price_124 == 0.0) price_124 = price_0; Ld_24 += OrderProfit() + OrderSwap() + OrderCommission(); if (price_72 == 0.0 && Stoploss >= Gi_304 && Stoploss != 0) price_56 = NormalizeDouble(price_0 - Stoploss * Point, Digits); else price_56 = price_72; if (price_80 == 0.0 && Takeprofit >= Gi_304 && Takeprofit != 0) price_64 = NormalizeDouble(price_0 + Takeprofit * Point, Digits); else price_64 = price_80; if (price_56 > price_72 || price_64 != price_80) if (!OrderModify(OrderTicket(), price_0, price_56, price_64, 0, White)) Print("Error OrderModify ", GetLastError()); } if (cmd_104 == OP_SELL) { Li_92++; Ld_40 += order_lots_48; Ld_164 += price_0 * order_lots_48; if (price_140 > price_0 || price_140 == 0.0) price_140 = price_0; if (price_132 < price_0 || price_132 == 0.0) price_132 = price_0; Ld_16 += OrderProfit() + OrderSwap() + OrderCommission(); if (price_72 == 0.0 && Stoploss >= Gi_304 && Stoploss != 0) price_56 = NormalizeDouble(price_0 + Stoploss * Point, Digits); else price_56 = price_72; if (price_80 == 0.0 && Takeprofit >= Gi_304 && Takeprofit != 0) price_64 = NormalizeDouble(price_0 - Takeprofit * Point, Digits); else price_64 = price_80; if (price_56 < price_72 || (price_72 == 0.0 && price_56 != 0.0) || price_64 != price_80) if (!OrderModify(OrderTicket(), price_0, price_56, price_64, 0, White)) Print("Error OrderModify ", GetLastError()); } } } } ObjectDelete("SLb"); ObjectDelete("SLs"); if (Li_88 > 0) { price_180 = NormalizeDouble(Ld_172 / Ld_32, Digits); ObjectCreate("SLb", OBJ_ARROW, 0, Time[0], price_180, 0, 0, 0, 0); ObjectSet("SLb", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SLb", OBJPROP_COLOR, Blue); } if (Li_92 > 0) { price_188 = NormalizeDouble(Ld_164 / Ld_40, Digits); ObjectCreate("SLs", OBJ_ARROW, 0, Time[0], price_188, 0, 0, 0, 0); ObjectSet("SLs", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SLs", OBJPROP_COLOR, Red); } if (äëèííà_òðàëëà != 0) { for (int pos_196 = 0; pos_196 < OrdersTotal(); pos_196++) { if (OrderSelect(pos_196, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol() == Symbol() && Magic == OrderMagicNumber()) { cmd_104 = OrderType(); price_72 = NormalizeDouble(OrderStopLoss(), Digits); price_0 = NormalizeDouble(OrderOpenPrice(), Digits); price_56 = price_72; if (cmd_104 == OP_BUY) { price_200 = f0_833(1, Bid, äëèííà_òðàëëà); if (price_200 >= price_180 + ìèíèìàëüíûé_ïðîôèò_òðàëëà * Point && price_200 > price_72 + øàã_òðàëëà * Point && (Bid - price_200) / Point > Gi_304) price_56 = price_200; if (price_56 > price_72) if (!OrderModify(OrderTicket(), price_0, price_56, OrderTakeProfit(), 0, White)) Print("Error ", GetLastError(), " Trailing Modify Buy SL ", price_72, "->", price_56); } if (cmd_104 == OP_SELL) { price_200 = f0_833(-1, Ask, äëèííà_òðàëëà); if (((price_200 <= price_188 - ìèíèìàëüíûé_ïðîôèò_òðàëëà * Point && price_200 < price_72 - øàã_òðàëëà * Point )|| price_72 == 0.0 )&& (price_200 - Ask) / Point > Gi_304) price_56 = price_200; if ((price_56 < price_72 || price_72 == 0.0 )&& price_56 != 0.0) if (!OrderModify(OrderTicket(), price_0, price_56, OrderTakeProfit(), 0, White)) Print("Error ", GetLastError(), " Trailing Modify Sell SL ", price_72, "->", price_56, " TP "); } } } } } if (Ê_àâòîðàñ÷åòà_ïðèáûëè == 0) { Ld_208 = ïðèáûëü_çàêð_1_íàïðàâëåíèÿ; Ld_216 = ïðèáûëü_çàêð_1_íàïðàâëåíèÿ; } else { if (Ld_32 == 0.0) Ld_208 = îáúåì_îðäåðà * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; else Ld_208 = Ld_32 * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; if (Ld_40 == 0.0) Ld_216 = îáúåì_îðäåðà * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; else Ld_216 = Ld_40 * Ê_àâòîðàñ÷åòà_ïðèáûëè * G_tickvalue_296; f0_12282("StopProfit1", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ Buy ", Ld_208), 5, 0, öâåò_âûâîäà_èíôîðìàöèè); f0_12282("StopProfit2", StringConcatenate("Àâòîðàñ÷åò ïðèáûëè çàêðûòèÿ Sell ", Ld_216), 5, 0, öâåò_âûâîäà_èíôîðìàöèè); } if (Ld_24 > óáûòîê_çàêð_ïî_îáù_ïðîôèòó && Ld_16 > óáûòîê_çàêð_ïî_îáù_ïðîôèòó) { ObjectSetText("Char.op", CharToStr(251), ðàçìåð_øðèôòà + 2, "Wingdings", Silver); if (Ld_24 >= Ld_208) { Print("Çàêðûòèå Buy ïî Profit ", Ld_24); f0_1880(1); return(0); } if (Ld_16 >= Ld_216) { Print("Çàêðûòèå Sell ïî Profit ", Ld_16); f0_1880(-1); return(0); } } else { ObjectSetText("Char.op", CharToStr(74), ðàçìåð_øðèôòà + 2, "Wingdings", Red); if (Ld_24 + Ld_16 >= ïðèáûëü_çàêð_2_íàïðàâëåíèé) { Print("Çàêðûòèå âñåõ îðäåðîâ ïî 2 íàïðàâëåíèÿì ", Ld_24 + Ld_16); f0_1880(0); return(0); } } if (Ld_24 <= óáûòîê_äëÿ_çàêðûòèÿ) { Print("Çàêðûòèå Buy ïî Loss ", Ld_24); f0_1880(1); return(0); } if (Ld_16 <= óáûòîê_äëÿ_çàêðûòèÿ) { Print("Çàêðûòèå Sell ïî Loss ", Ld_16); f0_1880(-1); return(0); } if (Ld_24 <= ìàêñèìàëüíûé_óáûòîê) { Comment("Íå îòêðûâàòü íàïðàâëåíèå Buy"); ObjectSetText("Char.b", CharToStr(225) + CharToStr(251), ðàçìåð_øðèôòà, "Wingdings", Red); } else ObjectSetText("Char.b", CharToStr(233), ðàçìåð_øðèôòà, "Wingdings", Lime); if (Ld_16 <= ìàêñèìàëüíûé_óáûòîê) { Comment("Íå îòêðûâàòü íàïðàâëåíèå Sell"); ObjectSetText("Char.s", CharToStr(226) + CharToStr(251), ðàçìåð_øðèôòà, "Wingdings", Red); } else ObjectSetText("Char.s", CharToStr(234), ðàçìåð_øðèôòà, "Wingdings", Lime); if (Li_88 == 0 || Li_92 == 0) irsi_240 = iRSI(NULL, òàéìôðåéì_èíäèêàòîðà, RSI_Period, PRICE_CLOSE, 0); if (Li_96 == 0 && Ld_24 > ìàêñèìàëüíûé_óáûòîê && ðàçðåøèòü_ñäåëêè_Buy) { if (Li_88 == 0) { if (irsi_240 < çîíà_ïåðåïðîäàííîñòè || (!îòêðûòèå_1_îðäåðà_ïî_èíäèêàòó)) price_224 = NormalizeDouble(Ask + ïåðâûé_øàã * Point, Digits); else price_224 = 0; } else { price_224 = NormalizeDouble(Ask + íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if (price_224 < NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) price_224 = NormalizeDouble(Ask + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits); } if ((Li_88 == 0 || (price_116 != 0.0 && price_224 >= NormalizeDouble(price_116 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) && îòêðûâàòü_îðäåðà_ïî_òðåíäó) || (price_124 != 0.0 && price_224 <= NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) )&& price_224 != 0.0) { if (Li_88 == 0) lots_232 = îáúåì_îðäåðà; else lots_232 = NormalizeDouble(îáúåì_îðäåðà * MathPow(óìíîæåíèå_îáúåìà_îðäåðà, Li_88) + Li_88 * äîáàâêà_ê_îáúåìó_îðäåðà, îêðóãëåíèå_ëîòîâ); if ((lots_232 < AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED) && Li_88 > 0 )|| çàïðåò_ïåðâîãî_îðäåðà) { if (OrderSend(Symbol(), OP_BUYSTOP, lots_232, price_224, G_slippage_316, 0, 0, "cm_EA_TSO", Magic, 0, Blue) == -1) Print("íåâîçìîæíî âûñòàâèòü îðäåð BUYSTOP Lot ", DoubleToStr(lots_232, 2), " Price ", price_224, " Ask ", Ask); } else Comment("íåâîçìîæíî âûñòàâèòü Lot ", DoubleToStr(lots_232, 2)); } } if (Li_100 == 0 && Ld_16 > ìàêñèìàëüíûé_óáûòîê && ðàçðåøèòü_ñäåëêè_Sell) { if (Li_92 == 0) { if (irsi_240 > çîíà_ïåðåêóïëåííîñòè || (!îòêðûòèå_1_îðäåðà_ïî_èíäèêàòó)) price_224 = NormalizeDouble(Bid - ïåðâûé_øàã * Point, Digits); else price_224 = 0; } else { price_224 = NormalizeDouble(Bid - íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if (price_224 < NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) price_224 = NormalizeDouble(Bid - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits); } if ((Li_92 == 0 || (price_140 != 0.0 && price_224 <= NormalizeDouble(price_140 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) && îòêðûâàòü_îðäåðà_ïî_òðåíäó) || (price_132 != 0.0 && price_224 >= NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) )&& price_224 != 0.0) { if (Li_92 == 0) lots_232 = îáúåì_îðäåðà; else lots_232 = NormalizeDouble(îáúåì_îðäåðà * MathPow(óìíîæåíèå_îáúåìà_îðäåðà, Li_92) + Li_92 * äîáàâêà_ê_îáúåìó_îðäåðà, îêðóãëåíèå_ëîòîâ); if ((lots_232 < AccountFreeMargin() / MarketInfo(Symbol(), MODE_MARGINREQUIRED) && Li_92 > 0 )|| çàïðåò_ïåðâîãî_îðäåðà) { if (OrderSend(Symbol(), OP_SELLSTOP, lots_232, price_224, G_slippage_316, 0, 0, "cm_EA_TSO", Magic, 0, Red) == -1) Print("íåâîçìîæíî âûñòàâèòü îðäåð SELLSTOP Lot ", DoubleToStr(lots_232, 2), " Price ", price_224, " Bid ", Bid); } else Comment("íåâîçìîæíî âûñòàâèòü Lot ", DoubleToStr(lots_232, 2)); } } ObjectSetText("Balance", StringConcatenate("Balance ", DoubleToStr(AccountBalance(), 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); ObjectSetText("Equity", StringConcatenate("Equity ", DoubleToStr(AccountEquity(), 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); ObjectSetText("FreeMargin", StringConcatenate("Free Margin ", DoubleToStr(AccountFreeMargin(), 2)), ðàçìåð_øðèôòà, "Arial", öâåò_âûâîäà_èíôîðìàöèè); double Ld_8 = Ld_24 + Ld_16; if (Ld_32 > 0.0) { ObjectSetText("ProfitB", StringConcatenate("Buy ", Li_88, " Profit ", DoubleToStr(Ld_24, 2), " Lot = ", DoubleToStr(Ld_32, 2)), ðàçìåð_øðèôòà, "Arial", f0_11449(Ld_24 > 0.0, 65280, 255)); } else ObjectSetText("ProfitB", "", ðàçìåð_øðèôòà, "Arial", Gray); if (Ld_40 > 0.0) { ObjectSetText("ProfitS", StringConcatenate("Sell ", Li_92, " Profit ", DoubleToStr(Ld_16, 2), " Lot = ", DoubleToStr(Ld_40, 2)), ðàçìåð_øðèôòà, "Arial", f0_11449(Ld_16 > 0.0, 65280, 255)); } else ObjectSetText("ProfitS", "", ðàçìåð_øðèôòà, "Arial", Gray); if (Ld_40 + Ld_32 > 0.0) ObjectSetText("Profit", StringConcatenate("Profit All ", DoubleToStr(Ld_8, 2)), ðàçìåð_øðèôòà, "Arial", f0_11449(Ld_8 >= 0.0, 32768, 255)); else ObjectSetText("Profit", "", ðàçìåð_øðèôòà, "Arial", Gray); if (price_148 != 0.0 && ðàçðåøèòü_ñäåëêè_Buy) { if (Li_88 == 0) price_224 = NormalizeDouble(Ask + ïåðâûé_øàã * Point, Digits); else price_224 = NormalizeDouble(Ask + íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if ((((NormalizeDouble(price_148 - øàã_ïåðåìåùåíèÿ * Point, Digits) > price_224 && price_224 <= NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) )|| price_124 == 0.0 || îòêðûâàòü_îðäåðà_ïî_òðåíäó )&& Li_88 == 0 )|| price_224 >= NormalizeDouble(price_116 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) || price_224 <= NormalizeDouble(price_124 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) { if (!OrderModify(ticket_108, price_224, 0, 0, 0, White)) Print("Error ", GetLastError(), " Order Modify Buy OOP ", price_148, "->", price_224); else Print("Order Buy Modify OOP ", price_0, "->", price_224); } } if (price_156 != 0.0 && ðàçðåøèòü_ñäåëêè_Sell) { if (Li_92 == 0) price_224 = NormalizeDouble(Bid - ïåðâûé_øàã * Point, Digits); else price_224 = NormalizeDouble(Bid - íå_ñòàâèòü_îðäåð_áëèæå * Point, Digits); if ((((NormalizeDouble(price_156 + øàã_ïåðåìåùåíèÿ * Point, Digits) < price_224 && price_224 >= NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) )|| price_132 == 0.0 || îòêðûâàòü_îðäåðà_ïî_òðåíäó )&& Li_92 == 0 )|| price_224 <= NormalizeDouble(price_140 - ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits) || price_224 >= NormalizeDouble(price_132 + ðàññòîÿíèå_ìåæäó_îðäåðàìè * Point, Digits)) { if (!OrderModify(ticket_112, price_224, 0, 0, 0, White)) Print("Error ", GetLastError(), " Order Modify Sell OOP ", price_156, "->", price_224); else Print("Order Sell Modify OOP ", price_0, "->", price_224); } } return (0); } // 2208AB04CCD91A8303FE0D7679EA198F int f0_1880(int Ai_0) { int error_8; int Li_12; int cmd_16; int count_24; bool Li_4 = TRUE; if ((!G_bool_292) || Key == 5 * G_acc_number_312 - Gi_308) { while (true) { for (int pos_20 = OrdersTotal() - 1; pos_20 >= 0; pos_20--) { if (OrderSelect(pos_20, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { cmd_16 = OrderType(); if ((cmd_16 == OP_BUY && Ai_0 == 1 )|| Ai_0 == 0) { Li_4 = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Bid, Digits), G_slippage_316, Blue); if (Li_4) Comment("Çàêðûò îðäåð N ", OrderTicket(), " ïðèáûëü ", OrderProfit(), " ", TimeToStr(TimeCurrent(), TIME_SECONDS)); } if ((cmd_16 == OP_SELL && Ai_0 == -1 )|| Ai_0 == 0) { Li_4 = OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(Ask, Digits), G_slippage_316, Red); if (Li_4) Comment("Çàêðûò îðäåð N ", OrderTicket(), " ïðèáûëü ", OrderProfit(), " ", TimeToStr(TimeCurrent(), TIME_SECONDS)); } if ((cmd_16 == OP_BUYSTOP && Ai_0 == 1 )|| Ai_0 == 0) Li_4 = OrderDelete(OrderTicket()); if ((cmd_16 == OP_SELLSTOP && Ai_0 == -1 )|| Ai_0 == 0) Li_4 = OrderDelete(OrderTicket()); if (!Li_4) { error_8 = GetLastError(); if (error_8 >= 2/* COMMON_ERROR */) { if (error_8 == 129/* INVALID_PRICE */) { Comment("Íåïðàâèëüíàÿ öåíà ", TimeToStr(TimeCurrent(), TIME_SECONDS)); RefreshRates(); continue; } if (error_8 == 146/* TRADE_CONTEXT_BUSY */) { if (!(IsTradeContextBusy())) continue; Sleep(2000); continue; } Comment("Îøèáêà ", error_8, " çàêðûòèÿ îðäåðà N ", OrderTicket(), " ", TimeToStr(TimeCurrent(), TIME_SECONDS)); } } } } } count_24 = 0; for (int pos_20 = 0; pos_20 < OrdersTotal(); pos_20++) { if (OrderSelect(pos_20, SELECT_BY_POS)) { if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { cmd_16 = OrderType(); if (((cmd_16 == OP_BUYSTOP || cmd_16 == OP_BUY )&& Ai_0 == 1 )|| Ai_0 == 0) count_24++; if (((cmd_16 == OP_SELLSTOP || cmd_16 == OP_SELL )&& Ai_0 == -1 )|| Ai_0 == 0) count_24++; } } } if (count_24 == 0) break; Li_12++; if (Li_12 > 10) { Alert(Symbol(), " Íå óäàëîñü çàêðûòü âñå ñäåëêè, îñòàëîñü åùå ", count_24); return (0); } Sleep(1000); RefreshRates(); if (!G_bool_292 || Key == 5 * G_acc_number_312 - Gi_308) continue; break; } } return (1); } // CB5FEB1B7314637725A2E73BDC9F7295 int f0_11449(bool Ai_0, int Ai_4, int Ai_8) { if (Ai_0) return (Ai_4); return (Ai_8); } // 93ADA40DA341D3F06C6B5392C2A501C5 int f0_8364() { string str_concat_0 = StringConcatenate(TerminalPath(), CharToStr(92), "experts", CharToStr(92), WindowExpertName(), ".mq", DoubleToStr(4, 0)); if (_lopen(str_concat_0, 4) >= 0) { _lclose(str_concat_0); return (1); } return (0); } // 0E521811373FA5F0D1EE10BF0C823CF0 double f0_833(int Ai_0, double Ad_4, double A_pips_12) { double price_20 = 0; if (A_pips_12 > 2.0) { if (Ai_0 == 1) price_20 = NormalizeDouble(Ad_4 - A_pips_12 * Point, Digits); else price_20 = NormalizeDouble(Ad_4 + A_pips_12 * Point, Digits); } else { if (A_pips_12 == 2.0) { if (Ai_0 == 1) { for (int Li_32 = 1; Li_32 < 100; Li_32++) { price_20 = iFractals(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, MODE_LOWER, Li_32); if (price_20 != 0.0) { price_20 -= NormalizeDouble(îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (Ad_4 - Gi_304 * Point > price_20) break; } else price_20 = 0; } ObjectDelete("FR Buy"); ObjectCreate("FR Buy", OBJ_ARROW, 0, Time[0], price_20 + Point, 0, 0, 0, 0); ObjectSet("FR Buy", OBJPROP_ARROWCODE, 218); ObjectSet("FR Buy", OBJPROP_COLOR, Red); } if (Ai_0 == -1) { for (int Li_28 = 1; Li_28 < 100; Li_28++) { price_20 = iFractals(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, MODE_UPPER, Li_28); if (price_20 != 0.0) { price_20 += NormalizeDouble(îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (Ad_4 + Gi_304 * Point < price_20) break; } else price_20 = 0; } ObjectDelete("FR Sell"); ObjectCreate("FR Sell", OBJ_ARROW, 0, Time[0], price_20, 0, 0, 0, 0); ObjectSet("FR Sell", OBJPROP_ARROWCODE, 217); ObjectSet("FR Sell", OBJPROP_COLOR, Red); } } if (A_pips_12 == 1.0) { if (Ai_0 == 1) { for (int Li_32 = 1; Li_32 < 500; Li_32++) { price_20 = NormalizeDouble(iLow(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, Li_32) - îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (price_20 != 0.0) { if (Ad_4 - Gi_304 * Point > price_20) break; price_20 = 0; } } ObjectDelete("FR Buy"); ObjectCreate("FR Buy", OBJ_ARROW, 0, iTime(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, 0), price_20 + Point, 0, 0, 0, 0); ObjectSet("FR Buy", OBJPROP_ARROWCODE, 159); ObjectSet("FR Buy", OBJPROP_COLOR, Red); } if (Ai_0 == -1) { for (int Li_28 = 1; Li_28 < 500; Li_28++) { price_20 = NormalizeDouble(iHigh(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, Li_28) + îòñòóï_îò_ôðàêòàëà_ñâå÷è * Point, Digits); if (price_20 != 0.0) { if (Ad_4 + Gi_304 * Point < price_20) break; price_20 = 0; } } ObjectDelete("FR Sell"); ObjectCreate("FR Sell", OBJ_ARROW, 0, iTime(Symbol(), òàéìôðåéì_ñâå÷åé_èëè_ôðàêòàëîâ, 0), price_20, 0, 0, 0, 0); ObjectSet("FR Sell", OBJPROP_ARROWCODE, 159); ObjectSet("FR Sell", OBJPROP_COLOR, Red); } } } if (Ai_0 == 1) { if (price_20 != 0.0) { ObjectDelete("SL Buy"); ObjectCreate("SL Buy", OBJ_ARROW, 0, Time[0] + 60 * Period(), price_20, 0, 0, 0, 0); ObjectSet("SL Buy", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SL Buy", OBJPROP_COLOR, Blue); } if (Gi_304 > 0) { ObjectDelete("STOPLEVEL-"); ObjectCreate("STOPLEVEL-", OBJ_ARROW, 0, Time[0] + 60 * Period(), Ad_4 - Gi_304 * Point, 0, 0, 0, 0); ObjectSet("STOPLEVEL-", OBJPROP_ARROWCODE, 4); ObjectSet("STOPLEVEL-", OBJPROP_COLOR, Blue); } } if (Ai_0 == -1) { if (price_20 != 0.0) { ObjectDelete("SL Sell"); ObjectCreate("SL Sell", OBJ_ARROW, 0, Time[0] + 60 * Period(), price_20, 0, 0, 0, 0); ObjectSet("SL Sell", OBJPROP_ARROWCODE, SYMBOL_RIGHTPRICE); ObjectSet("SL Sell", OBJPROP_COLOR, Pink); } if (Gi_304 > 0) { ObjectDelete("STOPLEVEL+"); ObjectCreate("STOPLEVEL+", OBJ_ARROW, 0, Time[0] + 60 * Period(), Ad_4 + Gi_304 * Point, 0, 0, 0, 0); ObjectSet("STOPLEVEL+", OBJPROP_ARROWCODE, 4); ObjectSet("STOPLEVEL+", OBJPROP_COLOR, Pink); } } return (price_20); } // 4CEF47202C318359E58492821436342B int f0_4285(int Ai_0) { if (Ai_0 > 43200) return (0); if (Ai_0 > 10080) return (43200); if (Ai_0 > 1440) return (10080); if (Ai_0 > 240) return (1440); if (Ai_0 > 60) return (240); if (Ai_0 > 30) return (60); if (Ai_0 > 15) return (30); if (Ai_0 > 5) return (15); if (Ai_0 > 1) return (5); if (Ai_0 == 1) return (1); if (Ai_0 == 0) return (Period()); return (0);} // A9E80DEDFA897CFD8F98BAD01077E0A7 string f0_9613(int Ai_0) { if (Ai_0 == 1) return ("M1"); if (Ai_0 == 5) return ("M5"); if (Ai_0 == 15) return ("M15"); if (Ai_0 == 30) return ("M30"); if (Ai_0 == 60) return ("H1"); if (Ai_0 == 240) return ("H4"); if (Ai_0 == 1440) return ("D1"); if (Ai_0 == 10080) return ("W1"); if (Ai_0 == 43200) return ("MN1"); return ("îøèáêà ïåðèîäà"); } // DABC5DBF75D151A587AD2276CD6849E6 void f0_12282(string A_name_0, string A_text_8, int A_x_16, int A_y_20, color A_color_24) { if (ObjectFind(A_name_0) == -1) { ObjectCreate(A_name_0, OBJ_LABEL, 0, 0, 0); ObjectSet(A_name_0, OBJPROP_CORNER, 1); ObjectSet(A_name_0, OBJPROP_XDISTANCE, A_x_16); ObjectSet(A_name_0, OBJPROP_YDISTANCE, A_y_20); } ObjectSetText(A_name_0, A_text_8, ðàçìåð_øðèôòà, "Arial", A_color_24); } 修改 在趋势和震荡行情中都获利 和在200USD单边行情中回撤低于50% 并获利 后的完整全部代码
10-27
"Mstar Bin Tool"是一款专门针对Mstar系列芯片开发的固件处理软件,主要用于智能电视及相关电子设备的系统维护与深度定制。该工具包特别标注了"LETV USB SCRIPT"模块,表明其对乐视品牌设备具有兼容性,能够通过USB通信协议执行固件读写操作。作为一款专业的固件编辑器,它允许技术人员对Mstar芯片的底层二进制文件进行解析、修改与重构,从而实现系统功能的调整、性能优化或故障修复。 工具包中的核心组件包括固件编译环境、设备通信脚本、操作界面及技术文档等。其中"letv_usb_script"是一套针对乐视设备的自动化操作程序,可指导用户完成固件烧录全过程。而"mstar_bin"模块则专门处理芯片的二进制数据文件,支持固件版本的升级、降级或个性化定制。工具采用7-Zip压缩格式封装,用户需先使用解压软件提取文件内容。 操作前需确认目标设备采用Mstar芯片架构并具备完好的USB接口。建议预先备份设备原始固件作为恢复保障。通过编辑器修改固件参数时,可调整系统配置、增删功能模块或修复已知缺陷。执行刷机操作时需严格遵循脚本指示的步骤顺序,保持设备供电稳定,避免中断导致硬件损坏。该工具适用于具备嵌入式系统知识的开发人员或高级用户,在进行设备定制化开发、系统调试或维护修复时使用。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值