AlexeyVik
Программист mql4 mql5
Для меня читать код Кима всё-равно что читать декомпил. Мне кажется, что ты здесь чуток запутался. Восклицательный знак перед булевой переменной означает, что эта переменная false.AlexeyVik, видимо это с опытом приходит. На данный момент я вот уже почти начал понимать что да как, перед тем как начать программировать. Потому и вопросы бывают не такие логичные.
Я попутно смотрю на функцию Кима:
Тут у меня вопрос появился.PHP:void SimpleTrailing(string sy="", int op=-1, int mn=-1) { double po, pp; int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { po=MarketInfo(OrderSymbol(), MODE_POINT); if (mn<0 || OrderMagicNumber()==mn) { if (OrderType()==OP_BUY) { pp=MarketInfo(OrderSymbol(), MODE_BID); if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po) { if (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po) { ModifyOrder(-1, pp-TStop.Buy*po, -1); } } } if (OrderType()==OP_SELL) { pp=MarketInfo(OrderSymbol(), MODE_ASK); if (!TSProfitOnly || OrderOpenPrice()-pp>TStop.Sell*po) { if (OrderStopLoss()>pp+(TStop.Sell+TrailingStep-1)*po || OrderStopLoss()==0) { ModifyOrder(-1, pp+TStop.Sell*po, -1); } } } } } } } }
В данном участке кода:
!TSProfitOnly означает, что если режим траал только после достижения безубыточности т.е. это траал только в профитной зоне.PHP:if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po) { if (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po)
Но тут идёт вариант TSProfitOnly со знаком !, т.е. наоборот выходит, что эта функция не включена. А дальше условие, которое как-раз должно соблюдаться, чтоб TSProfitOnly было в TRUE.
Смысл в том, что получается, что переменная TSProfitOnly. А условие с этой переменной есть только для варианта FALSE, а для TRUE условия нет.
Поэтому эта часть кода относится только к варианту TSProfitOnly= false; или вторая часть условия. А для случая когда TSProfitOnly=true видимо есть другая функция.