[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 10

 
И еще вопрос связанный с работой библиотеки.
Создал файл библиотеки, откомпилировал, все прошло без ошибок.
Импортировал функцию в код индикатора, откомпилировал, все тоже нормально.
При запуске индикатора импортируемая функция не выполнилась, при использовании

этой функции из кода самого индикатора все работает. Вот код библиотеки.

//+------------------------------------------------------------------+
//|                                                         lib1.mq4 |
//|                                         Copyright © 2012, Fox.RM |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Fox.RM"
#property link      "http://www.metaquotes.net"
#property library
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<=20;i++)
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//+------------------------------------------------------------------+

Это вызов в коде индикатора:

#import "lib1.ex4"
    double Sredn(double& ArrSr[]);
    void SetText(string name, string name2, string text, string text2, color c, 
int size);
#import

 
Fox_RM:
Доброго всем дня!
Решил переделать код своего индикатора под эксперта чтобы отследить
отработку его сигналов.
При компиляции ошибок 0. В тестере прогоняет тоже без ошибок, но ни

одной сделки, в чем ошибка?

З.Ы. Уверен, что ошибок много и глупых, просьба расстреливать холостыми.

int counted_bars=IndicatorCounted(); 

вы же сами пишете, что у вас эксперт, а функция для индикатора.

Считайте принудительно нужное вам количество баров и не более.


ВО-вторых добавьте проверку, что по данному сигналу уже было открытие, а то получите каждый тик новый ордер

В-третьих посмотрите функцию iCustom

 
ilunga:

вы же сами пишете, что у вас эксперт, а функция для индикатора.

Считайте принудительно нужное вам количество баров и не более.

А каким образом принудительно считать?
 
Fox_RM:
Доброго всем дня!
Решил переделать код своего индикатора под эксперта чтобы отследить
отработку его сигналов.
При компиляции ошибок 0. В тестере прогоняет тоже без ошибок, но ни

одной сделки, в чем ошибка?

З.Ы. Уверен, что ошибок много и глупых, просьба расстреливать холостыми.


Цена открытия
if (Sredn(TP_UP)>=2.5)OrderSend(Symbol(),OP_SELL,0.1,Close[i],2,50,20);
 if (Sredn(TP_DN)>=2.0)OrderSend(Symbol(),OP_BUY,0.1,Close[i],2,50,20);
 
Fox_RM:
А каким образом принудительно считать?
Вам для эксперта и открытия сделок важен только сигнал на 0-м баре, не так ли? Вот и урежьте цикл расчета с limit баров до необходимого для этого расчета числа
 
r772ra:

Цена открытия

Т.е. использовать это условие для пересчета баров?

Но у меня в индикаторе на каждом тике рассчитываются массивы TP_UP и TP_DN. Соответственно первостепенно нужно их рассчитать.

 
ilunga:
Вам для эксперта и открытия сделок важен только сигнал на 0-м баре, не так ли? Вот и урежьте цикл расчета с limit баров до необходимого для этого расчета числа

Я там пытался открывать ордера на новом баре используя функцию NewBar(). Если ее использовать для этого?

К примеру if(NewBar())i++; Как-то так.

 
ilunga:
Вам для эксперта и открытия сделок важен только сигнал на 0-м баре, не так ли? Вот и урежьте цикл расчета с limit баров до необходимого для этого расчета числа
И все равно не совсем понимаю в чем принципиальная разница в двух этих расчетах для эксперта;(
 
Fox_RM:
И еще вопрос связанный с работой библиотеки.
Создал файл библиотеки, откомпилировал, все прошло без ошибок.
Импортировал функцию в код индикатора, откомпилировал, все тоже нормально.
При запуске индикатора импортируемая функция не выполнилась, при использовании

этой функции из кода самого индикатора все работает. Вот код библиотеки.

Это вызов в коде индикатора:

Может не корректно массив подготовили в init() индикатора? Правильно я Вас понял - там не сработала импортируемая функция?
 
TarasBY:
Может не корректно массив подготовили в init() индикатора? Правильно я Вас понял - там не сработала импортируемая функция?
Совершенно верно. Я перепроверял, вроде все корректно. И к тому же почему при использовании в самой программе все корректно работает.
Причина обращения: