помогите написать или скажите где помогут

 

Привет. сразу к сути: советник по прошествии заданного времени после открытия свечи поверяет ее направлениеи соответственно открывает позицию (вверх покупает, вниз продает)

время- оптимизируется (примерно минут 10, ТФ думается 1H)

тп и сл тоже подлежат оптимизации

далее за заданное до закрытия свечи время (оптим) если ордер не закрылся по сл или тп, проверяем профит

если профит>=0 то закрываем

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

Вопросы:

- как мне сделать что бы открывался только один ордер?

полагаю нужно делать проверку и сравнивать там значение переменной KOL и количества открытых ордеров? как прописать это?

и порверять нужно в самом начале start?

- с усовием по времени сейчас только дошло(когда писал)на открытие нужно установить узкий промежуток времени, иначе когда ордер закроется по тп или сл а свеча еще не закроется то условие для открытия по времени снова станет истинным и будет открыта новая поза, а если ко всему будет соблюдено и условие по закрытию то вообще красибо будет: открыл - закрыл (если профит>=0)

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

Спасибо.

Файлы:
111_1.mq4  2 kb
 
yurec1984:

- как мне сделать что бы открывался только один ордер?


OrdersTotal() ==0

если только на одной валютной паре и торгует только советник или чтоб было мудренее при открытие ордера проверка на существование ордера

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 06.03.2008                                                     |
//|  Описание : Возвращает флаг существования позиций                          |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    ot - время открытия             ( 0   - любое время открытия)           |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal();
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
 
спасибо, вечером попробую сделать
 
yurec1984:


личное наблюдение,заключенное в том, что хвосты у свечей ( полчаса, час, 4) рисуются во время, близкое к открытию и закрытию свечи,

Чтобы это проверить, достаточно посмотреть на более мелкие таймфреймы.
 
дык, смотрел и руками пробовал торговать по схеме, пришел к выводу: надо программно испытывать, ручками долго.
 
yurec1984:
дык, смотрел и руками пробовал торговать по схеме, пришел к выводу: надо программно испытывать, ручками долго.
вы на правильном пути. Я тоже в свое время изучал MQL чтобы проверить несколько стратегий.
 

снова за помощью, контроль количества ордеров вроде сделал (хочется знать корректно ли?)

не могу закрыть ордер, и понять не могу из за магика это или я вообще не так делаю.

я так понял если при открытии магик указан то и при закрытии нужно его прописывать вместо тикета?

в учебнике ни каких пояснений на счет применения магика не нашел.

Посмотрите что я не так сделал с магиком и закрытием? ошибку писал в журнале - не верный номер тикета( при попытке закрыть ордер, ошибка 4108)

а если убирал везде номер то требовал указать тикет, а где брать его? и вообще с магномером было бы лучше.

файл с последними исправлениями

Файлы:
111_2.mq4  3 kb
 
чуваки, помогите, как закрыть ордер, почему номер тикета неверный?
 
yurec1984:
чуваки, помогите, как закрыть ордер, почему номер тикета неверный?


OrderClose(magic,LOT,Bid,slippage,Red);

https://docs.mql4.com/ru/trading/OrderClose

bool OrderClose(int ticket, double lots, double price, int slippage, color Color=CLR_NONE)