Советники: Классификатор на основе k-ближайших соседей. - страница 4

 
EvgeTrofi:

Скажите пожалуйста, какую функцию в следующей строке выполняет знак & ?

double Euclidean_Metric(double&X_Data_Base[][v_dim_x], double Vector[v_dim_x],int num_v)

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

 

При тестировании файлы не появляются, а в Журнале пишет ошибку: 2009.01.29 21:40:46 2008.12.30 23:15 Stat_Euclidean_Metric EURUSD,M15: ArrayInitialize function internal error

Что делать?


 

В целом понравился этот советник, неплохая идея. Однако хочется обратить внимание на несколько неточностей в коде:

1. В функции инициализации init() закрытие файлов FileClose() выполняется вне зависимости от условия условия (!Base), что приводит к ошибке при запуске советника с условием Base = true. Необходимо внести внутрь операторных скобок if.

2. В функции деинициализации deinit() напротив отсутствуют функции FileClose(), возможно некорректное закрытие и сохранение файлов базы.

3. При варьировании таймфреймов и входных индикаторов системы у меня периодически ломалась запись файлов - функция deinit() выключалась при делении на ноль.

Необходимо предохраняться от этого, например, вместо

iMA(Symbol(),Period(),89,0,0,5,1)/iMA(Symbol(),Period(),144,0,0,5,1);

писать

iMA(Symbol(),Period(),89,0,0,5,1)/(0.0000001 + iMA(Symbol(),Period(),144,0,0,5,1));


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

Также, полезным мне кажется использование не жестких sl и tp, а, например, брать их пропорциональными средней волатильности. Т.е. sl = k1 * v, tp = k2 * v, где v - средняя волатильность, а k1 и k2 - внешние параметры.

Отмечу, что у меня форвард-тесты не очень хорошие получились. Буду пробовать классифицировать по другим критериям.

EvgeTrofi

Скорее всего, вы пытаетесь запустить советника с условием Base == false, при отсутствии файлов баз, а поскольку файлов нет, то происходит попытка инициализации массива нулевого размера, что вызывает ошибку ArrayInittalize.

Сделайте базы, прогнав советника в тестере при условии Base == true. Также см. п.3. моего сообщения.


Спасибо автору за хорошего эксперта, пригодится!

 

Thank u for sharing this EA

I need to know How dose the pro-win calculate in backtest?

Dose it calculate by last 10 orders or it calculate by all orders stored?

Thanks

 
Digital1:

Thank u for sharing this EA

I need to know How dose the pro-win calculate in backtest?

Dose it calculate by last 10 orders or it calculate by all orders stored?

Thanks

Hi!



The calculation is carried out on all available sample, for this purpose in the program there is a special function "Euclidean_Metric", which makes all these calculations.



For normal job of this system it is necessary that the sample was not chaotic that there were no erroneous accounts. If in sample there will be many vectors which are very close on the diagram, it will cause increase of a mistake at account.



It is desirable for formation of sample to use a history of trade not machines and man, that is by results of manual trade the ideal balance of accuracy and quality of signals will be achieved.

 
BorisMQL4:
Digital1:

Thank u for sharing this EA

I need to know How dose the pro-win calculate in backtest?

Dose it calculate by last 10 orders or it calculate by all orders stored?

Thanks

Hi!



The calculation is carried out on all available sample, for this purpose in the program there is a special function "Euclidean_Metric", which makes all these calculations.



For normal job of this system it is necessary that the sample was not chaotic that there were no erroneous accounts. If in sample there will be many vectors which are very close on the diagram, it will cause increase of a mistake at account.



It is desirable for formation of sample to use a history of trade not machines and man, that is by results of manual trade the ideal balance of accuracy and quality of signals will be achieved.


Thanks

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