Помогите -- купила новый ноутбук --там установлен вин.8- загрузила терминал с альпари последний обновленный- загружаю индикаторы с которыми я работала до этого, в папку MQL4- индикаторс- они там появляются-- а в самом терминале в пользовательсих их нет, служба поддержки нечего толком не пишет-что делать?
galinka: Помогите -- купила новый ноутбук --там установлен вин.8- загрузила терминал с альпари последний обновленный- загружаю индикаторы с которыми я работала до этого, в папку MQL4- индикаторс- они там появляются-- а в самом терминале в пользовательсих их нет, служба поддержки нечего толком не пишет-что делать?
В системном меню "Файл" есть новый пункт "Открыть каталог данных". Туда теперь надо класть.
я наверное не поняла как надо сделать- програмные файлы-- у мена альпари-открыть ----там папки---- MQL4- indikators-- я вставляю- появляются- закрываю --- открываю терминал в пользовательских их нет
Ниже последнего экстерна: extern int slippage = 2; //проскальзывание цены при закрытии рыночных позиций
вставь еще один: extern bool total_symb = true; //по всем парам
а каждую из строк: if ((OrderSymbol() == Symbol())) и if (OrderSymbol() == Symbol())
замени этой: if (OrderSymbol() == Symbol() || total_symb)
теоретически должно работать, проверь.
нет не получается . все как и прежде. закрывает только пару графика где активируется. а на другие выдает ошибку закрытия 4107 . Пробовал менять в extern bool Buy = false; //удалять/закрывать направление buy ордеров
extern bool Sell = false; //удалять/закрывать направление sell ордеров . на true . не помогло. а если например ставишь на график без открытой позиции то ни одна не закрываеться вежде ошибка 4107.
Значит, где-то еще используется Ticket в старом варианте. Надо зачищать код...
Сделал следующим образом:
Symb=Symbol(); // Название фин.инстр.
Total=0; // Количество ордеровint order[7];//буффер для семи ордеровint ord;//количество ордеровArrayInitialize(order,0);//обнуляем количество ордеровfor(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:if (OrderSymbol()!=Symb)continue; // Не наш фин. инструмif (OrderType()>1){Alert("Обнаружен отложенный ордер. Эксперт не работает.");return;}
Total++; // Счётчик рыночн. ордif (Total>7){Alert("Более 7 ордеров. Эксперт не работает.");return;}
Ticket=OrderTicket(); // Номер выбранн. орд.
Tip =OrderType(); // Тип выбранного орд.order [OrderType()]++; // ПОЛУЧАЕМ КОЛИЧЕСТВО ОРДЕРОВ
Price =OrderOpenPrice(); // Цена выбранн. орд.
SL =OrderStopLoss(); // SL выбранного орд.
TP =OrderTakeProfit(); // TP выбранного орд.
Lot =OrderLots(); // Количество лотов
}
}
ord=order [OrderType()];while(true) // Цикл закрытия орд.
{
if (Tip==0 && Cls_B==true) // Открыт ордер Buy..
{ //и есть критерий закрAlert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
RefreshRates(); // Обновление данных
Ans=OrderClose(Ticket,Lot,Bid,2); // Закрытие Buyif (Ans==true){Alert ("Закрыт ордер Buy ",Ticket);if (ord ==0){Alert ("Закрыты все ордера ",ord);break;}}
if (Fun_Error(GetLastError())==1) // Обработка ошибокcontinue; // Повторная попыткаreturn; // Выход из start()
}
Позиции закрываются полностью. Правда выходит ошибка ноль, в доках пишется, что она означает нет ошибок. И не могу найти в журнале сообщения "Закрыты все ордера ".
Жирным выделил строки, что изменил. Вроде работает, досконально пока не проверял.
Не совсем понимаю как работают циклы. Допустим есть код сверху и снизу, посредине цикл. Если условия цикла совпадают, то работа кода выполняется только внутри цикла, не давая исполняться строкам кода, что ниже цикла? Рассматривая данный пример оператор break прерывает работу цикла? Разрешая исполниться строкам ниже или программа начинает вычисления с самого начала?
Поправьте, если не прав: break прерывает цикл в котором он находится, а continue исполнение вычисления оператора, что над ним, тогда не понятно, если есть второй оператор будет ли прервано его вычисление или continue прерывает вообще весь код и отправляет программу исполнять код сначала?
Вопрос такой возник,можно ли написать советник или скрипт,который бы по достижению например в день 2% убытка закрывал бы все сделки ?
можно.
Помогите -- купила новый ноутбук --там установлен вин.8- загрузила терминал с альпари последний обновленный- загружаю индикаторы с которыми я работала до этого, в папку MQL4- индикаторс- они там появляются-- а в самом терминале в пользовательсих их нет, служба поддержки нечего толком не пишет-что делать?
я наверное не поняла как надо сделать- програмные файлы-- у мена альпари-открыть ----там папки---- MQL4- indikators-- я вставляю- появляются- закрываю --- открываю терминал в пользовательских их нет
спасибо это помогло
Ниже последнего экстерна:
extern int slippage = 2; //проскальзывание цены при закрытии рыночных позиций
вставь еще один:
extern bool total_symb = true; //по всем парам
а каждую из строк:
if ((OrderSymbol() == Symbol()))
и
if (OrderSymbol() == Symbol())
замени этой:
if (OrderSymbol() == Symbol() || total_symb)
теоретически должно работать, проверь.
нет не получается . все как и прежде. закрывает только пару графика где активируется. а на другие выдает ошибку закрытия 4107 . Пробовал менять в extern bool Buy = false; //удалять/закрывать направление buy ордеров
Вопрос такой возник,можно ли написать советник или скрипт,который бы по достижению например в день 2% убытка закрывал бы все сделки ?
Значит, где-то еще используется Ticket в старом варианте. Надо зачищать код...
Сделал следующим образом:
Позиции закрываются полностью. Правда выходит ошибка ноль, в доках пишется, что она означает нет ошибок. И не могу найти в журнале сообщения "Закрыты все ордера ".
Жирным выделил строки, что изменил. Вроде работает, досконально пока не проверял.
Не совсем понимаю как работают циклы. Допустим есть код сверху и снизу, посредине цикл. Если условия цикла совпадают, то работа кода выполняется только внутри цикла, не давая исполняться строкам кода, что ниже цикла? Рассматривая данный пример оператор break прерывает работу цикла? Разрешая исполниться строкам ниже или программа начинает вычисления с самого начала?
Поправьте, если не прав: break прерывает цикл в котором он находится, а continue исполнение вычисления оператора, что над ним, тогда не понятно, если есть второй оператор будет ли прервано его вычисление или continue прерывает вообще весь код и отправляет программу исполнять код сначала?