Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 723

 
Alexander Antoshkin:

И еще хотел спросить:   Что нужно изменить в торговом запросе  ,  появилась ошибка 10030  ,,,  годом ранее  код  эксперта  работал  без проблем  а теперь  опять меня заставляет читать/искать  новшество изменений MQL5


// функция открытия позиции с рынка
bool MarketOrder(const string sSymbol, const ENUM_POSITION_TYPE eType, const double fLot, const int nSL = 0, const int nTP = 0, const ulong nMagic = 0, const uint nSlippage = 1000)
{
        bool bRetVal = false;
        
        // запрос
        MqlTradeRequest oRequest = {0};
        MqlTradeResult   oResult = {0};
        
        double fPoint = SymbolInfoDouble(sSymbol, SYMBOL_POINT);
        int nDigits     = (int) SymbolInfoInteger(sSymbol, SYMBOL_DIGITS);

        oRequest.action         = TRADE_ACTION_DEAL;
        oRequest.symbol         = sSymbol;
        oRequest.volume         = fLot;
        oRequest.stoplimit      = 0;
        oRequest.deviation      = nSlippage;
        
        if(eType == POSITION_TYPE_BUY)
        {
                oRequest.type           = ORDER_TYPE_BUY;
                oRequest.price          = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_ASK), nDigits);
                oRequest.sl                     = NormalizeDouble(oRequest.price - nSL * fPoint, nDigits) * (nSL > 0);
                oRequest.tp                     = NormalizeDouble(oRequest.price + nTP * fPoint, nDigits) * (nTP > 0);
        }
        
        if(eType == POSITION_TYPE_SELL)
        {
                oRequest.type           = ORDER_TYPE_SELL;
                oRequest.price          = NormalizeDouble(SymbolInfoDouble(sSymbol, SYMBOL_BID), nDigits);
                oRequest.sl                     = NormalizeDouble(oRequest.price + nSL * fPoint, nDigits) * (nSL > 0);
                oRequest.tp                     = NormalizeDouble(oRequest.price - nTP * fPoint, nDigits) * (nTP > 0);
        }
        
        // определим допустимый тип заливки ордера (зависит от типа исполнения - Instant, Market, биржевое и т.д.)
        switch((int) SymbolInfoInteger(sSymbol, SYMBOL_FILLING_MODE))
        {
        case SYMBOL_FILLING_FOK:
                oRequest.type_filling = ORDER_FILLING_FOK;
                break;
        case SYMBOL_FILLING_IOC:
                oRequest.type_filling = ORDER_FILLING_IOC;
                break;
        default:
                oRequest.type_filling = ORDER_FILLING_RETURN;
        }

        oRequest.magic                          = nMagic;
        
        
        // проверка перед отправкой
        MqlTradeCheckResult oCheckResult= {0};
        
        bool bCheck = OrderCheck(oRequest, oCheckResult);

        Print("Проверка заявки MarketOrder:",
                        " OrderCheck = ",               bCheck,
                        ", retcode = ",         oCheckResult.retcode,
                        ", balance = ",         NormalizeDouble(oCheckResult.balance, 2),
                        ", equity = ",                  NormalizeDouble(oCheckResult.equity, 2),
                        ", margin = ",                  NormalizeDouble(oCheckResult.margin, 2),
                        ", margin_free = ",     NormalizeDouble(oCheckResult.margin_free, 2),
                        ", margin_level = ",    NormalizeDouble(oCheckResult.margin_level, 2),
                        ", comment = ",         oCheckResult.comment);
        
        // если проверка удачная - отправка заявки
        if(bCheck == true && oCheckResult.retcode == 0)
        {
                bool bResult = false;
                
                // 3 попытки выставления ордера
                for(int k = 0; k < 3; k++)
                {
                        bResult = OrderSend(oRequest, oResult);
                        
                        if(bResult == true && oResult.retcode == TRADE_RETCODE_DONE)
                                break;
                        
                        if(k == 2)
                                break;
                                
                        Sleep(100);
                }
        
                Print("Отправка заявки:",
                                " OrderSend = ",        bResult,
                                ", retcode = ", oResult.retcode,
                                ", deal = ",            oResult.deal,
                                ", order = ",           oResult.order,
                                ", volume = ",          NormalizeDouble(oResult.volume, 2),
                                ", price = ",           NormalizeDouble(oResult.price, _Digits),
                                ", bid = ",                     NormalizeDouble(oResult.bid, _Digits),
                                ", ask = ",                     NormalizeDouble(oResult.ask, _Digits),
                                ", comment = ", oResult.comment,
                                ", request_id = ",oResult.request_id);  
                                
                if(oResult.retcode == TRADE_RETCODE_DONE)
                        bRetVal = true;
        }
        else if(oResult.retcode == TRADE_RETCODE_NO_MONEY)
        {
                Print("Недостаточно денег для открытия позиции. Работа эксперта прекращена.");
                ExpertRemove();
        }
        
        return(bRetVal);
}

Выделенное я-бы написал так:

switch((ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(sSymbol, SYMBOL_TRADE_EXEMODE);
 
Доброго времени суток. Не подскажите советников   с трейлинг стопом? 
[Удален]  
Alexey Viktorov:

Выделенное я-бы написал так:

switch((ENUM_SYMBOL_TRADE_EXECUTION)SymbolInfoInteger(sSymbol, SYMBOL_TRADE_EXEMODE);

От души...!!! )

Помогло , заработало !

Спасибо  Алексей!!!!!!!!!!!!!!

 
Доброго времени суток. Не подскажите советников  к МТ5  Не подскажите советников   с трейлинг стопом? желательно СКАЛЬПЕР ИЛИ РАБОТАЮЩИЙ НА НОВОСТЯХ или др. . Заранее спасибо 
 
Alex2018:
Доброго времени суток. Не подскажите советников  к МТ5  Не подскажите советников   с трейлинг стопом? желательно СКАЛЬПЕР ИЛИ РАБОТАЮЩИЙ НА НОВОСТЯХ или др. . Заранее спасибо 
Вы пользовались поиском? Здесь даже ссылки есть: советники с трейлинг стопом
 
Объясните, пожалуйста алгоритм действий установки купленного индикатора на терминал, потому что я купил, а активировать его не могу, не знаю в чём проблема?
 
act1on:
Объясните, пожалуйста алгоритм действий установки купленного индикатора на терминал, потому что я купил, а активировать его не могу, не знаю в чём проблема?
Уточните: покупали в Маркете?
 
Vladimir Karputov:
Уточните: покупали в Маркете?
Да в Маркете: https://www.mql5.com/ru/market/mt5/indicator
После покупки нажимал на "Установить в терминале", после чего перешёл в торговый терминал, но ничего не произошло, индикатор не появился
MQL5 Маркет: Индикаторы
MQL5 Маркет: Индикаторы
  • www.mql5.com
Маркет - магазин программ для MetaTrader 5 и MetaTrader 4
 
act1on:
Да в Маркете: https://www.mql5.com/ru/market/mt5/indicator
После покупки нажимал на "Установить в терминале", после чего перешёл в торговый терминал, но ничего не произошло, индикатор не появился

Покажите (или приложите в пост или можете выслать мне лично) файл Журнала терминала.

 

Добавлено: Где найти скачанное из Маркета 

 
act1on:
Да в Маркете: https://www.mql5.com/ru/market/mt5/indicator
После покупки нажимал на "Установить в терминале", после чего перешёл в торговый терминал, но ничего не произошло, индикатор не появился

Запись

Custom Indicator        'EasyTrading Timing' is a demo version that can be run only in the Strategy Tester. To use the product without limitations, purchase the full version from the Market

 - означает, что ВЫ ничего не купили, а скачали демо-версию. Демо-версии можно запускать ТОЛЬКО В ТЕСТЕРЕ (о чём Вам и пишется).

Смотрите обучающее видео по маркету на YouTube. 

Как купить торгового робота или индикатор в Маркете платформы MetaTrader 4/5?
Как купить торгового робота или индикатор в Маркете платформы MetaTrader 4/5?
  • 2015.06.18
  • www.youtube.com
В маркете любой трейдер найдет тысячи торговых роботов и индикаторов. Купить их можно прямо в платформе MetaTrader и использовать по прямому назначению. В да...