Стоп. Причем здесь ордера? Мы все время говорили о позиции. Позиция и отложенные ордера - разные вещи. Их закрывать нужно по-разному!
Отложенные ордера не закрываются, а удаляются. Позиции закрываются путем открытия рыночного ордера равного по объему и противоположному по направлению открытой позиции.
Код, который Вы привели, не предназначен для удаления отложенных ордеров.
Для удаления ордеров можете использовать эту функцию:
Понял. Про ордеров ни слова - только позиции.
Прописал ночью PositionSelect - вроде как задышал. Отправляет (закрывает) позиции через раз, но думаю здесь уже условия замешаны.
Не понимаю другое. Не формирует стоп и профит лоссы, значения которых прописаны в входных параметрах. Если прописываю эти значения в отправке - то же самое - то есть - ничего.
inputint StopLoss=60; // Stop Lossinputint TakeProfit=170; // Take ProfitintOnInit()
...
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
return(0);
}
...
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(Ask,_Digits); // последняя цена ask
mrequest.sl = StopLoss; // Stop Loss
mrequest.tp = TakeProfit; // 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=10; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
// анализируем код возврата торгового сервераif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
Alert("Запрос на установку ордера Buy не выполнен - код ошибки:",GetLastError());
return;
Здравствуйте. Подскажите, пожалуйса, что неоходмо сделать в МТ4 после подписки на сигналы, стобы произошла синхронизация? Нашел в инструкциях что делать с МТ5, не нашел инструкцию по МТ4. Я подписался на сигнал из МТ4.
Прописал ночью PositionSelect - вроде как задышал. Отправляет (закрывает) позиции через раз, но думаю здесь уже условия замешаны.
Не понимаю другое. Не формирует стоп и профит лоссы, значения которых прописаны в входных параметрах. Если прописываю эти значения в отправке - то же самое - то есть - ничего.
Не правилно указани Стоп и Профит.
Здес указали целое число
inputint StopLoss=60; // Stop Lossinputint TakeProfit=170; // Take Profit
...
STP = StopLoss;
TKP = TakeProfit;
if(_Digits==5 || _Digits==3)
{
STP = STP*10;
TKP = TKP*10;
}
return(0);
}
...
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(Ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(Ask - StopLoss*_Points,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(Ask + TakeProfit*_Points,_Digits); // Take Profit
На места для стоп и профит нужна цена!
Причиной того, что не устанавливаются стопы при открытии позиции может зависить от режима торговли. Есть три режима: Request Execution (по запросу текущих цен), Instant Execution (по потоковым ценам), Market Execution (по рынку).
Если Ваш брокер использует режим Market Execution, то нужно сначала открыть позицию, а на следующем тике модифицировать (установить стопы) ее. Одновременно, т.е. в одном приказе, при данном режиме торговли открыть позицию со стопами не получится.
И вправду, в Альпари Market Execution. А есть сама структура модификации ордера? Поскольку в форуме отсутствует модификации при условии что есть отрытый ордер на продажу или на покупку.
Если не ошибаюсь "рыба" модификации выглядит таким образом.
if(PositionSelect(_Symbol)==true) // есть открытая позиция
{
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
{ModifyPosition(стоплосс на покупку)
}
else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
{
{ModifyPosition(стоплосс на продажу)
}
return
Lester: И вправду, в Альпари Market Execution. А есть сама структура модификации ордера? Поскольку в форуме отсутствует модификации при условии что есть отрытый ордер на продажу или на покупку.
Если не ошибаюсь "рыба" модификации выглядит таким образом.
Воспользуйтесь готовым решением стандартной библиотеки (Класс CTrade - метод PositionModify). Для начала вполне хорошее решение. В любой момент можно сделать свой подобный класс и внести нужные изменения.
Lester:
Ето шаблон с встроеные функции для открития,закрития и модификации.
Открития и закрития написани от Nikolay Kositsin.
Я легко изменил их и добавил модификации.
Думаю понятно как их вызоват. Так для удобства Вам.
Извините меня-перепутал файл.
Попробуйте так:
Lester:
Ето шаблон с встроеные функции для открития,закрития и модификации.
Открития и закрития написани от Nikolay Kositsin.
Я легко изменил их и добавил модификации.
Думаю понятно как их вызоват. Так для удобства Вам.
Как открыть редактором такие файлы?
Такие не открыть. ))
Попробуйте какие-нибудь статьи прочитать. Выбор очень большой. От самых маленьких до матёрых. ))
К сожалению, ордера при этом вовсе не закрываются. думаю мне стоит подумать некоторое время)
Поменял файл,извините меня.
Перепутал ,извините.
Стоп. Причем здесь ордера? Мы все время говорили о позиции. Позиция и отложенные ордера - разные вещи. Их закрывать нужно по-разному!
Отложенные ордера не закрываются, а удаляются. Позиции закрываются путем открытия рыночного ордера равного по объему и противоположному по направлению открытой позиции.
Код, который Вы привели, не предназначен для удаления отложенных ордеров.
Для удаления ордеров можете использовать эту функцию:
Понял. Про ордеров ни слова - только позиции.
Прописал ночью PositionSelect - вроде как задышал. Отправляет (закрывает) позиции через раз, но думаю здесь уже условия замешаны.
Не понимаю другое. Не формирует стоп и профит лоссы, значения которых прописаны в входных параметрах. Если прописываю эти значения в отправке - то же самое - то есть - ничего.
Здравствуйте. Подскажите, пожалуйса, что неоходмо сделать в МТ4 после подписки на сигналы, стобы произошла синхронизация? Нашел в инструкциях что делать с МТ5, не нашел инструкцию по МТ4. Я подписался на сигнал из МТ4.
Спасибо.
Понял. Про ордеров ни слова - только позиции.
Прописал ночью PositionSelect - вроде как задышал. Отправляет (закрывает) позиции через раз, но думаю здесь уже условия замешаны.
Не понимаю другое. Не формирует стоп и профит лоссы, значения которых прописаны в входных параметрах. Если прописываю эти значения в отправке - то же самое - то есть - ничего.
Причиной того, что не устанавливаются стопы при открытии позиции может зависить от режима торговли. Есть три режима: Request Execution (по запросу текущих цен), Instant Execution (по потоковым ценам), Market Execution (по рынку).
Если Ваш брокер использует режим Market Execution, то нужно сначала открыть позицию, а на следующем тике модифицировать (установить стопы) ее. Одновременно, т.е. в одном приказе, при данном режиме торговли открыть позицию со стопами не получится.
Вообще, разберитесь со структурой торгового запроса: Справочник MQL5 / Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса. Я думаю, что это Вам поможет в дальнейшем изучении языка.
Если не ошибаюсь "рыба" модификации выглядит таким образом.
И вправду, в Альпари Market Execution. А есть сама структура модификации ордера? Поскольку в форуме отсутствует модификации при условии что есть отрытый ордер на продажу или на покупку.
Если не ошибаюсь "рыба" модификации выглядит таким образом.