Общие вопросы по разработке > Не грузит посторонню либу.

Общие вопросы по разработке в Альфа-Директ 4. Обсуждение разработки пользовательских индикаторов, стратегий.
Worldmaster
Сообщения: 24
Зарегистрирован: 04 сен 2017, 13:30
Поблагодарили: 3 раза

Не грузит посторонню либу.

Непрочитанное сообщение Worldmaster » 24 авг 2021, 10:45

Здравствуйте.

Решил прикрутить в терминал свой индикатор. Сделал его на С++ через обертку на C#.
В студии все проверил и отладил работает как положено. А вот встроеный скрипт почему то не стартует.
По сути вопросов только два:

1. Каким образом создать глобальную переменную типа MethodInfo чтобы в коде не загружать постоянно библиотеку.
2. Каким образом вывести лог хоть какой нибудь. На ShowMessage ругается что функция не найдена. Терминал со всеми последними обновами.

Вот код на всякий случай.

Код: Выделить всё

function Initialize()
{
// Область определения параметров индикатора

// Обязательные параметры:
   IndicatorName = "Spline";   // Задайте название индикатора и сохраните с данным именем
   PriceStudy = true;   // Рисовать в области цены (true – да, false – нет)
   AddInput("Input", Inputs.Candle);   // Input - входной ряд (Inputs.Price) или свечи (Inputs.Candle)
   AddSeries("A", DrawAs.Line, Color.Red);   // Задаем вид линии индикатора A

// Дополнительные параметры:
    AddParameter("Period", 20);   // Задаем имя изменяемого параметра и его значение
    AddVariable("Z", 0);   // Задаем имя глобальной переменной и её значение

    }

function Evaluate()
{
   System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(@"..\Src\MathWrapper.dll");           
    Type cls = asm.GetType("MathWrapper.MathLibWrapper", false, true);
    System.Reflection.MethodInfo SplineData = cls.GetMethod("SplineData", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); 
   
   //public static double[] SplineData(double[] srcX, double[] srcY, double smoofFactor)
   
         
   var ln = 10;
   
   double[] xsrc = new double[ln];
   double[] ysrc = new double[ln];
   
   for(int i=0;i<xsrc.Length;i++)
   {
      xsrc[i] = i;
      ysrc[i] = Input.Close[0 - (xsrc.Length- i)];   
   }

// если строку вызова за коментировать то работает. Иначе нет и почему хз.
   ysrc = (double[])SplineData.Invoke(null, new object[]{xsrc ,ysrc ,1});

   for(int i=0;i<xsrc.Length;i++)
   {
      //A[0-(xsrc.Length- i)] = ysrc[i];
      A[0-(xsrc.Length- i)] = 300+i;
   }

}


Worldmaster
Сообщения: 24
Зарегистрирован: 04 сен 2017, 13:30
Поблагодарили: 3 раза

Re: Не грузит посторонню либу.

Непрочитанное сообщение Worldmaster » 24 авг 2021, 11:06

Работу наладил. Осталось только порешать как бы оптимизировать расчеты чтобы не тормозило. А то просто жуть как все висит.

Безымянный.png


Если кто подскажет как оптимизировать буду благодарен. ))


Вернуться в «Общие вопросы по разработке»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 19 гостей