Они дополняют друг друга, причем OnTradeTransaction полностью покрывает функционал OnTrade.
OnTradeTransaction дает доступ к сырому потоку транзакций и позволяет детально контролировать процесс исполнения торговых операций.
Функции срабатывают независимо, причем поток транзакций у OnTradeTransaction гораздо больше и детальнее. У OnTradeTransaction есть своя очередь, из которой выдаются команды.
ps: просто возьмите сами поставьте распринтовку у этих функций и посмотрите
Т.е. OnTrade теперь есть урезанный вариант OnTradeTransaction ?
или всё же в OnTrade можно получить что то, чего нельзя в OnTradeTransaction? ну например что то более упорядочено?
Т.е. OnTrade теперь есть урезанный вариант OnTradeTransaction ?
или всё же в OnTrade можно получить что то, чего нельзя в OnTradeTransaction? ну например что то более упорядочено?
OnTrade остался как и был - просто уведомление "в базе торговых операций произошли какие-то измененения" без деталей. Трейдеру надо самому поднимать базу и смотреть, что там в реальности изменилось.
OnTradeTransaction выдает абсолютно точные и детальные отдельные транзакции пошагово. Тут каждая транзакция на тарелочке дается, искать изменения в базе не надо.
Сделали именно то, что просили - дали полный и детальный контроль за всеми транзакциями, касающимися торговых операций. Причем легко отлавливаются любые изменения, произведенные на стороне сервера: срабатывание стопов, ордеров, ролловеры и тд.
OnTrade остался как и был - просто уведомление "в базе торговых операций произошли какие-то измененения" без деталей. Трейдеру надо самому поднимать базу и смотреть, что там в реальности изменилось.
OnTradeTransaction выдает абсолютно точные и детальные отдельные транзакции пошагово. Тут каждая транзакция на тарелочке дается, искать изменения в базе не надо.
Сделали именно то, что просили - дали полный и детальный контроль за всеми транзакциями, касающимися торговых операций. Причем легко отлавливаются любые изменения, произведенные на стороне сервера: стабатывание стопов, ордеров, ролловеры и тд.
Спасибо, очень толково получилось. Сейчас тестирую, всё очень удобно и функционально.
Подскажите пожалуйста можно ли использовать функцию CopyBuffer в функции инициализации?
выдает ошибку 4806
ERR_INDICATOR_DATA_NOT_FOUND
4806
Запрошенные данные не найдены
Если Вы в ините создаете индикатор, то чтение его данных лучше перенести в OnTick или OnCalculate, так как нужно время после создания индикатора, чтобы он смог рассчитаться.
То есть, создали индикатор в ините и ушли. В рабочей точке OnTick/OnCalculate проверяете через CopyBuffer наличие данные и тоже выходите из расчетов до тех пор, пока данные не появятся.
Таким отложенным образом нужно инициализировать и работать со сложно подчиненными/зависимыми индикаторами.
Если Вы в ините создаете индикатор, то чтение его данных лучше перенести в OnTick или OnCalculate, так как нужно время после создания индикатора, чтобы он смог рассчитаться.
То есть, создали индикатор в ините и ушли. В рабочей точке OnTick/OnCalculate проверяете через CopyBuffer наличие данные и тоже выходите из расчетов до тех пор, пока данные не появятся.
Таким отложенным образом нужно инициализировать и работать со сложно подчиненными/зависимыми индикаторами.
Спасибо что откликнулись.
Пишу индикатор...к сожалению концепция индикатора предполагает - что на момент когда мы доберемся до OnCalculate будет выбрана оптимальная пара, звучит подозреваю мутно.
В общем, в функции OnCalculate уже необходимо использовать результаты расчетов и анализов которые производились в On Init.
Перенести эти вычисления в OnCalculate возможности не имеется, потому как за время между приходами двух соседних тиков все расчеты выполнить не успеваем...
Пишу индикатор...к сожалению концепция индикатора предполагает - что на момент когда мы доберемся до OnCalculate будет выбрана оптимальная пара, звучит подозреваю мутно.
В общем, в функции OnCalculate уже необходимо использовать результаты расчетов и анализов которые производились в On Init.
Перенести эти вычисления в OnCalculate возможности не имеется, потому как за время между приходами двух соседних тиков все расчеты выполнить не успеваем...
Все получается нормально и легко.
Перенесите анализ в отдельную функцию и вызывается ее из OnCalculate. Если нет данных, то выходите из OnCalculate и ждете следующего тика.
От того, что индикатор реально стартанет через 1-2 секунды ничего страшного. По другому работать с сильно зависимыми и асинхронными процессами нельзя, только lazy/ondemand инициализация.
Срабатывает ли OnTradeTransaction от события Trade, или для него своё событие?
Если обе функции срабатывают от одного события то какова очерёдность? что срабатывает первым OnTrade() или OnTradeTransaction() ?
Ну так нельзя продолжать.
Поставьте распринтовку и посмотрите - это займет минуту.
Все уже там.В дополнение к моему эксперту... #419548
Это я так серебро начал тестить..
Там и расход память тремя однобаровыми Copy...() непонятный..
Они дополняют друг друга, причем OnTradeTransaction полностью покрывает функционал OnTrade.
OnTradeTransaction дает доступ к сырому потоку транзакций и позволяет детально контролировать процесс исполнения торговых операций.
Функции срабатывают независимо, причем поток транзакций у OnTradeTransaction гораздо больше и детальнее. У OnTradeTransaction есть своя очередь, из которой выдаются команды.
ps: просто возьмите сами поставьте распринтовку у этих функций и посмотрите
Т.е. OnTrade теперь есть урезанный вариант OnTradeTransaction ?
или всё же в OnTrade можно получить что то, чего нельзя в OnTradeTransaction? ну например что то более упорядочено?
Т.е. OnTrade теперь есть урезанный вариант OnTradeTransaction ?
или всё же в OnTrade можно получить что то, чего нельзя в OnTradeTransaction? ну например что то более упорядочено?
OnTrade остался как и был - просто уведомление "в базе торговых операций произошли какие-то измененения" без деталей. Трейдеру надо самому поднимать базу и смотреть, что там в реальности изменилось.
OnTradeTransaction выдает абсолютно точные и детальные отдельные транзакции пошагово. Тут каждая транзакция на тарелочке дается, искать изменения в базе не надо.
Сделали именно то, что просили - дали полный и детальный контроль за всеми транзакциями, касающимися торговых операций. Причем легко отлавливаются любые изменения, произведенные на стороне сервера: срабатывание стопов, ордеров, ролловеры и тд.
OnTrade остался как и был - просто уведомление "в базе торговых операций произошли какие-то измененения" без деталей. Трейдеру надо самому поднимать базу и смотреть, что там в реальности изменилось.
OnTradeTransaction выдает абсолютно точные и детальные отдельные транзакции пошагово. Тут каждая транзакция на тарелочке дается, искать изменения в базе не надо.
Сделали именно то, что просили - дали полный и детальный контроль за всеми транзакциями, касающимися торговых операций. Причем легко отлавливаются любые изменения, произведенные на стороне сервера: стабатывание стопов, ордеров, ролловеры и тд.
Подскажите пожалуйста можно ли использовать функцию CopyBuffer в функции инициализации?
выдает ошибку 4806 и 4007
ERR_INDICATOR_DATA_NOT_FOUND
4806
Запрошенные данные не найдены
ERR_ARRAY_RESIZE_ERROR
4007
Недостаточно памяти для перераспределения массива либо попытка изменения размера статического массива
Подскажите пожалуйста можно ли использовать функцию CopyBuffer в функции инициализации?
выдает ошибку 4806
ERR_INDICATOR_DATA_NOT_FOUND
4806
Запрошенные данные не найдены
Если Вы в ините создаете индикатор, то чтение его данных лучше перенести в OnTick или OnCalculate, так как нужно время после создания индикатора, чтобы он смог рассчитаться.
То есть, создали индикатор в ините и ушли. В рабочей точке OnTick/OnCalculate проверяете через CopyBuffer наличие данные и тоже выходите из расчетов до тех пор, пока данные не появятся.
Таким отложенным образом нужно инициализировать и работать со сложно подчиненными/зависимыми индикаторами.
Если Вы в ините создаете индикатор, то чтение его данных лучше перенести в OnTick или OnCalculate, так как нужно время после создания индикатора, чтобы он смог рассчитаться.
То есть, создали индикатор в ините и ушли. В рабочей точке OnTick/OnCalculate проверяете через CopyBuffer наличие данные и тоже выходите из расчетов до тех пор, пока данные не появятся.
Таким отложенным образом нужно инициализировать и работать со сложно подчиненными/зависимыми индикаторами.
Спасибо что откликнулись.
Пишу индикатор...к сожалению концепция индикатора предполагает - что на момент когда мы доберемся до OnCalculate будет выбрана оптимальная пара, звучит подозреваю мутно.
В общем, в функции OnCalculate уже необходимо использовать результаты расчетов и анализов которые производились в On Init.
Перенести эти вычисления в OnCalculate возможности не имеется, потому как за время между приходами двух соседних тиков все расчеты выполнить не успеваем...
Да. К сожалению в билд попала ошибка в отрисовке этого объекта. В следующем билде будет исправлено. Приносим свои извинения.
Понятно, спасибо. А что по
...
Будут ли допиливаться другие объекты (веер Ганна, дуги)?
Спасибо что откликнулись.
Пишу индикатор...к сожалению концепция индикатора предполагает - что на момент когда мы доберемся до OnCalculate будет выбрана оптимальная пара, звучит подозреваю мутно.
В общем, в функции OnCalculate уже необходимо использовать результаты расчетов и анализов которые производились в On Init.
Перенести эти вычисления в OnCalculate возможности не имеется, потому как за время между приходами двух соседних тиков все расчеты выполнить не успеваем...
Все получается нормально и легко.
Перенесите анализ в отдельную функцию и вызывается ее из OnCalculate. Если нет данных, то выходите из OnCalculate и ждете следующего тика.
От того, что индикатор реально стартанет через 1-2 секунды ничего страшного. По другому работать с сильно зависимыми и асинхронными процессами нельзя, только lazy/ondemand инициализация.