Торговые платформы, обслуживание и поддержка » Broco Trader (MetaTrader 4) » Вопросы по терминалу MT4
+ Подписаться
Страница 100 из 179 ПерваяПервая ... 50909899100101102110150 ... ПоследняяПоследняя
  1. 836
    Комментарии
    0
    Темы
    856
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от susuman Посмотреть сообщение
    Я бы посоветовал всем. Никогда не устанавливайте сервисные программы на основной раздел (С:\). Держите здесь (C:\) только Win. Проще в обслуживании и пр. Тем более торговые платформы.
    Хороший совет. Но человек или сам доходит до такого решения или никогда до него не доходит. Непослушаются.
  2. 285
    Комментарии
    0
    Темы
    297
    Репутация Pro
    Аватар для samui  
    В начале пути

    2 Медалей
    Цитата Сообщение от susuman Посмотреть сообщение
    Я бы посоветовал всем. Никогда не устанавливайте сервисные программы на основной раздел (С:\). Держите здесь (C:\) только Win. Проще в обслуживании и пр. Тем более торговые платформы.
    Насчет установки Broco Trader не на C:\ - согласен, хотя я просто ярлык к папке C:\Users\имя_пользователя\AppData на рабочий стол вынес.
    А указание индикаторы кидать в C:\Program Files\(туда-то) в Win7 уже не верно, если программа не запускается от имени администратора, или не отключена UAC. Примером может быть ситуация когда присланный из инета индикатор.mq4 каждый раз будет компилироваться и записываться в Local Store индикатор.ex4. Еще хуже ситуация когда присылаются настойки, шаблоны и т.п. Потом силами программы вернуть назад так как было, получится только до перезапуска. Теперь путь для вкидывания C:\Users\имя_пользователя\AppData\L ocal\VirtualStore\Program Files (x86)\Broco Trader\(что нужно).
  3. 2,472
    Комментарии
    62
    Темы
    2486
    Репутация Pro
    Аватар для susuman  
    Мастер форумных наук

    5 Медалей
    Что-то вы всё не то делаете. У меня 7 стоит. МТ в другом разделе. И стоит уже давно. Делаю из terminal.exe ярлык и помещаю на рабочий стол. И также все сервисные. В Win никаких следов не остаётся. Ни при каких условиях.
    Вот кусок стола. Весь не стал много будет. Слева 16 разделов с 8 винтов и пр.

    Удалил скрин. Много места занимает Hi.
  4. 5
    Комментарии
    0
    Темы
    5
    Репутация Pro
     
    Новичок

    2 Медалей
    Всем огромное спасибо разобрался вроде!!!!!!!!!!!!!!!!
  5. 77
    Комментарии
    1
    Темы
    77
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от Алексей Нефёдов Посмотреть сообщение
    Здравствуйте.
    Проверьте, пожалуйста, настройки советника, возможно советник пытается модифицировать только что открытый ордер, не получив ещё ответа от сервера, что ордер открыт или же выставляет новый ордер, так же не получив ответа.
    Посмотрите пожалуйста, что не правильно в этом коде,в блоке открытия ордеров .При работе на счете постоянно возникает ошибка 130.Эксперт взят из учебника по MQL4.

    //--------------------------------------------------------------------
    // tradingexpert.mq4
    // Предназначен для использования в качестве примера в учебнике MQL4.
    //--------------------------------------------------------------------
    #property copyright "Copyright © Book, 2007"
    #property link "http://AutoGraf.dp.ua"
    //--------------------------------------------------------------- 1 --
    // Численные значения для М15
    extern double StopLoss =200; // SL для открываемого ордера
    extern double TakeProfit =39; // ТР для открываемого ордера
    extern int Period_MA_1=11; // Период МА 1
    extern int Period_MA_2=31; // Период МА 2
    extern double Rastvor =28.0; // Расстояние между МА
    extern double Lots =0.1; // Жестко заданное колич. лотов
    extern double Prots =0.07; // Процент свободных средств

    bool Work=true; // Эксперт будет работать.
    string Symb; // Название финанс. инструмента
    //--------------------------------------------------------------- 2 --
    int start()
    {
    int
    Total, // Количество ордеров в окне
    Tip=-1, // Тип выбран. ордера (B=0,S=1)
    Ticket; // Номер ордера
    double
    MA_1_t, // Значен. МА_1 текущее
    MA_2_t, // Значен. МА_2 текущее
    Lot, // Колич. лотов в выбран.ордере
    Lts, // Колич. лотов в открыв.ордере
    Min_Lot, // Минимальное количество лотов
    Step, // Шаг изменения размера лота
    Free, // Текущие свободные средства
    One_Lot, // Стоимость одного лота
    Price, // Цена выбранного ордера
    SL, // SL выбранного ордера
    TP; // TP выбранного ордера
    bool
    Ans =false, // Ответ сервера после закрытия
    Cls_B=false, // Критерий для закрытия Buy
    Cls_S=false, // Критерий для закрытия Sell
    Opn_B=false, // Критерий для открытия Buy
    Opn_S=false; // Критерий для открытия Sell
    //--------------------------------------------------------------- 3 --
    // Предварит.обработка
    if(Bars < Period_MA_2) // Недостаточно баров
    {
    Alert("Недостаточно баров в окне. Эксперт не работает.");
    return; // Выход из start()
    }
    if(Work==false) // Критическая ошибка
    {
    Alert("Критическая ошибка. Эксперт не работает.");
    return; // Выход из start()
    }
    //--------------------------------------------------------------- 4 --
    // Учёт ордеров
    Symb=Symbol(); // Название фин.инстр.
    Total=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; // Выход из start()
    }
    Total++; // Счётчик рыночн. орд
    if (Total>1) // Не более одного орд
    {
    Alert("Несколько рыночных ордеров. Эксперт не работает.");
    return; // Выход из start()
    }
    Ticket=OrderTicket(); // Номер выбранн. орд.
    Tip =OrderType(); // Тип выбранного орд.
    Price =OrderOpenPrice(); // Цена выбранн. орд.
    SL =OrderStopLoss(); // SL выбранного орд.
    TP =OrderTakeProfit(); // TP выбранного орд.
    Lot =OrderLots(); // Количество лотов
    }
    }
    //--------------------------------------------------------------- 5 --
    // Торговые критерии
    MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_LWMA,PRICE_TY PICAL,0); // МА_1
    MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_LWMA,PRICE_TY PICAL,0); // МА_2

    if (MA_1_t > MA_2_t + Rastvor*Point) // Если разница между
    { // ..МА 1 и 2 большая
    Opn_B=true; // Критерий откр. Buy
    Cls_S=true; // Критерий закр. Sell
    }
    if (MA_1_t < MA_2_t - Rastvor*Point) // Если разница между
    { // ..МА 1 и 2 большая
    Opn_S=true; // Критерий откр. Sell
    Cls_B=true; // Критерий закр. Buy
    }
    //--------------------------------------------------------------- 6 --
    // Закрытие ордеров
    while(true) // Цикл закрытия орд.
    {
    if (Tip==0 && Cls_B==true) // Открыт ордер Buy..
    { //и есть критерий закр
    Alert("Попытка закрыть Buy ",Ticket,". Ожидание ответа..");
    RefreshRates(); // Обновление данных
    Ans=OrderClose(Ticket,Lot,Bid,2); // Закрытие Buy
    if (Ans==true) // Получилось :)
    {
    Alert ("Закрыт ордер Buy ",Ticket);
    break; // Выход из цикла закр
    }
    if (Fun_Error(GetLastError())==1) // Обработка ошибок
    continue; // Повторная попытка
    return; // Выход из start()
    }

    if (Tip==1 && Cls_S==true) // Открыт ордер Sell..
    { // и есть критерий закр
    Alert("Попытка закрыть Sell ",Ticket,". Ожидание ответа..");
    RefreshRates(); // Обновление данных
    Ans=OrderClose(Ticket,Lot,Ask,2); // Закрытие Sell
    if (Ans==true) // Получилось :)
    {
    Alert ("Закрыт ордер Sell ",Ticket);
    break; // Выход из цикла закр
    }
    if (Fun_Error(GetLastError())==1) // Обработка ошибок
    continue; // Повторная попытка
    return; // Выход из start()
    }
    break; // Выход из while
    }
    //--------------------------------------------------------------- 7 --
    // Стоимость ордеров
    RefreshRates(); // Обновление данных
    Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Миним. колич. лотов
    Free =AccountFreeMargin(); // Свободн средства
    One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Стоимость 1 лота
    Step =MarketInfo(Symb,MODE_LOTSTEP); // Шаг изменен размера

    if (Lots > 0) // Если заданы лоты,то
    Lts =Lots; // с ними и работаем
    else // % свободных средств
    Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Для открытия

    if(Lts < Min_Lot) Lts=Min_Lot; // Не меньше минимальн
    if (Lts*One_Lot > Free) // Лот дороже свободн.
    {
    Alert(" Не хватает денег на ", Lts," лотов");
    return; // Выход из start()
    }
    //--------------------------------------------------------------- 8 --
    // Открытие ордеров
    while(true) // Цикл закрытия орд.
    {
    if (Total==0 && Opn_B==true) // Открытых орд. нет +
    { // критерий откр. Buy
    RefreshRates(); // Обновление данных
    SL=Bid - New_Stop(StopLoss)*Point; // Вычисление SL откр.
    TP=Bid + New_Stop(TakeProfit)*Point; // Вычисление TP откр.
    Alert("Попытка открыть Buy. Ожидание ответа..");
    Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP);//Открытие Buy
    if (Ticket > 0) // Получилось :)
    {
    Alert ("Открыт ордер Buy ",Ticket);
    return; // Выход из start()
    }
    if (Fun_Error(GetLastError())==1) // Обработка ошибок
    continue; // Повторная попытка
    return; // Выход из start()
    }
    if (Total==0 && Opn_S==true) // Открытых орд. нет +
    { // критерий откр. Sell
    RefreshRates(); // Обновление данных
    SL=Ask + New_Stop(StopLoss)*Point; // Вычисление SL откр.
    TP=Ask - New_Stop(TakeProfit)*Point; // Вычисление TP откр.
    Alert("Попытка открыть Sell. Ожидание ответа..");
    Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP);//Открытие Sel
    if (Ticket > 0) // Получилось :)
    {
    Alert ("Открыт ордер Sell ",Ticket);
    return; // Выход из start()
    }
    if (Fun_Error(GetLastError())==1) // Обработка ошибок
    continue; // Повторная попытка
    return; // Выход из start()
    }
    break; // Выход из while
    }
    //--------------------------------------------------------------- 9 --
    return; // Выход из start()
    }
    //-------------------------------------------------------------- 10 --
    int Fun_Error(int Error) // Ф-ия обработ ошибок
    {
    switch(Error)
    { // Преодолимые ошибки
    case 4: Alert("Торговый сервер занят. Пробуем ещё раз..");
    Sleep(3000); // Простое решение
    return(1); // Выход из функции
    case 135:Alert("Цена изменилась. Пробуем ещё раз..");
    RefreshRates(); // Обновим данные
    return(1); // Выход из функции
    case 136:Alert("Нет цен. Ждём новый тик..");
    while(RefreshRates()==false) // До нового тика
    Sleep(1); // Задержка в цикле
    return(1); // Выход из функции
    case 137:Alert("Брокер занят. Пробуем ещё раз..");
    Sleep(3000); // Простое решение
    return(1); // Выход из функции
    case 146:Alert("Подсистема торговли занята. Пробуем ещё..");
    Sleep(500); // Простое решение
    return(1); // Выход из функции
    // Критические ошибки
    case 2: Alert("Общая ошибка.");
    return(0); // Выход из функции
    case 5: Alert("Старая версия терминала.");
    Work=false; // Больше не работать
    return(0); // Выход из функции
    case 64: Alert("Счет заблокирован.");
    Work=false; // Больше не работать
    return(0); // Выход из функции
    case 133:Alert("Торговля запрещена.");
    return(0); // Выход из функции
    case 134:Alert("Недостаточно денег для совершения операции.");
    return(0); // Выход из функции
    default: Alert("Возникла ошибка ",Error); // Другие варианты
    return(0); // Выход из функции
    }
    }
    //-------------------------------------------------------------- 11 --
    int New_Stop(int Parametr) // Проверка стоп-прик.
    {
    int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Миним. дистанция
    if (Parametr<Min_Dist) // Если меньше допуст.
    {
    Parametr=Min_Dist; // Установим допуст.
    Alert("Увеличена дистанция стоп-приказа.");
    }
    return(Parametr); // Возврат значения
    }
    //-------------------------------------------------------------- 12 --
    Вложения Вложения
  6. 4,712
    Комментарии
    77
    Темы
    4758
    Репутация Pro
    Аватар для Oleg  
    Technic

    5 Медалей
    Цитата Сообщение от Handel Посмотреть сообщение
    Посмотрите пожалуйста, что не правильно в этом коде,в блоке открытия ордеров .При работе на счете постоянно возникает ошибка 130.Эксперт взят из учебника по MQL4.

    //--------------------------------------------------------------------
    // tradingexpert.mq4
    // Предназначен для использования в качестве примера в учебнике MQL4.
    //--------------------------------------------------------------------
    #property copyright "Copyright © Book, 2007"
    #property link "http://AutoGraf.dp.ua"
    //--------------------------------------------------------------- 1 --
    // Численные значения для М15
    extern double StopLoss =200; // SL для открываемого ордера
    extern double TakeProfit =39; // ТР для открываемого ордера
    extern int Period_MA_1=11; // Период МА 1
    extern int Period_MA_2=31; // Период МА 2
    extern double Rastvor =28.0; // Расстояние между МА
    extern double Lots =0.1; // Жестко заданное колич. лотов
    extern double Prots =0.07; // Процент свободных средств

    .........
    Ордера по рынку открываются только без предустановленных SL и ТР.
    Если Вы всерьез решили заняться эксперто-писанием, то предлагаю в первую очередь разобраться как можно заставить эксперт ставить ордера без этих уровней и добавлять модификацией их как только ордер попадет в рынок :bow:

    Кстати в FAQ этот вопрос затронут: http://www.procapital.ru/showthread.php?t=25901 ;)
  7. 77
    Комментарии
    1
    Темы
    77
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от Алексей Нефёдов Посмотреть сообщение
    Вам лучше обратиться на форум mql4 к разработчикам, так как мы не занимаемся разработкой и настройкой советников.
    Я бы может так и сделал, если бы я написал этот эксперт сам, но он взят из учебника по MQL 4 и у других ДЦ он работает.Может у вас какие то уникальные требование к написанию торговых советников.
  8. 854
    Комментарии
    12
    Темы
    854
    Репутация Pro
     
    В начале пути

    4 Медалей
    Цитата Сообщение от Handel Посмотреть сообщение
    Я бы может так и сделал, если бы я написал этот эксперт сам, но он взят из учебника по MQL 4 и у других ДЦ он работает.Может у вас какие то уникальные требование к написанию торговых советников.
    При Market Execution невозможно одновременно выставить ордер с t/p и s/l. Это необходимо делать после выставления ордера.
  9. 77
    Комментарии
    1
    Темы
    77
    Репутация Pro
     
    В начале пути

    2 Медалей
    Цитата Сообщение от Алексей Нефёдов Посмотреть сообщение
    При Market Execution невозможно одновременно выставить ордер с t/p и s/l. Это необходимо делать после выставления ордера.
    Огромное спаибо, что прояснили вопрос.
  10. 4,164
    Комментарии
    7
    Темы
    4265
    Репутация Pro
    Аватар для Денис Давыдов  
    Мастер форумных наук

    4 Медалей
    Цитата Сообщение от Handel Посмотреть сообщение
    Посмотрите пожалуйста, что не правильно в этом коде,в блоке открытия ордеров .При работе на счете постоянно возникает ошибка 130.Эксперт взят из учебника по MQL4.

    ....
    Под такое дело тут целый раздел есть http://www.procapital.ru/forumdisplay.php?f=379

    И пожалуйста код выкладывайте между тегов [CODE] [/CODE], что бы проще читать было.

Вверх
РегистрацияX

чтобы писать, читать, комментировать