Евгений72 Опубликовано 22 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2021 Это будет работать для вычисления профита ордера с минимальным тикетом???????? Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 22 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2021 3 минуты назад, Евгений72 сказал: Это будет работать для вычисления профита ордера с минимальным тикетом???????? а что не так? На первом проходе будет выбран первый попавшийся тикет, т.к. его значение гарантированно меньше INT_MAX. Запишется его профит. Если на следующей итерации попадется ордер с меньшим тикетом, чем предыдущий, то и переменная min_ticket и переменная profit_min_ticket обновят свои значения. п.с. Вы можете проверять все эксперименты через Принты... Ссылка на сообщение Поделиться на другие сайты More sharing options...
Евгений72 Опубликовано 22 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2021 1 минуту назад, usver73 сказал: а что не так? На первом проходе будет выбран первый попавшийся тикет, т.к. его значение гарантированно меньше INT_MAX. Запишется его профит. Если на следующей итерации попадется ордер с меньшим тикетом, чем предыдущий, то и переменная min_ticket и переменная profit_min_ticket обновят свои значения. п.с. Вы можете проверять все эксперименты через Принты... Если можно я лучше допишут советника и если будут проблемы я к ВАМ обращусь Ссылка на сообщение Поделиться на другие сайты More sharing options...
Евгений72 Опубликовано 22 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2021 33 минуты назад, usver73 сказал: а что не так? На первом проходе будет выбран первый попавшийся тикет, т.к. его значение гарантированно меньше INT_MAX. Запишется его профит. Если на следующей итерации попадется ордер с меньшим тикетом, чем предыдущий, то и переменная min_ticket и переменная profit_min_ticket обновят свои значения. п.с. Вы можете проверять все эксперименты через Принты... Вот я и дошел до закрытия ордеров Вот моя функция void ClosseAll() { for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType() == OP_BUY) { if (!OrderClose(OrderTicket(), OrderLots(), Bid, slip)) Print("Не удалось закрыть ордера на покупку!"); } if (OrderType() == OP_SELL) { if (!OrderClose(OrderTicket(), OrderLots(), Ask, slip)) Print("Не удалось закрыть ордер на продажу!"); } } } } Ещё мне нужно закрыть ордера с минимальным и максимальным тикетом Предварительно эти ордера выбраны, суммарный тейкпрофит достиг определенного значения ушла команда но закрытие этих ордеров Вопрос что нужно изменить в этом коде чтобы они и только они закрылись одновременно или через несколько тиков????? Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 22 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2021 40 минут назад, Евгений72 сказал: Вопрос что нужно изменить в этом коде чтобы они и только они закрылись одновременно или через несколько тиков????? нужно собрать все, что две страницы обсуждали... Спойлер int max_ticket=0; int min_ticket=INT_MAX; double max_ticket_profit = 0; double min_ticket_profit = 0; void FindLastOrderPrice() { max_ticket=0; min_ticket=INT_MAX; for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype) { if(OrderTicket() > max_ticket) { max_ticket = OrderTicket(); max_ticket_profit = OrderProfit() + OrderComission() + OrderSwap(); if(OrderTicket() < min_ticket) { min_ticket = OrderTicket(); min_ticket_profit = OrderProfit() + OrderComission() + OrderSwap(); } } } return; } bool CloseOrderTicket(int max_ticket, int min_ticket) { for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt--) { if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) { if(OrderTicket()== max_ticket || OrderTicket()==min_ticket) { double pr=0.0; if(OrderType()==OP_BUY) pr = Bid; else pr = Ask; if (!OrderClose(OrderTicket(), OrderLots(), pr, slip)) Print("Не удалось закрыть ордер # ",OrderTicket(), " Error ", GetLastError()); } } } return(false); } Для тестера пойдет, для реала нужно делать кучу проверок. Изменено 22 сентября, 2021 пользователем usver73 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Ar4i Опубликовано 22 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2021 5 часов назад, usver73 сказал: Во первых, в функцию нужно передать PriceType. В таком виде выдаст ошибку при компиляции. Во вторых, в функцию нужно передать массив, в который будет скопированы значения цены, которые в последствии будут усредняться. Нужно снаружи объявить double Price[] и по ссылке её воткнуть в объявление функции. В третьих, в каждом case нужно писать ArrayCopy(), с помощью которой будет копироваться из источников (например, close[]) в получателя price[] набор значений цены Как то так, что ли? double Price[]; ... double Price_ma(const double&open[],const double &high[],const double &low[],const double &close[]) { double res; switch(PriceType) //"Во первых PriceType..." Вроде как здесь передана { case PRICE_CLOSE: res=ArrayCopy(Price, close, 0, 0, WHOLE_ARRAY); break; case PRICE_OPEN: res=ArrayCopy(Price, open, 0, 0, WHOLE_ARRAY); break; case PRICE_HIGH: res=ArrayCopy(Price, high, 0, 0, WHOLE_ARRAY); break; case PRICE_LOW: res=ArrayCopy(Price, low, 0, 0, WHOLE_ARRAY); break; case PRICE_MEDIAN: res=(ArrayCopy(Price, high, 0, 0, WHOLE_ARRAY)+ArrayCopy(Price, low, 0, 0, WHOLE_ARRAY))/2.0; break; case PRICE_TYPICAL: res=(ArrayCopy(Price, high, 0, 0, WHOLE_ARRAY)+ArrayCopy(Price, low, 0, 0, WHOLE_ARRAY)+ArrayCopy(Price, close, 0, 0, WHOLE_ARRAY))/3.0; break; case PRICE_WEIGHTED:res=(ArrayCopy(Price, high, 0, 0, WHOLE_ARRAY)+ArrayCopy(Price, low, 0, 0, WHOLE_ARRAY)+2*ArrayCopy(Price, close, 0, 0, WHOLE_ARRAY))/4.0; break; } return(res); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 22 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 22 сентября, 2021 14 минут назад, Ar4i сказал: Как то так, что ли? посмотри в справке раздел "Доступ к таймсериям и данным индикаторов", в частности CopyClose, CopyRates. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Bat Опубликовано 23 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 23 сентября, 2021 Всем доброго дня! Помогите начинающему программисту, "пишу"(собираю по блокам, если понимаю код блока) советник. Советник выставляет по обе стороны от цены сетку из ордеров байлимит и селлимит, по 4 с каждой стороны, при срабатывании в одном из направлении, противоположные отложенные ордера удаляются. Теперь у меня задача: так как это лимитки, то мне необходимо, если первый (самый ближний к цене закрылся по тейкпрофиту, то несработанные лимитки этого же типа удалялись). Коротко: Если любой из ордеров закрылся по тейкпрофиту, то все отложенные необходимо удалить, подскажите пожалуйста код Спасибо! Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vovan777 Опубликовано 25 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 сентября, 2021 Всем привет! Возник такой вопрос, может и бредовый. Хочу создать советника, который будет торговать по областям поддержки/сопротивления. При этом области поддержки/сопротивления я буду рисовать ему сам, а советник при достижении ценой этих областей, будет совершать сделки, а так же сопровождать их по тому алгоритму, который я ему задам. Возможно ли такое реализовать? Сможет ли советник видеть объекты на графике, границы этих объектов, и ориентироваться на эти данные. Либо же советник может брать данные только из буфера индикатора? Области поддержки/сопротивления можно было бы отмечать на графике с помощью обычных линий или прямоугольников. На скринах показал каким образом я это вижу. Дело в том, что написать толковый индикатор, который будет строить области Поддержки/сопротивления не так просто. Зачастую руками приходится строить области П/С в тех местах, где индикатор их никогда не построит. Если торговать руками, и все делать руками, то построить области П/С нет проблемы. Но! Выжидать точку входа зачастую нет времени (есть работа, нужно спать когда-то), а задать советнику алгоритм, что делать на этих областях я могу. Вот и появилась идея полуавтоматической торговой системы. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 25 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 25 сентября, 2021 5 часов назад, Vovan777 сказал: Сможет ли советник видеть объекты на графике, границы этих объектов, и ориентироваться на эти данные. Сможет. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Vovan777 Опубликовано 26 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 сентября, 2021 14 часов назад, usver73 сказал: Сможет. Спасибо. Где порыть информацию? Что для этого нужно? Дайте пожалуйста, хоть какую-нибудь зацепку. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 26 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 26 сентября, 2021 33 минуты назад, Vovan777 сказал: Где порыть информацию? В первую очередь в справке в разделе Работа с объектами. Там есть примеры поиска объектов на чарте. После нахождения можно прочитать их свойства, в частности, цена (или цены в случае с прямоугольником) На mql5 поищите в cobebase, наверняка есть примеры. https://www.mql5.com/ru/code/20178 Первый попавшийся Изменено 26 сентября, 2021 пользователем usver73 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 27 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 сентября, 2021 //+------------------------------------------------------------------+ //| MACD 288.mq4 | //| Copyright 2017, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern string MACDMA = "Параметры MACD"; extern int FastEMA = 12; extern int SlowEMA = 26; extern int SignalEMA = 9; //+------------------------------------------------------------------+ extern string Slope = "Параметры Slope"; extern int period = 163; extern int method = 3; extern int price = 0; //+------------------------------------------------------------------+ extern bool p = true; // задействовать паузу или нет extern string TimeStart = "18:30"; // время старта паузы extern string TimeEnd = "6:00"; // конец паузы extern bool TimeClose = false; // закрытия по времени //+------------------------------------------------------------------+ double SL163, SL288; static datetime lastbar; bool NewBar; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { if (Digits == 3 || Digits == 5)///для 3 и 5 значьных брокеров { } return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ | //+------------------------------------------------------------------+ void OnTick() {///время работы datetime StartPause,EndPause; StartPause = StrToTime(TimeStart); EndPause = StrToTime(TimeEnd); if((p && StartPause < EndPause && (TimeCurrent() > StartPause && TimeCurrent() < EndPause))) { Comment("Пауза в работе советника"); return; } if((p && StartPause > EndPause && (TimeCurrent() > StartPause || TimeCurrent() < EndPause))) { Comment("Пауза в работе советника"); return; } ///индикаторы SL163 = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,0) ///условия сигнала NewBar=isNewBar(); if ( SL163 > Bid && SellSignal()==true && NewBar) { PlaySound("alert.wav"); } if ( SL163 < Ask && BuySignal()==true && NewBar ) { PlaySound("alert.wav"); } } bool isNewBar() { datetime curbar = Time[0]; if(lastbar!=curbar) { lastbar=curbar; return (true); } else { return(false); } } //+------------------------------------------------------------------+ //возвращает данные красного буфера double Reds(int shift) { double buf = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, shift); return(buf); } //возвращает данные зеленого буфера double Greens(int shift) { double buf = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, shift); return(buf); } bool SellSignal() { //если последний столбик красный, а предпоследний зеленый if(Reds(1)!=0 && Greens(2)!=0) return(true); else return (false); } bool BuySignal() { //если последний столбик зеленый, а предпоследний красный if(Greens(1)!=0 && Reds(2)!=0) return(true); else return (false); } Добрый вечер, в чем я тут затупил? Направьте на истины) Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 27 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 27 сентября, 2021 38 минут назад, d1w4m3 сказал: Добрый вечер, в чем я тут затупил? на такой вопрос хочется ответить- Везде! Неужели трудно сформулировать конкретную проблему? А вообще, если правильно понял хотелки, то должно быть примерно так: bool Sell_signal = false; bool Buy_signal = false; void OnTick() {///время работы datetime StartPause,EndPause; StartPause = StrToTime(TimeStart); EndPause = StrToTime(TimeEnd); if((p && StartPause < EndPause && (TimeCurrent() > StartPause && TimeCurrent() < EndPause))) { Comment("Пауза в работе советника"); return; } if((p && StartPause > EndPause && (TimeCurrent() > StartPause || TimeCurrent() < EndPause))) { Comment("Пауза в работе советника"); return; } ///индикаторы SL163 = iCustom(NULL, 0, "Slope Direction Line", period, method, price, 1,0) ///условия сигнала NewBar=isNewBar(); if(NewBar) { Sell_signal = SellSignal(); Buy_signal = BuySignal(); } if ( SL163 > Bid && Sell_signal) { PlaySound("alert.wav"); } else if ( SL163 < Ask && Buy_signal) { PlaySound("alert.wav"); } } п.с. Реально по логике есть необходимость каждый тик рассчитывать SL163? Это сильно тормозит работу. Обычно индикаторы смотрят на закрытых свечах при поступлении нового бара... 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 28 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2021 13 часов назад, usver73 сказал: Sell_signal = SellSignal(); Buy_signal = BuySignal(); Объясните пожалуйста, почему в таком виде запись, а так не льзя SellSignal()==true BuySignal()==true В чем разница не пойму? Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 28 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2021 1 минуту назад, d1w4m3 сказал: В чем разница не пойму? Обращение к функциям SellSignal() происходит один раз в свечу. Если бар уже не новый (на втором тике бара и далее), то значение функций мы не получим. Поэтому в начале нового бара мы проверяем индикаторы, делаем выводы о наличии сигнала и запоминаем в глобальных переменных 1 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 28 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2021 1 час назад, usver73 сказал: Обращение к функциям SellSignal() происходит один раз в свечу. Если бар уже не новый (на втором тике бара и далее), то значение функций мы не получим. Поэтому в начале нового бара мы проверяем индикаторы, делаем выводы о наличии сигнала и запоминаем в глобальных переменных Тогда звук поступает на каждом баре после сформирования условия SellSignal(), извиняюсь что не дал точное определение, задача стояла, чтобы звук был только в момент формирования условия, 1 раз Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 28 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2021 2 минуты назад, d1w4m3 сказал: Тогда звук поступает на каждом баре после сформирования условия SellSignal() вообще то он должен сигнализировать каждый тик пока соблюдается условие. if ( SL163 > Bid && Sell_signal) Sell_signal держится в течение свечи в одном значении. Если это true, то каждый тик, пока будет условие SL163 > Bid выполняться, будет поступать сигнал. Это точно соответствует ТЗ? Если все таки логика верна, то можно добавить флаг новой свечи, наподобие логики ф.isNewBar() datetime last_sell_time; //на глобальном уровне if ( SL163 > Bid && Sell_signal) { if(last_sell_time != TimeCurrent()) { last_sell_time = TimeCurrent() PlaySound("alert.wav"); } } п.с. не знаю индикатор MACD 2Line, но подозреваю, что вы пытаетесь поймать смену цвета (знака гистограммы). Такое условие не может происходить в одном направлении два раза подряд. Если все таки такое имеет место быть, то разбирайтесь с лоикой чтения буферов. п.п.с. функции Reds() и Greens() идентичны. Добавьте в входные параметры номер буфера и сделайте единую функцию 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 28 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2021 В 27.09.2021 в 18:04, d1w4m3 сказал: double Reds(int shift) { double buf = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 3, shift); return(buf); } //возвращает данные зеленого буфера double Greens(int shift) { double buf = iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, 2, shift); return(buf); } Они идентичны но буфера подобранны правильно, другая сова по тому же принципу открывает ордера все гуд, но вот звук постоянно идет на каждом новом тике, после формирования условия, но все ок, спасибо за путь наставления, самому интересно разобраться, за одно и подучиться Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 28 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2021 16 минут назад, d1w4m3 сказал: но вот звук постоянно идет на каждом новом тике то решение, которое предложил разве не блокирует лишний сигнал? double GetMACD(int shift, int buffer) { return(iCustom(NULL, 0, "MACD 2Line", FastEMA, SlowEMA, SignalEMA, buffer, shift)); } // вызываем: double reds_1 = GetMACD(1,2); double reds_2 = GetMACD(2,2); double greens_1 = GetMACD(1,3); double greens_2 = GetMACD(2,3); //номера буферов и номера свечей написал по памяти, мог ошибиться 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
d1w4m3 Опубликовано 28 сентября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 28 сентября, 2021 4 минуты назад, usver73 сказал: то решение, которое предложил разве не блокирует лишний сигнал? Помогло конечно, спасибо 4 минуты назад, usver73 сказал: double GetMACD(int shift, int buffer) до такой записи еще не дорос, по старому привык(но буду учиться заново, еще раз спасибо Ссылка на сообщение Поделиться на другие сайты More sharing options...
Евгений72 Опубликовано 3 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 3 октября, 2021 Доброго времени суток подскажите пожалуйста Вот две функции: калькуляции профита сетки ордеров и функция закрытия всех ордеров а также условие при котором закрываются ордера. //+------------------------------------------------------------------+ void ClosseAll() { for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType() == OP_BUY) { if (!OrderClose(OrderTicket(), OrderLots(), Bid, slip)) Print("Не удалось закрыть ордера на покупку!"); } if (OrderType() == OP_SELL) { if (!OrderClose(OrderTicket(), OrderLots(), Ask, slip)) Print("Не удалось закрыть ордер на продажу!"); } } } } //+------------------------------------------------------------------+ double CalculiteProfit() { double oProfit = 0; for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { oProfit += OrderProfit(); } } } } return(oProfit); } double op = CalculiteProfit(); if (op >= Profit) { ClosseAll(); } Вопрос состоит в том можно ли с минимальной доработкой калькулировать и закрывать не все прибыльные на все убыточные ордера а закрывать всеми прибыльными ордерами только определенный процент от каждого убыточного ордера Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 11 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 октября, 2021 Всем доброго времени! Кто может поделиться понятным кодом для открытия ордеров при противоположном сигнале индикатора? Допустим была покупка, индикатор показал продажу, тут же закрываем покупку и открываем продажу и наоборот. Ссылка на сообщение Поделиться на другие сайты More sharing options...
usver73 Опубликовано 11 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 октября, 2021 2 часа назад, diodio сказал: Допустим была покупка, индикатор показал продажу, тут же закрываем покупку и открываем продажу и наоборот. а в чем именно сложность? Алгоритм примерно такой: 1. Получили сигнал на СЕЛЛ. 1.1. Если в рынке есть ордер БАЙ, то закрываем его. 1.2. Открываем ордер на СЕЛЛ. (дополнительно проверяем- есть ли ордер СЕЛЛ в рынке на случай, если по логике допускается только один ордер по направлению). Возможен вариант, когда открываем СЕЛЛ двойной лотностью, а потом через OrderCloseBy делаем закрытие БАЙ. Справка: https://docs.mql4.com/ru/trading/ordercloseby 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
diodio Опубликовано 11 октября, 2021 Поделиться Обучение языку MQL4 под MetaTrader 4 Опубликовано 11 октября, 2021 2 часа назад, usver73 сказал: а в чем именно сложность? В том то и дело что сложности никакой не должно быть, просто ордера неправильно открывались по индикатору, и стояла настройка на открытие по индикатору на нулевом баре. Теперь исправил сигнал индикатора на открытие по первому бару, и здесь всё пошло так как задумано. Только теперь я не понимаю почему нулевой бар не давал сигнал на открытие ордера, хотя при этом рисовалась стрелочка у индикатора?! (( Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти