Здравствуйте, не могу понять, почему не выставляются стопы?
inputint StopLoss=499; // Stop Lossinputint TakeProfit=999; // Take Profitinputint EA_Magic=12345; // Magic Number советникаinputdouble Lot=0.1; // Количество лотов для торговлиintOnInit()
{
//--- Для работы с брокерами, использующими 5-ти значные котировки,//--- умножаем на 10 значения SL и TP
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
return(0);
}
voidOnTick()
{
//---MqlTick latest_price; // Будет использоваться для текущих котировокSymbolInfoTick(Symbol(),latest_price); // Получаем текущие ценыMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросов
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = Lot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
Top2n: Здравствуйте, не могу понять, почему не выставляются стопы?
Во-первых, требуется инициализация:
MqlTradeRequest mrequest={0}; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult={0}; // Будет использоваться для получения результатов выполнения торговых запросов
Во-вторых, возможность выставления sl и tp зависит от режима исполнения рыночных ордеров, установленного брокером. Посмотрите, сколько в Справочнике есть таких режимов и проверьте, какой режим установлен у брокера.
Во-вторых, возможность выставления sl и tp зависит от режима исполнения рыночных ордеров, установленного брокером. Посмотрите, сколько в Справочнике есть таких режимов и проверьте, какой режим установлен у брокера.
я обнулил через ZeroMemory(mrequest);
про режимы исполнения ордеров не очень понял, брокер альпари, думаю все по стандарту. Блин ерунда какая та, не хочет и все. Вывел через comment sl и tp? показывает нынешнюю цену + sl. все так понимаю норма!
про режимы исполнения ордеров не очень понял, брокер альпари, думаю все по стандарту. Блин ерунда какая та, не хочет и все. Вывел через comment sl и tp? показывает нынешнюю цену + sl. все так понимаю норма!
Top2n про режимы исполнения ордеров не очень понял, брокер альпари, думаю все по стандарту. Блин ерунда какая та, не хочет и все. Вывел через comment sl и tp? показывает нынешнюю цену + sl. все так понимаю норма!
Я Альпари не отслеживаю, но, по-моему, все вопросы с непостановкой указанных Вами уровней были связаны именно с Альпари. Попробуйте выставить свой ордер на демосчете MQ - и у Вас всё получится.
Разработчики пока что не предусмотрели возможность отражения в журнале сообщений о невозможности выставления уровней sl и tp в режимах Market Execution и Exchange Execution. Да и незачем это. Программист сам должен определять, какой режим установлен брокером.
Yedelkin: Разработчики пока что не предусмотрели возможность отражения в журнале сообщений о невозможности выставления уровней sl и tp в режимах Market Execution и Exchange Execution. Да и незачем это. Программист сам в должен определять, какой режим установлен брокером.
Всё равно, чтобы не гадать нужно анализировать все ошибки и коды возврата. Легче и быстрее разобраться потом, что делать дальше. ))
tol64: Всё равно, чтобы не гадать нужно анализировать все ошибки и коды возврата. Легче и быстрее разобраться потом, что делать дальше. ))
...Особенно когда знаешь, что "ошибок и кодов возврата" в данном конкретном случае попросту не предусмотрено :) Не спорю, сама по себе постановка вопроса, - правильная, но в данном конкретном случае - не поможет :/
А без "если"? ...
Здравствуйте, не могу понять, почему не выставляются стопы?
Во-первых, требуется инициализация:
Во-вторых, возможность выставления sl и tp зависит от режима исполнения рыночных ордеров, установленного брокером. Посмотрите, сколько в Справочнике есть таких режимов и проверьте, какой режим установлен у брокера.
Во-первых, требуется инициализация:
Во-вторых, возможность выставления sl и tp зависит от режима исполнения рыночных ордеров, установленного брокером. Посмотрите, сколько в Справочнике есть таких режимов и проверьте, какой режим установлен у брокера.
я обнулил через ZeroMemory(mrequest);
про режимы исполнения ордеров не очень понял, брокер альпари, думаю все по стандарту. Блин ерунда какая та, не хочет и все. Вывел через comment sl и tp? показывает нынешнюю цену + sl. все так понимаю норма!
я обнулил через ZeroMemory(mrequest);
про режимы исполнения ордеров не очень понял, брокер альпари, думаю все по стандарту. Блин ерунда какая та, не хочет и все. Вывел через comment sl и tp? показывает нынешнюю цену + sl. все так понимаю норма!
Я Альпари не отслеживаю, но, по-моему, все вопросы с непостановкой указанных Вами уровней были связаны именно с Альпари. Попробуйте выставить свой ордер на демосчете MQ - и у Вас всё получится.
Насчет режимов исполнения ордеров. Вы пользуетесь функцией https://www.mql5.com/ru/docs/trading/ordersend Прочтите внимательно вот этот раздел Справочника: https://www.mql5.com/ru/docs/constants/structures/mqltraderequest и ответьте для себя на вопрос: "сколько режимов исполнения предусмотрено для рыночных ордеров". Если не сможете ответить на этот вопрос - спрашивайте.
Разработчики пока что не предусмотрели возможность отражения в журнале сообщений о невозможности выставления уровней sl и tp в режимах Market Execution и Exchange Execution. Да и незачем это. Программист сам в должен определять, какой режим установлен брокером.