Ошибки, баги, вопросы - страница 774

 
Karlson:

Не знал в какую ветку написать ))) 

Начальный депо 10000.Это еще до вчерашнего апдейта.

 

Как это получилось? Можете в сервисдеске дать код и описание условий тестирования?
 
Urain:

Срабатывает ли OnTradeTransaction от события Trade, или для него своё событие?

Если обе функции срабатывают от одного события то какова очерёдность? что срабатывает первым OnTrade() или OnTradeTransaction() ?

Ну так нельзя продолжать.

Поставьте распринтовку и посмотрите - это займет минуту.

 

Все уже там.В дополнение к моему эксперту... #419548

Это я так серебро начал тестить..

Там и расход память тремя однобаровыми Copy...() непонятный..

 
Renat:

Они дополняют друг друга, причем OnTradeTransaction полностью покрывает функционал OnTrade.

OnTradeTransaction дает доступ к сырому потоку транзакций и позволяет детально контролировать процесс исполнения торговых операций.

Функции срабатывают независимо, причем поток транзакций у OnTradeTransaction гораздо больше и детальнее. У OnTradeTransaction есть своя очередь, из которой выдаются команды.

ps: просто возьмите сами поставьте распринтовку у этих функций и посмотрите

Т.е. OnTrade теперь есть урезанный вариант OnTradeTransaction ?

или всё же в OnTrade можно получить что то, чего нельзя в OnTradeTransaction? ну например что то более упорядочено?

 
Urain:

Т.е. OnTrade теперь есть урезанный вариант OnTradeTransaction ?

или всё же в OnTrade можно получить что то, чего нельзя в OnTradeTransaction? ну например что то более упорядочено?

OnTrade остался как и был - просто уведомление "в базе торговых операций произошли какие-то измененения" без деталей. Трейдеру надо самому поднимать базу и смотреть, что там в реальности изменилось.

OnTradeTransaction выдает абсолютно точные и детальные отдельные транзакции пошагово. Тут каждая транзакция на тарелочке дается, искать изменения в базе не надо.

Сделали именно то, что просили - дали полный и детальный контроль за всеми транзакциями, касающимися торговых операций. Причем легко отлавливаются любые изменения, произведенные на стороне сервера: срабатывание стопов, ордеров, ролловеры и тд.

 
Renat:

OnTrade остался как и был - просто уведомление "в базе торговых операций произошли какие-то измененения" без деталей. Трейдеру надо самому поднимать базу и смотреть, что там в реальности изменилось.

OnTradeTransaction выдает абсолютно точные и детальные отдельные транзакции пошагово. Тут каждая транзакция на тарелочке дается, искать изменения в базе не надо.

Сделали именно то, что просили - дали полный и детальный контроль за всеми транзакциями, касающимися торговых операций. Причем легко отлавливаются любые изменения, произведенные на стороне сервера: стабатывание стопов, ордеров, ролловеры и тд.

Спасибо, очень толково получилось. Сейчас тестирую, всё очень удобно и функционально.
 

Подскажите пожалуйста можно ли использовать функцию CopyBuffer в функции инициализации?

 

input int      n_analyzed_bars=50;

input int      shift_offset=0; 

input string   symb1="GBPUSD";

input ENUM_MA_METHOD   ma_method=MODE_SMA;

input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;  

//--- indicator buffers 

double                   MainMaBuffer[];

double                   MaBuffer1[]; 

//--- MA handles

int                      MainMaHandle;

int                      MaHandle1; 

int OnInit()

  { 

SetIndexBuffer(0,instsymBuffer,INDICATOR_DATA);

SetIndexBuffer(13,MainMaBuffer,INDICATOR_CALCULATIONS);

ArraySetAsSeries(MainMaBuffer,true);

ArraySetAsSeries(MaBuffer1,true);

 

MaHandle1 = iMA(symb1,0,1,0,ma_method,applied_price);

MainMaHandle = iMA(_Symbol,0,1,0,ma_method,applied_price); 

if(CopyBuffer(MaHandle1,0,0,n_analyzed_bars+shift_offset+2,MaBuffer1)<=0) 

    {

      Print("Getting MA is failed! Error",GetLastError());      

      return(0);

    }

 выдает ошибку 4806  и 4007

ERR_INDICATOR_DATA_NOT_FOUND

4806

Запрошенные данные не найдены

ERR_ARRAY_RESIZE_ERROR

4007

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

 
Neofit:

Подскажите пожалуйста можно ли использовать функцию CopyBuffer в функции инициализации?

 

 выдает ошибку 4806  

ERR_INDICATOR_DATA_NOT_FOUND

4806

Запрошенные данные не найдены

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

То есть, создали индикатор в ините и ушли. В рабочей точке OnTick/OnCalculate проверяете через CopyBuffer наличие данные и тоже выходите из расчетов до тех пор, пока данные не появятся.

Таким отложенным образом нужно инициализировать и работать со сложно подчиненными/зависимыми индикаторами.

 
Renat:

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

То есть, создали индикатор в ините и ушли. В рабочей точке OnTick/OnCalculate проверяете через CopyBuffer наличие данные и тоже выходите из расчетов до тех пор, пока данные не появятся.

Таким отложенным образом нужно инициализировать и работать со сложно подчиненными/зависимыми индикаторами.

Спасибо что откликнулись.

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

В общем, в функции  OnCalculate уже необходимо использовать результаты расчетов и анализов которые производились в On Init.

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

 
antt:
Да. К сожалению в билд попала ошибка в отрисовке этого объекта. В следующем билде будет исправлено. Приносим свои извинения.

Понятно, спасибо. А что по

Silent:

...

Будут ли допиливаться другие объекты (веер Ганна, дуги)?

на предмет "гуляний" при изменении окна?
Причина обращения: