//+------------------------------------------------------------------+ //| WPR14-20240410.mq5 | //| Voronin | //| Virtual Trailing Stop 2.mq5 | //| Copyright © 2020, Vladimir Karputov | //| https://www.mql5.com/ru/market/product/43516 | //| http://wmua.ru/slesar/ | //| Gerbut | //| andriygerbut@gmail.com | //+------------------------------------------------------------------+ #property version "1.00" #property version "1.000" #property strict // Libraries: //+------------------------------------------------------------------+ #include #include #include //#include #include //#include // https://www.mql5.com/ru/forum/170952/page134 CPositionInfo m_position; CSymbolInfo m_symbol; CTrade m_trade; //ArrayStructSorter sorter; //+------------------------------------------------------------------+ // Input parameters: //+------------------------------------------------------------------+ enum ENUM_SYMBOL { EURUSD = 0, GPBUSD = 1, USDCHF = 2, BTCUSD = 3, USDCAD = 4, AUDCAD = 5, NAZUSD = 6, AUDCHF = 7, AUDJPY = 8, AUDUSD = 9, BITCOIN= 10 }; input ENUM_SYMBOL SYMBOL; input ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT; input double LotSize = 0.01; input double TakeProfit = 0.0; input double StopLoss = NULL; input int Kratnist = 2; input bool UseBreakeven = true; //Use breakeven for TRAL input double StopLossLock = NULL; input ulong Magic_m = 9960; // M1-9991,H1-9960,H4-9240,D1-1440 input int Ugol = 30; // Угол наклона линии графика модернизированного WPR //+------------------------------------------------------------------+ double TakeProfitLock = MathRound(StopLoss / Kratnist); // Take Profit, in pips (1.00045-1.00055=1 pips) input double InpTrailingStart = 0.02; // Minimum profit to start trailing, in pips (1.00045-1.00055=1 pips) input double InpTrailingStep = 1.0; // Trailing Step, in pips (1.00045-1.00055=1 pips) input ulong InpDeviation = 10; // Deviation, in points (1.00045-1.00055=10 points) //+------------------------------------------------------------------+ // Глобальнi зміннi: double ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK); double bid = SymbolInfoDouble(Symbol(), SYMBOL_BID); double Tick_Size = SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_SIZE); // минимально возможное изменение цены ulong m_position_ticket = 0; ulong ClosedTicket = 0; MqlTradeRequest m_request; // структура торгового запроса MqlTradeResult m_result; // структура результата торгового запроса double m_stop_loss = 0.0; // Stop Loss -> double double m_StopLoss_Lock = 0.0; // Stop Loss Lock -> double double m_take_profit = 0.0; // Take Profit -> double double m_take_profit_Lock = 0.0; // Take Profit Lock -> double double m_trailing_stop = 0.0; // Trailing Stop -> double double m_trailing_start = 0.0; // Minimum profit to start trailing -> double double m_trailing_step = 0.0; // Trailing Step -> double double m_adjusted_point; // point value adjusted for 3 or 5 points int resultat = 0; ulong MS = 1000; int Ugol_WPR = 0; //+------------------------------------------------------------------+ // Methods-Events: | //+------------------------------------------------------------------+ int OnInit() { Print("Вошли в OnInit()"); m_trade.SetExpertMagicNumber(Magic_m); if(!m_symbol.Name(Symbol())) // sets symbol name { Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name"); return(INIT_FAILED); } RefreshRates(); //--- m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); m_trade.SetDeviationInPoints(InpDeviation); m_adjusted_point = Tick_Size; //m_symbol.Point()*digits_adjust; m_stop_loss = StopLoss * m_adjusted_point; m_StopLoss_Lock = StopLossLock * m_adjusted_point; m_take_profit = TakeProfit * m_adjusted_point; m_take_profit_Lock = TakeProfitLock * m_adjusted_point; m_trailing_start = InpTrailingStart; //* m_adjusted_point; прибыль m_trailing_step = InpTrailingStep * m_adjusted_point; //--- EventSetTimer(30); return (INIT_SUCCEEDED); } void OnTick() { Print("Вошли в OnTick()"); MqlTradeRequest tradeRequest = { }; MqlTick last_tick; MqlTick current_tick; SymbolInfoTick(Symbol(),last_tick); SymbolInfoTick(Symbol(),current_tick); double ask0 = current_tick.ask; //SymbolInfoDouble(Symbol(), SYMBOL_ASK); double bid0 = current_tick.bid; ulong time0 = current_tick.time_msc; ulong timeOpen = PositionGetInteger(POSITION_TIME_MSC); ENUM_POSITION_TYPE Type = (ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE); // тип позиции double Price = PositionGetDouble(POSITION_PRICE_OPEN); double Tp = PositionGetDouble(POSITION_TP); m_position_ticket = PositionGetInteger(POSITION_TICKET); double lt = PositionGetDouble(POSITION_VOLUME); // объем позиции int wprPeriod = 14; // Период индикатора Williams' Percent Range double WPArrayH1[]; ArraySetAsSeries(WPArrayH1,true); int WPDefH1 = iWPR(_Symbol, /*TimeFrame*/PERIOD_H1, wprPeriod); // индикатора Williams' Percent Range CopyBuffer(WPDefH1,0,0,3,WPArrayH1); double WPValH1 = NormalizeDouble(WPArrayH1[0],2); // текущее значение индикатора Williams' Percent Range double WPPrevValH1 = NormalizeDouble(WPArrayH1[1],2); // значение индикатора Williams' Percent Range на предыдущем тике double buyLevel = -80.0; // Уровень для открытия позиции на покупку double sellLevel = -20.0; // Уровень для открытия позиции на продажу //double WPArrayH1[]; //ArraySetAsSeries(WPArrayH1,true); //int WPDefH1 = iWPR(_Symbol, /*TimeFrame*/PERIOD_H1, wprPeriod); // индикатора Williams' Percent Range //CopyBuffer(WPDefH1,0,0,3,WPArrayH1); //double WPValH1 = NormalizeDouble(WPArrayH1[0],2); // текущее значение индикатора Williams' Percent Range //double WPPrevValH1 = NormalizeDouble(WPArrayH1[1],2); // значение индикатора Williams' Percent Range на предыдущем тике ulong magic = PositionGetInteger(POSITION_MAGIC); // MagicNumber позиции double indUgol45 = 25; // Индекс приведения тангенса к отношению катетов MqlTick ticks[]; MqlTick tick; SymbolInfoTick(Symbol(),tick); ulong t1 = time0-TFMS; ulong t0 = time0-(wprPeriod+1)*TFMS; int copied=CopyTicksRange(Symbol(),ticks,COPY_TICKS_INFO,t0,t1); // цены 14-ти периодов, до (текущего - TFMS) double bid_arr[]; ArrayResize(bid_arr,copied,100000); double ask_arr[]; ArrayResize(ask_arr,copied,100000); for(int i = 0; i < copied; i++) { bid_arr[i] = ticks[i].bid; ask_arr[i] = ticks[i].ask; } int IndMaxBid = ArrayMaximum(bid_arr, 0, copied-1); // Индекс элемента массива bid_arr с максимальной ценой double highestBid = bid_arr[IndMaxBid]; // Самая высокая цена bid за период int IndMinBid = ArrayMinimum(bid_arr, 0, copied-1); // Индекс элемента массива bid_arr с минимальной ценой double lowestBid = bid_arr[IndMinBid]; // Самая низкая цена bid за период int IndMaxAsk = ArrayMaximum(ask_arr, 0, copied-1); // Индекс элемента массива ask_arr с максимальной ценой double highestAsk = ask_arr[IndMaxAsk]; // Самая высокая цена ask за период int IndMinAsk = ArrayMinimum(ask_arr, 0, copied-1); // Индекс элемента массива ask_arr с минимальной ценой double lowestAsk = ask_arr[IndMinAsk]; // Самая низкая цена ask за период double highestHigh = (highestBid+highestAsk)/2; // Средняя наибольшего ask и наибольшего bid элемента double lowestLow = (lowestBid+lowestAsk)/2; // Средняя наименьшего ask и наименьшего bid элемента double PrevClose = (bid_arr[copied-1]+ask_arr[copied-1])/2; // Средняя ask и bid последнего элемента double WPR_Past = -100 * (NormalizeDouble((highestHigh - PrevClose) / (highestHigh - lowestLow),_Digits)); // Формула WPR double deltaWPR = (WPValH1-WPR_Past)/indUgol45; int ugolWPR = 0; if(deltaWPR == 0 ) ugolWPR = 0 ; if(deltaWPR > 0 && deltaWPR < 0.01746 ) ugolWPR = 1 ; if(deltaWPR > 0.01746 && deltaWPR < 0.03492 ) ugolWPR = 2 ; if(deltaWPR > 0.03492 && deltaWPR < 0.05241 ) ugolWPR = 3 ; if(deltaWPR > 0.05241 && deltaWPR < 0.06993 ) ugolWPR = 4 ; if(deltaWPR > 0.06993 && deltaWPR < 0.08749 ) ugolWPR = 5 ; if(deltaWPR > 0.08749 && deltaWPR < 0.1051 ) ugolWPR = 6 ; if(deltaWPR > 0.1051 && deltaWPR < 0.12278 ) ugolWPR = 7 ; if(deltaWPR > 0.12278 && deltaWPR < 0.14054 ) ugolWPR = 8 ; if(deltaWPR > 0.14054 && deltaWPR < 0.15838 ) ugolWPR = 9 ; if(deltaWPR > 0.15838 && deltaWPR < 0.17633 ) ugolWPR = 10 ; if(deltaWPR > 0.17633 && deltaWPR < 0.19438 ) ugolWPR = 11 ; if(deltaWPR > 0.19438 && deltaWPR < 0.21256 ) ugolWPR = 12 ; if(deltaWPR > 0.21256 && deltaWPR < 0.23087 ) ugolWPR = 13 ; if(deltaWPR > 0.23087 && deltaWPR < 0.24933 ) ugolWPR = 14 ; if(deltaWPR > 0.24933 && deltaWPR < 0.26795 ) ugolWPR = 15 ; if(deltaWPR > 0.26795 && deltaWPR < 0.28675 ) ugolWPR = 16 ; if(deltaWPR > 0.28675 && deltaWPR < 0.30573 ) ugolWPR = 17 ; if(deltaWPR > 0.30573 && deltaWPR < 0.32492 ) ugolWPR = 18 ; if(deltaWPR > 0.32492 && deltaWPR < 0.34433 ) ugolWPR = 19 ; if(deltaWPR > 0.34433 && deltaWPR < 0.36397 ) ugolWPR = 20 ; if(deltaWPR > 0.36397 && deltaWPR < 0.38386 ) ugolWPR = 21 ; if(deltaWPR > 0.38386 && deltaWPR < 0.40403 ) ugolWPR = 22 ; if(deltaWPR > 0.40403 && deltaWPR < 0.42447 ) ugolWPR = 23 ; if(deltaWPR > 0.42447 && deltaWPR < 0.44523 ) ugolWPR = 24 ; if(deltaWPR > 0.44523 && deltaWPR < 0.46631 ) ugolWPR = 25 ; if(deltaWPR > 0.46631 && deltaWPR < 0.48773 ) ugolWPR = 26 ; if(deltaWPR > 0.48773 && deltaWPR < 0.50953 ) ugolWPR = 27 ; if(deltaWPR > 0.50953 && deltaWPR < 0.53171 ) ugolWPR = 28 ; if(deltaWPR > 0.53171 && deltaWPR < 0.55431 ) ugolWPR = 29 ; if(deltaWPR > 0.55431 && deltaWPR < 0.57735 ) ugolWPR = 30 ; if(deltaWPR > 0.57735 && deltaWPR < 0.60086 ) ugolWPR = 31 ; if(deltaWPR > 0.60086 && deltaWPR < 0.62487 ) ugolWPR = 32 ; if(deltaWPR > 0.62487 && deltaWPR < 0.64941 ) ugolWPR = 33 ; if(deltaWPR > 0.64941 && deltaWPR < 0.67451 ) ugolWPR = 34 ; if(deltaWPR > 0.67451 && deltaWPR < 0.70021 ) ugolWPR = 35 ; if(deltaWPR > 0.70021 && deltaWPR < 0.72654 ) ugolWPR = 36 ; if(deltaWPR > 0.72654 && deltaWPR < 0.75355 ) ugolWPR = 37 ; if(deltaWPR > 0.75355 && deltaWPR < 0.78129 ) ugolWPR = 38 ; if(deltaWPR > 0.78129 && deltaWPR < 0.80978 ) ugolWPR = 39 ; if(deltaWPR > 0.80978 && deltaWPR < 0.8391 ) ugolWPR = 40 ; if(deltaWPR > 0.8391 && deltaWPR < 0.86929 ) ugolWPR = 41 ; if(deltaWPR > 0.86929 && deltaWPR < 0.9004 ) ugolWPR = 42 ; if(deltaWPR > 0.9004 && deltaWPR < 0.93252 ) ugolWPR = 43 ; if(deltaWPR > 0.93252 && deltaWPR < 0.96569 ) ugolWPR = 44 ; if(deltaWPR > 0.96569 && deltaWPR < 1 ) ugolWPR = 45 ; if(deltaWPR > 1 && deltaWPR < 1.03553 ) ugolWPR = 46 ; if(deltaWPR > 1.03553 && deltaWPR < 1.07237 ) ugolWPR = 47 ; if(deltaWPR > 1.07237 && deltaWPR < 1.11061 ) ugolWPR = 48 ; if(deltaWPR > 1.11061 && deltaWPR < 1.15037 ) ugolWPR = 49 ; if(deltaWPR > 1.15037 && deltaWPR < 1.19175 ) ugolWPR = 50 ; if(deltaWPR > 1.19175 && deltaWPR < 1.2349 ) ugolWPR = 51 ; if(deltaWPR > 1.2349 && deltaWPR < 1.27994 ) ugolWPR = 52 ; if(deltaWPR > 1.27994 && deltaWPR < 1.32704 ) ugolWPR = 53 ; if(deltaWPR > 1.32704 && deltaWPR < 1.37638 ) ugolWPR = 54 ; if(deltaWPR > 1.37638 && deltaWPR < 1.42815 ) ugolWPR = 55 ; if(deltaWPR > 1.42815 && deltaWPR < 1.48256 ) ugolWPR = 56 ; if(deltaWPR > 1.48256 && deltaWPR < 1.53986 ) ugolWPR = 57 ; if(deltaWPR > 1.53986 && deltaWPR < 1.60033 ) ugolWPR = 58 ; if(deltaWPR > 1.60033 && deltaWPR < 1.66428 ) ugolWPR = 59 ; if(deltaWPR > 1.66428 && deltaWPR < 1.73205 ) ugolWPR = 60 ; if(deltaWPR > 1.73205 && deltaWPR < 1.80405 ) ugolWPR = 61 ; if(deltaWPR > 1.80405 && deltaWPR < 1.88073 ) ugolWPR = 62 ; if(deltaWPR > 1.88073 && deltaWPR < 1.96261 ) ugolWPR = 63 ; if(deltaWPR > 1.96261 && deltaWPR < 2.0503 ) ugolWPR = 64 ; if(deltaWPR > 2.0503 && deltaWPR < 2.14451 ) ugolWPR = 65 ; if(deltaWPR > 2.14451 && deltaWPR < 2.24604 ) ugolWPR = 66 ; if(deltaWPR > 2.24604 && deltaWPR < 2.35585 ) ugolWPR = 67 ; if(deltaWPR > 2.35585 && deltaWPR < 2.47509 ) ugolWPR = 68 ; if(deltaWPR > 2.47509 && deltaWPR < 2.60509 ) ugolWPR = 69 ; if(deltaWPR > 2.60509 && deltaWPR < 2.74748 ) ugolWPR = 70 ; if(deltaWPR > 2.74748 && deltaWPR < 2.90421 ) ugolWPR = 71 ; if(deltaWPR > 2.90421 && deltaWPR < 3.07768 ) ugolWPR = 72 ; if(deltaWPR > 3.07768 && deltaWPR < 3.27085 ) ugolWPR = 73 ; if(deltaWPR > 3.27085 && deltaWPR < 3.48741 ) ugolWPR = 74 ; if(deltaWPR > 3.48741 && deltaWPR < 3.73205 ) ugolWPR = 75 ; if(deltaWPR > 3.73205 && deltaWPR < 4.01078 ) ugolWPR = 76 ; if(deltaWPR > 4.01078 && deltaWPR < 4.33148 ) ugolWPR = 77 ; if(deltaWPR > 4.33148 && deltaWPR < 4.70463 ) ugolWPR = 78 ; if(deltaWPR > 4.70463 && deltaWPR < 5.14455 ) ugolWPR = 79 ; if(deltaWPR > 5.14455 && deltaWPR < 5.67128 ) ugolWPR = 80 ; if(deltaWPR > 5.67128 && deltaWPR < 6.31375 ) ugolWPR = 81 ; if(deltaWPR > 6.31375 && deltaWPR < 7.11537 ) ugolWPR = 82 ; if(deltaWPR > 7.11537 && deltaWPR < 8.14435 ) ugolWPR = 83 ; if(deltaWPR > 8.14435 && deltaWPR < 9.51436 ) ugolWPR = 84 ; if(deltaWPR > 9.51436 && deltaWPR < 11.43005 ) ugolWPR = 85 ; if(deltaWPR > 11.43005 && deltaWPR < 14.30067 ) ugolWPR = 86 ; if(deltaWPR > 14.30067 && deltaWPR < 19.08114 ) ugolWPR = 87 ; if(deltaWPR > 19.08114 && deltaWPR < 28.63625 ) ugolWPR = 88 ; if(deltaWPR > 28.63625 && deltaWPR < 57.28996 ) ugolWPR = 89 ; if(deltaWPR > 57.28996 && deltaWPR < DBL_MAX ) ugolWPR = 90 ; if(deltaWPR > DBL_MAX && deltaWPR < -57.28996 ) ugolWPR = 91 ; if(deltaWPR > -57.28996 && deltaWPR < -28.63625 ) ugolWPR = 92 ; if(deltaWPR > -28.63625 && deltaWPR < -19.08114 ) ugolWPR = 93 ; if(deltaWPR > -19.08114 && deltaWPR < -14.30067 ) ugolWPR = 94 ; if(deltaWPR > -14.30067 && deltaWPR < -11.43005 ) ugolWPR = 95 ; if(deltaWPR > -11.43005 && deltaWPR < -9.51436 ) ugolWPR = 96 ; if(deltaWPR > -9.51436 && deltaWPR < -8.14435 ) ugolWPR = 97 ; if(deltaWPR > -8.14435 && deltaWPR < -7.11537 ) ugolWPR = 98 ; if(deltaWPR > -7.11537 && deltaWPR < -6.31375 ) ugolWPR = 99 ; if(deltaWPR > -6.31375 && deltaWPR < -5.67128 ) ugolWPR = 100 ; if(deltaWPR > -5.67128 && deltaWPR < -5.14455 ) ugolWPR = 101 ; if(deltaWPR > -5.14455 && deltaWPR < -4.70463 ) ugolWPR = 102 ; if(deltaWPR > -4.70463 && deltaWPR < -4.33148 ) ugolWPR = 103 ; if(deltaWPR > -4.33148 && deltaWPR < -4.01078 ) ugolWPR = 104 ; if(deltaWPR > -4.01078 && deltaWPR < -3.73205 ) ugolWPR = 105 ; if(deltaWPR > -3.73205 && deltaWPR < -3.48741 ) ugolWPR = 106 ; if(deltaWPR > -3.48741 && deltaWPR < -3.27085 ) ugolWPR = 107 ; if(deltaWPR > -3.27085 && deltaWPR < -3.07768 ) ugolWPR = 108 ; if(deltaWPR > -3.07768 && deltaWPR < -2.90421 ) ugolWPR = 109 ; if(deltaWPR > -2.90421 && deltaWPR < -2.74748 ) ugolWPR = 110 ; if(deltaWPR > -2.74748 && deltaWPR < -2.60509 ) ugolWPR = 111 ; if(deltaWPR > -2.60509 && deltaWPR < -2.47509 ) ugolWPR = 112 ; if(deltaWPR > -2.47509 && deltaWPR < -2.35585 ) ugolWPR = 113 ; if(deltaWPR > -2.35585 && deltaWPR < -2.24604 ) ugolWPR = 114 ; if(deltaWPR > -2.24604 && deltaWPR < -2.14451 ) ugolWPR = 115 ; if(deltaWPR > -2.14451 && deltaWPR < -2.0503 ) ugolWPR = 116 ; if(deltaWPR > -2.0503 && deltaWPR < -1.96261 ) ugolWPR = 117 ; if(deltaWPR > -1.96261 && deltaWPR < -1.88073 ) ugolWPR = 118 ; if(deltaWPR > -1.88073 && deltaWPR < -1.80405 ) ugolWPR = 119 ; if(deltaWPR > -1.80405 && deltaWPR < -1.73205 ) ugolWPR = 120 ; if(deltaWPR > -1.73205 && deltaWPR < -1.66428 ) ugolWPR = 121 ; if(deltaWPR > -1.66428 && deltaWPR < -1.60033 ) ugolWPR = 122 ; if(deltaWPR > -1.60033 && deltaWPR < -1.53986 ) ugolWPR = 123 ; if(deltaWPR > -1.53986 && deltaWPR < -1.48256 ) ugolWPR = 124 ; if(deltaWPR > -1.48256 && deltaWPR < -1.42815 ) ugolWPR = 125 ; if(deltaWPR > -1.42815 && deltaWPR < -1.37638 ) ugolWPR = 126 ; if(deltaWPR > -1.37638 && deltaWPR < -1.32704 ) ugolWPR = 127 ; if(deltaWPR > -1.32704 && deltaWPR < -1.27994 ) ugolWPR = 128 ; if(deltaWPR > -1.27994 && deltaWPR < -1.2349 ) ugolWPR = 129 ; if(deltaWPR > -1.2349 && deltaWPR < -1.19175 ) ugolWPR = 130 ; if(deltaWPR > -1.19175 && deltaWPR < -1.15037 ) ugolWPR = 131 ; if(deltaWPR > -1.15037 && deltaWPR < -1.11061 ) ugolWPR = 132 ; if(deltaWPR > -1.11061 && deltaWPR < -1.07237 ) ugolWPR = 133 ; if(deltaWPR > -1.07237 && deltaWPR < -1.03553 ) ugolWPR = 134 ; if(deltaWPR > -1.03553 && deltaWPR < -1 ) ugolWPR = 135 ; if(deltaWPR > -1 && deltaWPR < -0.96569 ) ugolWPR = 136 ; if(deltaWPR > -0.96569 && deltaWPR < -0.93252 ) ugolWPR = 137 ; if(deltaWPR > -0.93252 && deltaWPR < -0.9004 ) ugolWPR = 138 ; if(deltaWPR > -0.9004 && deltaWPR < -0.86929 ) ugolWPR = 139 ; if(deltaWPR > -0.86929 && deltaWPR < -0.8391 ) ugolWPR = 140 ; if(deltaWPR > -0.8391 && deltaWPR < -0.80978 ) ugolWPR = 141 ; if(deltaWPR > -0.80978 && deltaWPR < -0.78129 ) ugolWPR = 142 ; if(deltaWPR > -0.78129 && deltaWPR < -0.75355 ) ugolWPR = 143 ; if(deltaWPR > -0.75355 && deltaWPR < -0.72654 ) ugolWPR = 144 ; if(deltaWPR > -0.72654 && deltaWPR < -0.70021 ) ugolWPR = 145 ; if(deltaWPR > -0.70021 && deltaWPR < -0.67451 ) ugolWPR = 146 ; if(deltaWPR > -0.67451 && deltaWPR < -0.64941 ) ugolWPR = 147 ; if(deltaWPR > -0.64941 && deltaWPR < -0.62487 ) ugolWPR = 148 ; if(deltaWPR > -0.62487 && deltaWPR < -0.60086 ) ugolWPR = 149 ; if(deltaWPR > -0.60086 && deltaWPR < -0.57735 ) ugolWPR = 150 ; if(deltaWPR > -0.57735 && deltaWPR < -0.55431 ) ugolWPR = 151 ; if(deltaWPR > -0.55431 && deltaWPR < -0.53171 ) ugolWPR = 152 ; if(deltaWPR > -0.53171 && deltaWPR < -0.50953 ) ugolWPR = 153 ; if(deltaWPR > -0.50953 && deltaWPR < -0.48773 ) ugolWPR = 154 ; if(deltaWPR > -0.48773 && deltaWPR < -0.46631 ) ugolWPR = 155 ; if(deltaWPR > -0.46631 && deltaWPR < -0.44523 ) ugolWPR = 156 ; if(deltaWPR > -0.44523 && deltaWPR < -0.42447 ) ugolWPR = 157 ; if(deltaWPR > -0.42447 && deltaWPR < -0.40403 ) ugolWPR = 158 ; if(deltaWPR > -0.40403 && deltaWPR < -0.38386 ) ugolWPR = 159 ; if(deltaWPR > -0.38386 && deltaWPR < -0.36397 ) ugolWPR = 160 ; if(deltaWPR > -0.36397 && deltaWPR < -0.34433 ) ugolWPR = 161 ; if(deltaWPR > -0.34433 && deltaWPR < -0.32492 ) ugolWPR = 162 ; if(deltaWPR > -0.32492 && deltaWPR < -0.30573 ) ugolWPR = 163 ; if(deltaWPR > -0.30573 && deltaWPR < -0.28675 ) ugolWPR = 164 ; if(deltaWPR > -0.28675 && deltaWPR < -0.26795 ) ugolWPR = 165 ; if(deltaWPR > -0.26795 && deltaWPR < -0.24933 ) ugolWPR = 166 ; if(deltaWPR > -0.24933 && deltaWPR < -0.23087 ) ugolWPR = 167 ; if(deltaWPR > -0.23087 && deltaWPR < -0.21256 ) ugolWPR = 168 ; if(deltaWPR > -0.21256 && deltaWPR < -0.19438 ) ugolWPR = 169 ; if(deltaWPR > -0.19438 && deltaWPR < -0.17633 ) ugolWPR = 170 ; if(deltaWPR > -0.17633 && deltaWPR < -0.15838 ) ugolWPR = 171 ; if(deltaWPR > -0.15838 && deltaWPR < -0.14054 ) ugolWPR = 172 ; if(deltaWPR > -0.14054 && deltaWPR < -0.12278 ) ugolWPR = 173 ; if(deltaWPR > -0.12278 && deltaWPR < -0.1051 ) ugolWPR = 174 ; if(deltaWPR > -0.1051 && deltaWPR < -0.08749 ) ugolWPR = 175 ; if(deltaWPR > -0.08749 && deltaWPR < -0.06993 ) ugolWPR = 176 ; if(deltaWPR > -0.06993 && deltaWPR < -0.05241 ) ugolWPR = 177 ; if(deltaWPR > -0.05241 && deltaWPR < -0.03492 ) ugolWPR = 178 ; if(deltaWPR > -0.03492 && deltaWPR < -0.01746 ) ugolWPR = 179 ; if(deltaWPR > -0.01746 && deltaWPR < 0 ) ugolWPR = 180 ; if(deltaWPR > 0 && deltaWPR < 0.01746 ) ugolWPR = -179 ; // 181 if(deltaWPR > 0.01746 && deltaWPR < 0.03492 ) ugolWPR = -178 ; // 182 if(deltaWPR > 0.03492 && deltaWPR < 0.05241 ) ugolWPR = -177 ; // 183 if(deltaWPR > 0.05241 && deltaWPR < 0.06993 ) ugolWPR = -176 ; // 184 if(deltaWPR > 0.06993 && deltaWPR < 0.08749 ) ugolWPR = -175 ; // 185 if(deltaWPR > 0.08749 && deltaWPR < 0.1051 ) ugolWPR = -174 ; // 186 if(deltaWPR > 0.1051 && deltaWPR < 0.12278 ) ugolWPR = -173 ; // 187 if(deltaWPR > 0.12278 && deltaWPR < 0.14054 ) ugolWPR = -172 ; // 188 if(deltaWPR > 0.14054 && deltaWPR < 0.15838 ) ugolWPR = -171 ; // 189 if(deltaWPR > 0.15838 && deltaWPR < 0.17633 ) ugolWPR = -170 ; // 190 if(deltaWPR > 0.17633 && deltaWPR < 0.19438 ) ugolWPR = -169 ; // 191 if(deltaWPR > 0.19438 && deltaWPR < 0.21256 ) ugolWPR = -168 ; // 192 if(deltaWPR > 0.21256 && deltaWPR < 0.23087 ) ugolWPR = -167 ; // 193 if(deltaWPR > 0.23087 && deltaWPR < 0.24933 ) ugolWPR = -166 ; // 194 if(deltaWPR > 0.24933 && deltaWPR < 0.26795 ) ugolWPR = -165 ; // 195 if(deltaWPR > 0.26795 && deltaWPR < 0.28675 ) ugolWPR = -164 ; // 196 if(deltaWPR > 0.28675 && deltaWPR < 0.30573 ) ugolWPR = -163 ; // 197 if(deltaWPR > 0.30573 && deltaWPR < 0.32492 ) ugolWPR = -162 ; // 198 if(deltaWPR > 0.32492 && deltaWPR < 0.34433 ) ugolWPR = -161 ; // 199 if(deltaWPR > 0.34433 && deltaWPR < 0.36397 ) ugolWPR = -160 ; // 200 if(deltaWPR > 0.36397 && deltaWPR < 0.38386 ) ugolWPR = -159 ; // 201 if(deltaWPR > 0.38386 && deltaWPR < 0.40403 ) ugolWPR = -158 ; // 202 if(deltaWPR > 0.40403 && deltaWPR < 0.42447 ) ugolWPR = -157 ; // 203 if(deltaWPR > 0.42447 && deltaWPR < 0.44523 ) ugolWPR = -156 ; // 204 if(deltaWPR > 0.44523 && deltaWPR < 0.46631 ) ugolWPR = -155 ; // 205 if(deltaWPR > 0.46631 && deltaWPR < 0.48773 ) ugolWPR = -154 ; // 206 if(deltaWPR > 0.48773 && deltaWPR < 0.50953 ) ugolWPR = -153 ; // 207 if(deltaWPR > 0.50953 && deltaWPR < 0.53171 ) ugolWPR = -152 ; // 208 if(deltaWPR > 0.53171 && deltaWPR < 0.55431 ) ugolWPR = -151 ; // 209 if(deltaWPR > 0.55431 && deltaWPR < 0.57735 ) ugolWPR = -150 ; // 210 if(deltaWPR > 0.57735 && deltaWPR < 0.60086 ) ugolWPR = -149 ; // 211 if(deltaWPR > 0.60086 && deltaWPR < 0.62487 ) ugolWPR = -148 ; // 212 if(deltaWPR > 0.62487 && deltaWPR < 0.64941 ) ugolWPR = -147 ; // 213 if(deltaWPR > 0.64941 && deltaWPR < 0.67451 ) ugolWPR = -146 ; // 214 if(deltaWPR > 0.67451 && deltaWPR < 0.70021 ) ugolWPR = -145 ; // 215 if(deltaWPR > 0.70021 && deltaWPR < 0.72654 ) ugolWPR = -144 ; // 216 if(deltaWPR > 0.72654 && deltaWPR < 0.75355 ) ugolWPR = -143 ; // 217 if(deltaWPR > 0.75355 && deltaWPR < 0.78129 ) ugolWPR = -142 ; // 218 if(deltaWPR > 0.78129 && deltaWPR < 0.80978 ) ugolWPR = -141 ; // 219 if(deltaWPR > 0.80978 && deltaWPR < 0.8391 ) ugolWPR = -140 ; // 220 if(deltaWPR > 0.8391 && deltaWPR < 0.86929 ) ugolWPR = -139 ; // 221 if(deltaWPR > 0.86929 && deltaWPR < 0.9004 ) ugolWPR = -138 ; // 222 if(deltaWPR > 0.9004 && deltaWPR < 0.93252 ) ugolWPR = -137 ; // 223 if(deltaWPR > 0.93252 && deltaWPR < 0.96569 ) ugolWPR = -136 ; // 224 if(deltaWPR > 0.96569 && deltaWPR < 1 ) ugolWPR = -135 ; // 225 if(deltaWPR > 1 && deltaWPR < 1.03553 ) ugolWPR = -134 ; // 226 if(deltaWPR > 1.03553 && deltaWPR < 1.07237 ) ugolWPR = -133 ; // 227 if(deltaWPR > 1.07237 && deltaWPR < 1.11061 ) ugolWPR = -132 ; // 228 if(deltaWPR > 1.11061 && deltaWPR < 1.15037 ) ugolWPR = -131 ; // 229 if(deltaWPR > 1.15037 && deltaWPR < 1.19175 ) ugolWPR = -130 ; // 230 if(deltaWPR > 1.19175 && deltaWPR < 1.2349 ) ugolWPR = -129 ; // 231 if(deltaWPR > 1.2349 && deltaWPR < 1.27994 ) ugolWPR = -128 ; // 232 if(deltaWPR > 1.27994 && deltaWPR < 1.32704 ) ugolWPR = -127 ; // 233 if(deltaWPR > 1.32704 && deltaWPR < 1.37638 ) ugolWPR = -126 ; // 234 if(deltaWPR > 1.37638 && deltaWPR < 1.42815 ) ugolWPR = -125 ; // 235 if(deltaWPR > 1.42815 && deltaWPR < 1.48256 ) ugolWPR = -124 ; // 236 if(deltaWPR > 1.48256 && deltaWPR < 1.53986 ) ugolWPR = -123 ; // 237 if(deltaWPR > 1.53986 && deltaWPR < 1.60033 ) ugolWPR = -122 ; // 238 if(deltaWPR > 1.60033 && deltaWPR < 1.66428 ) ugolWPR = -121 ; // 239 if(deltaWPR > 1.66428 && deltaWPR < 1.73205 ) ugolWPR = -120 ; // 240 if(deltaWPR > 1.73205 && deltaWPR < 1.80405 ) ugolWPR = -119 ; // 241 if(deltaWPR > 1.80405 && deltaWPR < 1.88073 ) ugolWPR = -118 ; // 242 if(deltaWPR > 1.88073 && deltaWPR < 1.96261 ) ugolWPR = -117 ; // 243 if(deltaWPR > 1.96261 && deltaWPR < 2.0503 ) ugolWPR = -116 ; // 244 if(deltaWPR > 2.0503 && deltaWPR < 2.14451 ) ugolWPR = -115 ; // 245 if(deltaWPR > 2.14451 && deltaWPR < 2.24604 ) ugolWPR = -114 ; // 246 if(deltaWPR > 2.24604 && deltaWPR < 2.35585 ) ugolWPR = -113 ; // 247 if(deltaWPR > 2.35585 && deltaWPR < 2.47509 ) ugolWPR = -112 ; // 248 if(deltaWPR > 2.47509 && deltaWPR < 2.60509 ) ugolWPR = -111 ; // 249 if(deltaWPR > 2.60509 && deltaWPR < 2.74748 ) ugolWPR = -110 ; // 250 if(deltaWPR > 2.74748 && deltaWPR < 2.90421 ) ugolWPR = -109 ; // 251 if(deltaWPR > 2.90421 && deltaWPR < 3.07768 ) ugolWPR = -108 ; // 252 if(deltaWPR > 3.07768 && deltaWPR < 3.27085 ) ugolWPR = -107 ; // 253 if(deltaWPR > 3.27085 && deltaWPR < 3.48741 ) ugolWPR = -106 ; // 254 if(deltaWPR > 3.48741 && deltaWPR < 3.73205 ) ugolWPR = -105 ; // 255 if(deltaWPR > 3.73205 && deltaWPR < 4.01078 ) ugolWPR = -104 ; // 256 if(deltaWPR > 4.01078 && deltaWPR < 4.33148 ) ugolWPR = -103 ; // 257 if(deltaWPR > 4.33148 && deltaWPR < 4.70463 ) ugolWPR = -102 ; // 258 if(deltaWPR > 4.70463 && deltaWPR < 5.14455 ) ugolWPR = -101 ; // 259 if(deltaWPR > 5.14455 && deltaWPR < 5.67128 ) ugolWPR = -100 ; // 260 if(deltaWPR > 5.67128 && deltaWPR < 6.31375 ) ugolWPR = -99 ; // 261 if(deltaWPR > 6.31375 && deltaWPR < 7.11537 ) ugolWPR = -98 ; // 262 if(deltaWPR > 7.11537 && deltaWPR < 8.14435 ) ugolWPR = -97 ; // 263 if(deltaWPR > 8.14435 && deltaWPR < 9.51436 ) ugolWPR = -96 ; // 264 if(deltaWPR > 9.51436 && deltaWPR < 11.43005 ) ugolWPR = -95 ; // 265 if(deltaWPR > 11.43005 && deltaWPR < 14.30067 ) ugolWPR = -94 ; // 266 if(deltaWPR > 14.30067 && deltaWPR < 19.08114 ) ugolWPR = -93 ; // 267 if(deltaWPR > 19.08114 && deltaWPR < 28.63625 ) ugolWPR = -92 ; // 268 if(deltaWPR > 28.63625 && deltaWPR < 57.28996 ) ugolWPR = -91 ; // 269 if(deltaWPR > 57.28996 && deltaWPR < -DBL_MAX ) ugolWPR = -90 ; // 270 if(deltaWPR > -DBL_MAX && deltaWPR < -57.28996 ) ugolWPR = -89 ; // 271 if(deltaWPR > -57.28996 && deltaWPR < -28.63625 ) ugolWPR = -88 ; // 272 if(deltaWPR > -28.63625 && deltaWPR < -19.08114 ) ugolWPR = -87 ; // 273 if(deltaWPR > -19.08114 && deltaWPR < -14.30067 ) ugolWPR = -86 ; // 274 if(deltaWPR > -14.30067 && deltaWPR < -11.43005 ) ugolWPR = -85 ; // 275 if(deltaWPR > -11.43005 && deltaWPR < -9.51436 ) ugolWPR = -84 ; // 276 if(deltaWPR > -9.51436 && deltaWPR < -8.14435 ) ugolWPR = -83 ; // 277 if(deltaWPR > -8.14435 && deltaWPR < -7.11537 ) ugolWPR = -82 ; // 278 if(deltaWPR > -7.11537 && deltaWPR < -6.31375 ) ugolWPR = -81 ; // 279 if(deltaWPR > -6.31375 && deltaWPR < -5.67128 ) ugolWPR = -80 ; // 280 if(deltaWPR > -5.67128 && deltaWPR < -5.14455 ) ugolWPR = -79 ; // 281 if(deltaWPR > -5.14455 && deltaWPR < -4.70463 ) ugolWPR = -78 ; // 282 if(deltaWPR > -4.70463 && deltaWPR < -4.33148 ) ugolWPR = -77 ; // 283 if(deltaWPR > -4.33148 && deltaWPR < -4.01078 ) ugolWPR = -76 ; // 284 if(deltaWPR > -4.01078 && deltaWPR < -3.73205 ) ugolWPR = -75 ; // 285 if(deltaWPR > -3.73205 && deltaWPR < -3.48741 ) ugolWPR = -74 ; // 286 if(deltaWPR > -3.48741 && deltaWPR < -3.27085 ) ugolWPR = -73 ; // 287 if(deltaWPR > -3.27085 && deltaWPR < -3.07768 ) ugolWPR = -72 ; // 288 if(deltaWPR > -3.07768 && deltaWPR < -2.90421 ) ugolWPR = -71 ; // 289 if(deltaWPR > -2.90421 && deltaWPR < -2.74748 ) ugolWPR = -70 ; // 290 if(deltaWPR > -2.74748 && deltaWPR < -2.60509 ) ugolWPR = -69 ; // 291 if(deltaWPR > -2.60509 && deltaWPR < -2.47509 ) ugolWPR = -68 ; // 292 if(deltaWPR > -2.47509 && deltaWPR < -2.35585 ) ugolWPR = -67 ; // 293 if(deltaWPR > -2.35585 && deltaWPR < -2.24604 ) ugolWPR = -66 ; // 294 if(deltaWPR > -2.24604 && deltaWPR < -2.14451 ) ugolWPR = -65 ; // 295 if(deltaWPR > -2.14451 && deltaWPR < -2.0503 ) ugolWPR = -64 ; // 296 if(deltaWPR > -2.0503 && deltaWPR < -1.96261 ) ugolWPR = -63 ; // 297 if(deltaWPR > -1.96261 && deltaWPR < -1.88073 ) ugolWPR = -62 ; // 298 if(deltaWPR > -1.88073 && deltaWPR < -1.80405 ) ugolWPR = -61 ; // 299 if(deltaWPR > -1.80405 && deltaWPR < -1.73205 ) ugolWPR = -60 ; // 300 if(deltaWPR > -1.73205 && deltaWPR < -1.66428 ) ugolWPR = -59 ; // 301 if(deltaWPR > -1.66428 && deltaWPR < -1.60033 ) ugolWPR = -58 ; // 302 if(deltaWPR > -1.60033 && deltaWPR < -1.53986 ) ugolWPR = -57 ; // 303 if(deltaWPR > -1.53986 && deltaWPR < -1.48256 ) ugolWPR = -56 ; // 304 if(deltaWPR > -1.48256 && deltaWPR < -1.42815 ) ugolWPR = -55 ; // 305 if(deltaWPR > -1.42815 && deltaWPR < -1.37638 ) ugolWPR = -54 ; // 306 if(deltaWPR > -1.37638 && deltaWPR < -1.32704 ) ugolWPR = -53 ; // 307 if(deltaWPR > -1.32704 && deltaWPR < -1.27994 ) ugolWPR = -52 ; // 308 if(deltaWPR > -1.27994 && deltaWPR < -1.2349 ) ugolWPR = -51 ; // 309 if(deltaWPR > -1.2349 && deltaWPR < -1.19175 ) ugolWPR = -50 ; // 310 if(deltaWPR > -1.19175 && deltaWPR < -1.15037 ) ugolWPR = -49 ; // 311 if(deltaWPR > -1.15037 && deltaWPR < -1.11061 ) ugolWPR = -48 ; // 312 if(deltaWPR > -1.11061 && deltaWPR < -1.07237 ) ugolWPR = -47 ; // 313 if(deltaWPR > -1.07237 && deltaWPR < -1.03553 ) ugolWPR = -46 ; // 314 if(deltaWPR > -1.03553 && deltaWPR < -1 ) ugolWPR = -45 ; // 315 if(deltaWPR > -1 && deltaWPR < -0.96569 ) ugolWPR = -44 ; // 316 if(deltaWPR > -0.96569 && deltaWPR < -0.93252 ) ugolWPR = -43 ; // 317 if(deltaWPR > -0.93252 && deltaWPR < -0.9004 ) ugolWPR = -42 ; // 318 if(deltaWPR > -0.9004 && deltaWPR < -0.86929 ) ugolWPR = -41 ; // 319 if(deltaWPR > -0.86929 && deltaWPR < -0.8391 ) ugolWPR = -40 ; // 320 if(deltaWPR > -0.8391 && deltaWPR < -0.80978 ) ugolWPR = -39 ; // 321 if(deltaWPR > -0.80978 && deltaWPR < -0.78129 ) ugolWPR = -38 ; // 322 if(deltaWPR > -0.78129 && deltaWPR < -0.75355 ) ugolWPR = -37 ; // 323 if(deltaWPR > -0.75355 && deltaWPR < -0.72654 ) ugolWPR = -36 ; // 324 if(deltaWPR > -0.72654 && deltaWPR < -0.70021 ) ugolWPR = -35 ; // 325 if(deltaWPR > -0.70021 && deltaWPR < -0.67451 ) ugolWPR = -34 ; // 326 if(deltaWPR > -0.67451 && deltaWPR < -0.64941 ) ugolWPR = -33 ; // 327 if(deltaWPR > -0.64941 && deltaWPR < -0.62487 ) ugolWPR = -32 ; // 328 if(deltaWPR > -0.62487 && deltaWPR < -0.60086 ) ugolWPR = -31 ; // 329 if(deltaWPR > -0.60086 && deltaWPR < -0.57735 ) ugolWPR = -30 ; // 330 if(deltaWPR > -0.57735 && deltaWPR < -0.55431 ) ugolWPR = -29 ; // 331 if(deltaWPR > -0.55431 && deltaWPR < -0.53171 ) ugolWPR = -28 ; // 332 if(deltaWPR > -0.53171 && deltaWPR < -0.50953 ) ugolWPR = -27 ; // 333 if(deltaWPR > -0.50953 && deltaWPR < -0.48773 ) ugolWPR = -26 ; // 334 if(deltaWPR > -0.48773 && deltaWPR < -0.46631 ) ugolWPR = -25 ; // 335 if(deltaWPR > -0.46631 && deltaWPR < -0.44523 ) ugolWPR = -24 ; // 336 if(deltaWPR > -0.44523 && deltaWPR < -0.42447 ) ugolWPR = -23 ; // 337 if(deltaWPR > -0.42447 && deltaWPR < -0.40403 ) ugolWPR = -22 ; // 338 if(deltaWPR > -0.40403 && deltaWPR < -0.38386 ) ugolWPR = -21 ; // 339 if(deltaWPR > -0.38386 && deltaWPR < -0.36397 ) ugolWPR = -20 ; // 340 if(deltaWPR > -0.36397 && deltaWPR < -0.34433 ) ugolWPR = -19 ; // 341 if(deltaWPR > -0.34433 && deltaWPR < -0.32492 ) ugolWPR = -18 ; // 342 if(deltaWPR > -0.32492 && deltaWPR < -0.30573 ) ugolWPR = -17 ; // 343 if(deltaWPR > -0.30573 && deltaWPR < -0.28675 ) ugolWPR = -16 ; // 344 if(deltaWPR > -0.28675 && deltaWPR < -0.26795 ) ugolWPR = -15 ; // 345 if(deltaWPR > -0.26795 && deltaWPR < -0.24933 ) ugolWPR = -14 ; // 346 if(deltaWPR > -0.24933 && deltaWPR < -0.23087 ) ugolWPR = -13 ; // 347 if(deltaWPR > -0.23087 && deltaWPR < -0.21256 ) ugolWPR = -12 ; // 348 if(deltaWPR > -0.21256 && deltaWPR < -0.19438 ) ugolWPR = -11 ; // 349 if(deltaWPR > -0.19438 && deltaWPR < -0.17633 ) ugolWPR = -10 ; // 350 if(deltaWPR > -0.17633 && deltaWPR < -0.15838 ) ugolWPR = -9 ; // 351 if(deltaWPR > -0.15838 && deltaWPR < -0.14054 ) ugolWPR = -8 ; // 352 if(deltaWPR > -0.14054 && deltaWPR < -0.12278 ) ugolWPR = -7 ; // 353 if(deltaWPR > -0.12278 && deltaWPR < -0.1051 ) ugolWPR = -6 ; // 354 if(deltaWPR > -0.1051 && deltaWPR < -0.08749 ) ugolWPR = -5 ; // 355 if(deltaWPR > -0.08749 && deltaWPR < -0.06993 ) ugolWPR = -4 ; // 356 if(deltaWPR > -0.06993 && deltaWPR < -0.05241 ) ugolWPR = -3 ; // 357 if(deltaWPR > -0.05241 && deltaWPR < -0.03492 ) ugolWPR = -2 ; // 358 if(deltaWPR > -0.03492 && deltaWPR < -0.01746 ) ugolWPR = -1 ; // 359 if(deltaWPR > -0.01746 && deltaWPR < 0 ) ugolWPR = 0 ; // 360 if(!PositionSelect(Symbol()) /*&& resultat == 0*/) // Если нет открытых позиций по инструменту { Print("PositionSelect(Symbol())", (string)PositionSelect(Symbol())); //if (WPVal > buyLevel && WPVal > WPPrevVal) // Если WPR больше уровня покупки и вверх, открываем позицию на покупку //if((WPVal - WPR_Past)/TFMS < -OtnKatMod) // Если катет разницы WPR меньше -OtnKatMod, открываем позицию на покупку //if(ugolWPR < -90 && ugolWPR > -180 + Ugol && WPVal > buyLevel && WPVal > WPPrevVal) // Если угол WPR - от -180 + Ugol до -90, открываем позицию на покупку if(ugolWPR < -90 && ugolWPR > -180 + Ugol && WPValH1 > buyLevel && WPValH1 > WPPrevValH1 /*&& WPValH1 > WPPrevValH1*/) { //Print("ugolWPR = ", IntegerToString(ugolWPR), " resultat = ", IntegerToString(resultat)); if(m_trade.Buy(LotSize,Symbol(),bid0,NULL,NULL,NULL)) // класс CTrade сам открывает позицию, если она упомянута { //ModifyTrailingStop(); ulong checktime = timeOpen; if(PositionSelect(Symbol())) { if(time0 - checktime > 30000) { Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); checktime += 30000; } } if(WPValH1 < WPPrevValH1) { m_trade.PositionClose(m_position_ticket); Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); } } } //if (WPVal < sellLevel && WPVal < WPPrevVal) // Если WPR меньше уровня продажи и вниз, открываем позицию на продажу //if((WPVal - WPR_Past)/TFMS > OtnKatMod) // Если катет разницы WPR больше OtnKatMod, открываем позицию на продажу //if(ugolWPR > -90 && ugolWPR < -Ugol && WPVal < sellLevel && WPVal < WPPrevVal) // Если угол WPR - от -Ugol до -90, открываем позицию на продажу if(ugolWPR > -90 && ugolWPR < -Ugol && WPValH1 < sellLevel && WPValH1 < WPPrevValH1 /*&& WPValH1 < WPPrevValH1*/) { //Print("ugolWPR = ", IntegerToString(ugolWPR), " resultat = ", IntegerToString(resultat)); if (m_trade.Sell(LotSize,Symbol(),ask0,NULL,NULL,NULL)) // класс CTrade сам открывает позицию, если она упомянута { //ModifyTrailingStop(); ulong checktime = timeOpen; if(PositionSelect(Symbol())) { if(time0 - checktime > 30000) { Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); checktime += 30000; } } if(WPValH1 > WPPrevValH1) { m_trade.PositionClose(m_position_ticket); Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); } } } if(Type == POSITION_TYPE_BUY && WPValH1 < WPPrevValH1) { m_trade.PositionClose(m_position_ticket); Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); } if(Type == POSITION_TYPE_SELL && WPValH1 > WPPrevValH1) { m_trade.PositionClose(m_position_ticket); Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); } } else if(magic == Magic_m && /*ModifyTrailingStop() resultat == 0*/)// Есть открытые ордера { Print("Есть открытые ордера"); //ModifyTrailingStop(); if(Type == POSITION_TYPE_BUY && WPValH1 < WPPrevValH1) { m_trade.PositionClose(m_position_ticket); Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); } if(Type == POSITION_TYPE_SELL && WPValH1 > WPPrevValH1) { m_trade.PositionClose(m_position_ticket); Print("WPValH1 = ",(string)WPValH1," WPPrevValH1 = ",(string)WPPrevValH1); } } } //+------------------------------------------------------------------+ //| Refreshes the symbol quotes data | //+------------------------------------------------------------------+ bool RefreshRates(void) { Print("Вошли в RefreshRates"); if(!m_symbol.RefreshRates()) { Print("RefreshRates error"); return(false); } //--- protection against the return value of "zero" if(m_symbol.Ask()==0 || m_symbol.Bid()==0) return(false); //--- return(true); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { Print("Вошли в OnDeinit"); EventKillTimer(); }