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

 
Aleksey Vyazmikin #:

Да я только советы могу раздавать - ведь родился в стране советов...

Предметно - поищите - вот как вариант.

Я сам до сих пор не познал все нюансы торговый операций - заказал класс во фрилансе много лет назад и пользуюсь им с небольшими доработками.

Понял. Спасибо за ценную информацию

 
ANDREY #:

Спасибо большое за ценный совет. Если Вас не затруднит скинте мне пожалуйста ссылку на советник(не индикатор) который был на 4 , и потом стал на 5(если можно на самый простой) , или сам советник в 4 а потом он же в 5

Вот самый простой. Так и называется. Тут есть и MQL5 код и MQL4.

Simple advisor
Simple advisor
  • www.mql5.com
Советник на отложенных ордерах
 
Alexey Viktorov #:

Вот самый простой. Так и называется. Тут есть и MQL5 код и MQL4.

Спасибо за помощь.

 
ANDREY #:

Но как только я обусловил открытие ордера , ордера открываться перестали , подскажите пожалуйста в чем я ошибся. Вот код, который открывал ордера, когда не было никаких условий.

Еще я не понял пока такой момент.... Когда ордера БАЙ открывались, то они закрывались, как я понял встречными ордерами СЕЛ. И не понял я где код брал информацию через какое количество пунктов закрывать ордера , ведь я нигде не прописывал размер СЛ и ТП и нигде не прописывал вообще функции закрывающей ордера. Я подозреваю что эта информация записана в каком то месте какого то вложенного файла, то есть в каком то классе или какой то структуре. Если это так , то как найти это место что бы вносить изменения в параметры открываемого ордера?

Еще раз спасибо за помощь

Вы объявили структуру MqlDateTime , но не инициализировали её, в ней сейчас либо пусто, либо мусор.

вот так будет открывать позиции бай на каждом тике с 10:00 часов,в течении минуты. Затем в 11:00 начнут ещё открываться  позиции бай в течении одной минуты.

//+------------------------------------------------------------------+
#include<Trade\Trade.mqh>
CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if((time_now.hour == 10 || time_now.hour == 11) && time_now.min == 0)
      trade.Buy(0.1);
  }
//+------------------------------------------------------------------+
Этот код не может закрывать позиции, ничего такого внутри класса CTrade нет.
 
Aleksandr Slavskii #:

Вы объявили структуру MqlDateTime , но не инициализировали её, в ней сейчас либо пусто, либо мусор.

вот так будет открывать позиции бай на каждом тике с 10:00 часов,в течении минуты. Затем в 11:00 начнут ещё открываться  позиции бай в течении одной минуты.

Этот код не может закрывать позиции, ничего такого внутри класса CTrade нет.

Огромное Вам спасибо.... Вы меня сильно продвинули в освоении пятерки. Вы говорите что этот код не может закрывать позиции. Но если убрать все условия, то позиции открываются и закрываются встречными ордерами СЕЛ....как я понял. Тогда по команде какого кода происходит закрытие ордеров? Где программа берет данные для закрытия ордеров именно через энное количество пунктов, или при наступлении какого то события? Я даже не пойму по какому правилу она их закрывает

#include<Trade\Trade.mqh>
CTrade  trade;

void OnTick()
{
trade.Buy(0.1);
}

И еще мне бросилось в глаза, что ордера СЕЛ , которыми закрываются ордера БАЙ имеют почему то номер тикета очень далеко отстоящий от номера тикета закрываемого ими ордера БАЙ. Например , первый ордер БАЙ имеет тикет 2 , а закрывающий его ордрер СЕЛ имеет тикет не 3 (что было бы логично) а  почему то 91779

 А если открыть только 1 ордер , то все становится логичным . Ордер Бай имеет номер 2 , а закрывающие его СЕЛ --- 3

int y;
#include<Trade\Trade.mqh>
CTrade  trade;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlDateTime time_now;
   TimeCurrent(time_now);
   if(time_now.hour == 10&&y==0)
   {trade.Buy(0.1);y =1;}
      
  }


 
ANDREY #:

Огромное Вам спасибо.... Вы меня сильно продвинули в освоении пятерки. Вы говорите что этот код не может закрывать позиции. Но если убрать все условия, то позиции открываются и закрываются встречными ордерами СЕЛ....как я понял. Тогда по команде какого кода происходит закрытие ордеров? Где программа берет данные для закрытия ордеров именно через энное количество пунктов, или при наступлении какого то события? Я даже не пойму по какому правилу она их закрывает

И еще мне бросилось в глаза, что ордера СЕЛ , которыми закрываются ордера БАЙ имеют почему то номер тикета очень далеко отстоящий от номера тикета закрываемого ими ордера БАЙ. Например , первый ордер БАЙ имеет тикет 2 , а закрывающий его ордрер СЕЛ имеет тикет не 3 (что было бы логично) а  почему то 91779

 А если открыть только 1 ордер , то все становится логичным . Ордер Бай имеет номер 2 , а закрывающие его СЕЛ --- 3


Нууу, сложно понять, что у вас там происходит, но я так думаю вы открываете позиций больше, чем разрешено брокером на этом инструменте и тестер начинает закрывать лишние.

На самом деле он не должен открывать эти лишние. Но по другому объяснить то, что у вас происходит я не могу.


С одной позицией тоже не понятно. Почему она закрывается в конце дня. Возможно у вашего брокера запрещено переносить позиции на следующий день.

 
Aleksandr Slavskii #:

Нууу, сложно понять, что у вас там происходит, но я так думаю вы открываете позиций больше, чем разрешено брокером на этом инструменте и тестер начинает закрывать лишние.

На самом деле он не должен открывать эти лишние. Но по другому объяснить то, что у вас происходит я не могу.


С одной позицией тоже не понятно. Почему она закрывается в конце дня. Возможно у вашего брокера запрещено переносить позиции на следующий день.

Спасибо . Объяснение выглядит очень логично.  На четверке с точно таким же кодом и на том же периоде происходит то же самое только ордера закрываются не встречным ордером. Брокер у меня Альпари. После Ваших объяснений стало понятно почему номера закрывающих встречных ордеров так сильно отличаются от закрыВАЕМых ими ордеров. Потому что все закрывающие ордера открываются в самом конце после всех закрываемых ордеров

 

Всем доброго времени суток!
Я пытаюсь научиться выставлять ордера в пятерке именно при помощи класса  CTrade , так как мне показалось что это самый быстрый и простой вариант их установки. А точнее я пытаюсь научиться выставлять параметр СТОПЛОСС. В четверке последняя цена бид хранилась в предопределенной  перуменной Вid ,а в пятерке как я понял последняя цена бид не хранится, а, если я не ошибаюсь, как один из вариантов,  вычисляется в методе Bid класса  CSymbolInfo. Но что бы этот метод вычислил цену  Символ должен быть предварительно выбран методом Name. Как работает  метод Name я понимаю.В него нужно вставить или название символа или NULL и он вернет ложь или истину.

Но не могу понять как и где нужно объединить метод Name и метод   Bid , что бы в переменную с сохранилась цена бид

В четверке ордера выбирались при помощи функции Select() А в пятерке нужно выбирать не ордера а символ.... Как это делать я не понимаю

Буду всем очень признателен если напишете в моем коде фрагмент при помощи которого в переменную с сохранится цена бид, которую я использую в параметре СЛ метода Вuy класса  CTrade

int y;
double c,d;
#include<Trade\Trade.mqh>        //класс
#include <Trade\SymbolInfo.mqh>  //класс 
CTrade  trad;                   //класс (создание объекта класса)
CSymbolInfo pris;
//+------------------------------------------------------------------+
void OnTick()
  {
   c=pris.Bid();//
   Print(" ---------------------CТОП------------------------------------------------------------  ",c);
   MqlDateTime t;                //структура (объявление структуры)
   TimeCurrent(t);               //структура (инициализация структуры)
   if(t.hour == 9&&y==0)
   {trad.Buy(0.1,NULL,0,c);y =1;}   //класс
      
  }
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
Документация по MQL5: Стандартная библиотека / Торговые классы / CSymbolInfo / Name
  • www.mql5.com
Name - CSymbolInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Помогите разобраться. В строке ObjectMove(0, "LineAB", prevTime, prevPrice, newAx, newAy);  пишет wrong parameters count. Где ошибка?

 
vitaliy zamkovoy #:

Помогите разобраться. В строке ObjectMove(0, "LineAB", prevTime, prevPrice, newAx, newAy);  пишет wrong parameters count. Где ошибка?

https://www.mql5.com/ru/docs/objects/objectmove