Страница 1 из 1

Как сравнить position.Price c данными из файла?

Добавлено: 05 сен 2021, 13:41
HO57G
Здравствуйте. Задался вопросом реализовать в индикаторе функцию оповещения, если текущая позиция по инструменту превысит заданное значение из файла (можно, конечно, прописать возможность вносить значение в индикатор при его установке, но мне важно, чтобы это было именно из файла). Со считыванием файла проблем, вроде как не возникает, но вот сравнить данные с position.Price не получается, компилятор выдаёт ошибки. Подскажите, пожалуйста, как это возможно реализовать?

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

...
var position = GetPosition(Input, Account);
   if (position.Position == 0)
      return;
   PP = position.Price;
...
string S = "";
string Path = "C:\\Position\\";
var Ticker =Input.VirtualSecurity.Split('=')[0];
string fileName = Ticker + ".txt";
var URL = Path + fileName;
var line1 = URL;
if (System.IO.File.Exists(URL))
{
   System.IO.StreamReader output = new System.IO.StreamReader(URL);
   {
      S = output.ReadLine();
      string[] Data = S.Split(' ');
      //PLim.Add(double.Parse(Data[0]));
      ...
      if (Data[0] < PP) // что здесь вообще должно быть?))
         {
          ShowMessage("Достигнут лимит");
         }
   }
}   

Также интересно понять, как использовать значение position.Price не только для сравнения, но и для вычислений, скажем чтобы найти, на сколько % position.Price превысил значение из файла

Re: Как сравнить position.Price c данными из файла?

Добавлено: 05 сен 2021, 17:33
HO57G
Реализовал это так

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

...
if  (double.Parse(Data[1]) < PP)
...

Но всё равно мне не понятно, как можно использовать значение position.Price в вычислениях (как разделить, например)

Re: Как сравнить position.Price c данными из файла?

Добавлено: 05 сен 2021, 17:39
BugsDigger
Вы пытаетесь сравнить строку с переменной PP типа double (декларации PP вы не привели, но если присваивание проходит, то будем считать, что double), что некорректно, и компилятор вам на это намекает.

Если считывается строка типа "123,45", то вы вначале должны сконвертировать ее в double, например, так:

double QQ=Convert.ToDouble(Data[0]);
if (QQ < PP)
{
...
}

Position.Price - обычная переменная типа double. арифметика с ней стандартная. Что конкретно вызывает проблему?

Re: Как сравнить position.Price c данными из файла?

Добавлено: 05 сен 2021, 17:57
HO57G
Спасибо за ответ.
Кажется я запутался в самом простом. Как, допустим, position.Price умножить на 2? :oops:

Re: Как сравнить position.Price c данными из файла?

Добавлено: 05 сен 2021, 18:08
BugsDigger
double t=position.Price*2;

Re: Как сравнить position.Price c данными из файла?

Добавлено: 05 сен 2021, 18:20
HO57G
В том то и дело, пытаюсь что-то похожее написать строчкой ниже, выдаёт ошибку: Внедрённый оператор не может быть объявлением или оператором с идентификатором в строке 87

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

...
if  (double.Parse(Data[1]) < PP)
double NewPrice = PP*5;
...

Re: Как сравнить position.Price c данными из файла?

Добавлено: 05 сен 2021, 18:25
HO57G
Всё, понял! 8-) Это всё из-за отсутствия скобочек {} :oops: