Пишу следующий код
Instruments[22].instrument ранее присвоено "MTLR".
Вижу ошибку
2019.09.30 14:56:06.364 Core 1 2019.01.22 15:30:00 failed exchange buy 1.138K MTLR at market sl: 0.00 tp: 0.00 [Invalid request]
на временном интервале 2019.01.01, 2019.06.01. Начальный депозит 100000 р. Плечо 1/4
Подскажите, пожалуйста, в чём может быть дело?
А не проще воспользоваться стандартной библиотекой
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade
- www.mql5.com
А не проще воспользоваться стандартной библиотекой
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade
Тогда ещё вопрос: как быть если мне не нужен ни sl ни tp?
И как потом сделать частичное закрытие ордера?Тогда ещё вопрос: как быть если мне не нужен ни sl ни tp?
Пример: открываем позицию заданного направления (BUY или SELL) заданным объёмом (Lots) - ни Стоп лосс ни Тейк профита нет
//+------------------------------------------------------------------+ //| Open One Position.mq5 | //| Copyright © 2018, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2018, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.002" //--- #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> CTrade m_trade; // trading object CSymbolInfo m_symbol; // symbol info object //--- input parameters input double InpLots = 10.0; // Lots input ENUM_POSITION_TYPE InpPosType = POSITION_TYPE_BUY; // Open position input ulong InpMagic = 208060783; // Magic number //--- ulong ExtSlippage=10; // Slippage //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- m_trade.SetExpertMagicNumber(InpMagic); m_trade.SetMarginMode(); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); m_trade.SetDeviationInPoints(ExtSlippage); //--- if(InpPosType==POSITION_TYPE_BUY) m_trade.Buy(InpLots); else if(InpPosType==POSITION_TYPE_SELL) m_trade.Sell(InpLots); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- } //+------------------------------------------------------------------+
Пример: открываем позицию заданного направления (BUY или SELL) заданным объёмом (Lots) - ни Стоп лосс ни Тейк профита нет
Спасибо! Пока вроде всё понятно. )
Спасибо! Пока вроде всё понятно. )
Опять появился вопрос. Требуется закрыть позицию количеством лот, зависящем от количества открытых лот данной бумаги. Вот код
CTrade m_trade; CSymbolInfo m_symbol; m_trade.SetExpertMagicNumber(i); m_trade.SetMarginMode(); m_symbol.Name(Instruments[i].instrument); m_trade.SetTypeFillingBySymbol(m_symbol.Name()); //Print(m_symbol.Name()); m_trade.SetDeviationInPoints(6); //Print(m_trade.Sell(m_trade.RequestVolume(), Instruments[i].instrument), // m_trade.RequestVolume()); 1 вариант //m_trade.PositionCloseBy(m_trade.RequestPosition(), m_trade.RequestPositionBy()); // 2 вариант m_trade.PrintResult();
помогите, пожалуйста.
Опять появился вопрос. Требуется закрыть позицию количеством лот, зависящем от количества открытых лот данной бумаги. Вот код
помогите, пожалуйста.
Опишите своими словами, так сколько же нужно закрывать?
Опишите своими словами, так сколько же нужно закрывать?
В одном случае полностью всю заявку, а в другом 1/5 (во втором случае заявка может быть отправлена несколько раз)
В одном случае полностью всю заявку, а в другом 1/5 (во втором случае заявка может быть отправлена несколько раз)
Сначала необходимо посчитать количество (лотов или позиций - тут я Вас не совсем понимаю). После этого применяется частичное закрытие m_trade. PositionClosePartial
Сначала необходимо посчитать количество (лотов или позиций - тут я Вас не совсем понимаю). После этого применяется частичное закрытие m_trade. PositionClosePartial
Я тестирую робота на демо-счёте брокера "Открытие", и там неттинговый учёт. Речь об округлённом количестве доли в лотах.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Пишу следующий код
Instruments[22].instrument ранее присвоено "MTLR".
Вижу ошибку
2019.09.30 14:56:06.364 Core 1 2019.01.22 15:30:00 failed exchange buy 1.138K MTLR at market sl: 0.00 tp: 0.00 [Invalid request]
на временном интервале 2019.01.01, 2019.06.01. Начальный депозит 100000 р. Плечо 1/4
Подскажите, пожалуйста, в чём может быть дело?