Мультивалютный советник. Желательно мнение разработчиков. - страница 2

 
YuraZ писал (а): честно говоря и это не совсем красиво ... представим что тик не пришел по указанным парам и вы опять пролетите мимо

если бы Вы показали кусок кода по которому формируется вход - можно было бы найти быстрее ошибку в логике

Но должно же быть какое-то общепринятое решение в MQL? Как "синхронизовать" начало открытия баров по разным инструментам? Нужно, по всей видимости, ждать открытия нового бара по всем инструментам которые используешь. Но только как это сделать правильно?

 
Integer:

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

Скорее всего именно так и происходит. Но должно же быть какое-то решение в MQL? Это же не какая-то супер-функция. Как "синхронизовать" начало открытия бара по разным инструментам в реал-тайме?

 
LeoV:
YuraZ писал (а): честно говоря и это не совсем красиво ... представим что тик не пришел по указанным парам и вы опять пролетите мимо

если бы Вы показали кусок кода по которому формируется вход - можно было бы найти быстрее ошибку в логике

Но должно же быть какое-то общепринятое решение в MQL? Как "синхронизовать" начало открытия баров по разным инструментам? Нужно, по всей видимости, ждать открытия нового бара по всем инструментам которые используешь. Но только как это сделать правильно?

Есть - Позвонить Билу Гейтсу

 
Integer:

Есть - Позвонить Билу Гейтсу

Ну Бил Гейтс не имеет отношение к MQL. Да и к форексу вроде тоже)))))))))

 
LeoV:
YuraZ писал (а): честно говоря и это не совсем красиво ... представим что тик не пришел по указанным парам и вы опять пролетите мимо

если бы Вы показали кусок кода по которому формируется вход - можно было бы найти быстрее ошибку в логике

Но должно же быть какое-то общепринятое решение в MQL? Как "синхронизовать" начало открытия баров по разным инструментам? Нужно, по всей видимости, ждать открытия нового бара по всем инструментам которые используешь. Но только как это сделать правильно?

НЕТ в моем примере достаточно поймать начало часа на любом инструменте


НЕ НАДО СИНХРОНИЗИРОВАТЬ - полагаю именно это вы и делаете


при этом считать что по другим так же наступил новый час!

потому что он наступит!


и запустить обсчет после которого принимается решение о входе выходе


ВЫ ЛОВИТЕ ТИК!!! а новый тик и начало часа это не одно и тоже

тик ВПОЛНЕ может не прийти минут 5...


Вам надо в логике поменять тонкую ловлю нового бара на более мягкую

у вас же слишком жесткое условия начала бара - я предложил более мягкое


но если по всем инструментам ( которые ОТЛАВЛИВАЮТСЯ не прийдет тик то вроде как тоже не годится - ПРОСТО ТАКАЯ ВЕРОЯТНОСТЬ УЖЕ ОЧЕНЬ НИЗКА!


---

вы бы кусок кода привели - можно было бы предметнно поговорить

----



судя по всему у ВАС в коде стоит что то типа

поймать НОВЫЙ тик по EURUSD и если в это же момент есть тик по допустим USDCHF то у ВАС все хорошо

и если эти два события по времени разъехались ВЫ НЕ ВХОДИТЕ


ЭТО НЕВЕРНАЯ ЛОГИКА

 

YuraZ писал (а):

честно говоря и это не совсем красиво ... представим что тик не пришел по указанным парам и вы опять пролетите мимо

Если тик не пришел, то и выставить ордер сиюминутно Вам не удастся, разве что с помощью скрипта,

да и то только тогда если тики в ДЦ приходят, а они их на терминал не транслируют (в дневное время суток).

Поэтому я, когда реализовывал мультивалютный советник, делал Стейт Машину состояний Мили (или Мура),

которая отслеживала состояния открытости ордеров по нужным парам. Естественно не всегда получалось

открыть по нужной цене, но зато такой подход гарантировал, что ордера ТОЧНО будут открыты.

 
thecore:

YuraZ писал (а):

честно говоря и это не совсем красиво ... представим что тик не пришел по указанным парам и вы опять пролетите мимо

Если тик не пришел, то и выставить ордер сиюминутно Вам не удастся, разве что с помощью скрипта,

да и то только тогда если тики в ДЦ приходят, а они их на терминал не транслируют (в дневное время суток).

Поэтому я, когда реализовывал мультивалютный советник, делал Стейт Машину состояний Мили (или Мура),

которая отслеживала состояния открытости ордеров по нужным парам. Естественно не всегда получалось

открыть по нужной цене, но зато такой подход гарантировал, что ордера ТОЧНО будут открыты.

запросто! можно выставить ордер :-) если не пришел тик

вы подумайте ! если не придумаете я подскажу


+1 один из вариантов ВЫ указали

 
YuraZ:

ВЫ ЛОВИТЕ ТИК!!! а новый тик и начало часа это не одно и тоже

тик ВПОЛНЕ может не прийти минут 5...

Вам надо в логике поменять тонкую ловлю нового бара на более мягкую

у вас же слишком жесткое условия начала бара - я предложил более мягкое

но если по всем инструментам ( которые ОТЛАВЛИВАЮТСЯ не прийдет тик то вроде как тоже не годится - ПРОСТО ТАКАЯ ВЕРОЯТНОСТЬ УЖЕ ОЧЕНЬ НИЗКА!

Да дело всё в том, что советник должен работать по закрывшимся свечам. Поэтому, если свеча не закрылась на каком либо используемом инструменте, то решение не принимается.

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

 
LeoV:
YuraZ писал (а): честно говоря и это не совсем красиво ... представим что тик не пришел по указанным парам и вы опять пролетите мимо

если бы Вы показали кусок кода по которому формируется вход - можно было бы найти быстрее ошибку в логике

Но должно же быть какое-то общепринятое решение в MQL? Как "синхронизовать" начало открытия баров по разным инструментам? Нужно, по всей видимости, ждать открытия нового бара по всем инструментам которые используешь. Но только как это сделать правильно?

Не надо никаких синхронизаций и изобретений прочих велосипедов. Все давно уже изобретено. Наличие нового сформировавшегося бара проверяется только на том инструменте, на котором установлен советник по приходу первого тика. И событие start(), тоже срабатывает только на этом самом инструменте по приходу нового тика. Я вам привел кусок кода, где выполняется такая проверка, чтобы следующая позиция в случае реквот не открывалась на следующем баре, а после неудач, совершались попытки открытия на этом же баре. У меня все это нормально работает как сингловом, так и в мультивалютном режиме. Сделка в случае реквоты открывается на том же самом баре, но только с некоторой задержкой, а потому не всегда по цене открытия бара, а с некоторым смещением. Т.е. различия с тестером будут, но не в барах, а в цене открытия.

 
LeoV:
YuraZ:

ВЫ ЛОВИТЕ ТИК!!! а новый тик и начало часа это не одно и тоже

тик ВПОЛНЕ может не прийти минут 5...

Вам надо в логике поменять тонкую ловлю нового бара на более мягкую

у вас же слишком жесткое условия начала бара - я предложил более мягкое

но если по всем инструментам ( которые ОТЛАВЛИВАЮТСЯ не прийдет тик то вроде как тоже не годится - ПРОСТО ТАКАЯ ВЕРОЯТНОСТЬ УЖЕ ОЧЕНЬ НИЗКА!

Да дело всё в том, что советник должен работать по закрывшимся свечам. Поэтому, если свеча не закрылась на каком либо используемом инструменте, то решение не принимается.

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


а как вы себе представляете закрытие часа в принципе!


EURUSD закрылось - открылся новый час а USDCHF минут 15 висит... ну тики не приходят!

реально то ведь можно сказать что если какой либо их инструментов закрыл ЧАС то другие можно считать тоже закрыты

просто тики по ним могли не прийти


---

не надо завязываться на вариант что час должен ТИКОМ закрываться по всем нужным парам


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

---

Причина обращения: