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

 

Lester:
Ето шаблон с встроеные функции для открития,закрития и модификации.
Открития и закрития написани от Nikolay Kositsin.

Я легко изменил их и добавил модификации.

Думаю понятно как их вызоват. Так для удобства Вам.

 

Извините меня-перепутал файл.

Документация по MQL5: Файловые операции / FileMove
Документация по MQL5: Файловые операции / FileMove
  • www.mql5.com
Файловые операции / FileMove - Документация по MQL5
Файлы:
schablon_1.mq5  13 kb
 
papaklass:

 Попробуйте так:

 

К сожалению, ордера при этом вовсе не закрываются. думаю мне стоит подумать некоторое время)
 
mario065:

Lester:
Ето шаблон с встроеные функции для открития,закрития и модификации.
Открития и закрития написани от Nikolay Kositsin.

Я легко изменил их и добавил модификации.

Думаю понятно как их вызоват. Так для удобства Вам.

Как открыть редактором такие файлы?
 
Lester:
Как открыть редактором такие файлы?

Такие не открыть. ))

Попробуйте какие-нибудь статьи прочитать. Выбор очень большой. От самых маленьких до матёрых. ))

 
Lester:
К сожалению, ордера при этом вовсе не закрываются. думаю мне стоит подумать некоторое время)

Поменял файл,извините меня.

Перепутал ,извините.

 
papaklass:

 Стоп. Причем здесь ордера? Мы все время говорили о позиции. Позиция и отложенные ордера - разные вещи. Их закрывать нужно по-разному!

Отложенные ордера не закрываются, а удаляются. Позиции закрываются путем открытия рыночного ордера равного по объему и противоположному по направлению открытой позиции.

Код, который Вы привели, не предназначен для удаления отложенных ордеров.

Для удаления ордеров можете использовать эту функцию:

 

Понял. Про ордеров  ни слова - только позиции.

Прописал ночью PositionSelect - вроде как задышал. Отправляет (закрывает) позиции через раз, но думаю здесь уже условия замешаны.

Не понимаю другое. Не формирует стоп и профит лоссы, значения которых прописаны в входных параметрах. Если прописываю эти значения в отправке - то же самое - то есть - ничего.

input int StopLoss=60;      // Stop Loss
input int TakeProfit=170;   // Take Profit
int OnInit()
 ...
   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.

Спасибо. 

Торговые сигналы
Торговые сигналы
  • www.mql5.com
Торговые Сигналы для MetaTrader: копирование сделок, мониторинг счета, автоматическое исполнение сигналов и социальный трейдинг
 
Lester:

Понял. Про ордеров  ни слова - только позиции.

Прописал ночью PositionSelect - вроде как задышал. Отправляет (закрывает) позиции через раз, но думаю здесь уже условия замешаны.

Не понимаю другое. Не формирует стоп и профит лоссы, значения которых прописаны в входных параметрах. Если прописываю эти значения в отправке - то же самое - то есть - ничего.

Не правилно указани Стоп и Профит.
Здес указали целое число
input int StopLoss=60;      // Stop Loss
input int 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

На места для стоп и профит нужна цена!
 
papaklass:

 Причиной того, что не устанавливаются стопы при открытии позиции может зависить от режима торговли. Есть три режима: Request Execution (по запросу текущих цен), Instant Execution (по потоковым ценам), Market Execution (по рынку).

Если Ваш брокер использует режим Market Execution, то нужно сначала открыть позицию, а на следующем тике модифицировать (установить стопы) ее. Одновременно, т.е. в одном приказе, при данном режиме торговли открыть позицию со стопами не получится.

Вообще, разберитесь со структурой торгового запроса: Справочник MQL5 / Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса. Я думаю, что это Вам поможет в дальнейшем изучении языка.

И вправду, в Альпари 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). Для начала вполне хорошее решение. В любой момент можно сделать свой подобный класс и внести нужные изменения.
Причина обращения: