Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 365

 
Sepulca:
А если пункты рассчитать, не путайте их с поинтами. Скажем double СПРЭД=Ask-Bid поинтов, или пусть даже double СПРЭД=(Ask-Bid)/Point пунктов.


Просто проблема на ровном месте как мне кажется)) OrderOpenPrice() это дабл, но что б увидеть реальную цену открытия я должен из нее сделать стринг?))

а что бы произвести вычитание или сложение опять надо делать дабл из стринга, ну не бред а? или я чего то не понимаю)

 
vadynik:


Просто проблема на ровном месте как мне кажется)) OrderOpenPrice() это дабл, но что б увидеть реальную цену открытия я должен из нее сделать стринг?))

а что бы произвести вычитание или сложение опять надо делать дабл из стринга, ну не бред а? или я чего то не понимаю)


Нет, Вынимая значение OrderOpenPrice(), нет необходимости его даже нормализовать, но чтобы распечатать нужно задать необходимую точность. У многих ДЦ double переменные по умолчанию выводятся в лог только с четырьмя знаками после запятой, хотя даже если при открытии ордеров они используют пять знаков после запятой..
 
vadynik:


Просто проблема на ровном месте как мне кажется)) OrderOpenPrice() это дабл, но что б увидеть реальную цену открытия я должен из нее сделать стринг?))

а что бы произвести вычитание или сложение опять надо делать дабл из стринга, ну не бред а? или я чего то не понимаю)


Хотя да))) это наверное исторически сложилось))) Чтобы увидеть пятизнаковую цену открытия, Вы должны сделать из неё стринг(((

Как правило, double значения по умолчанию выводятся только с четырьмя знаками после запятой. поэтому придётся переводить их в стринг.....(((((

 

Подскажите пожалуйста какой нибудь проверенный конструктор экспертов на MQL4 и 5, а то времени совсем мало, иногда надо проверить одну мысль или помочь кому, на конец создать основу для робота и дописывать уже самому...

Буду благодарен, за ранее спасибо!!!=)

 
Ekburg:

Подскажите пожалуйста какой нибудь проверенный конструктор экспертов на MQL4 и 5, а то времени совсем мало, иногда надо проверить одну мысль или помочь кому, на конец создать основу для робота и дописывать уже самому...

Буду благодарен, за ранее спасибо!!!=)

Чем это не конструктор? Берёшь "кубики" и строишь ;)
 
Sepulca:


Хотя да))) это наверное исторически сложилось))) Чтобы увидеть пятизнаковую цену открытия, Вы должны сделать из неё стринг(((

Как правило, double значения по умолчанию выводятся только с четырьмя знаками после запятой. поэтому придётся переводить их в стринг.....(((((


Почему нормализация не работает на OrderOpenPrice() ?
 
evillive:
Чем это не конструктор? Берёшь "кубики" и строишь ;)


Очень полезно, спасибо, буду пользоваться, но не то)) Надо именно конструктор, я знаю один хороший, но он на английском языке и делает эксперты на другом языке..)
 
Sepulca:


Хотя да))) это наверное исторически сложилось))) Чтобы увидеть пятизнаковую цену открытия, Вы должны сделать из неё стринг(((

Как правило, double значения по умолчанию выводятся только с четырьмя знаками после запятой. поэтому придётся переводить их в стринг.....(((((

Да о чём вообще буча-то? В любом случае при выводе на печать вы всё выводимое переводите в трусы стринги. Даже если просто double ЦЕНА=Ask; Print(ЦЕНА); автоматически ЦЕНА будет наряжена в стринги, а уже потом выведена. С помощью DoubleToStr() вы просто указываете размер трусов с какой точностью выводить дабл в стринги обутый.
 

Чота туплю...

Скрипт

int start()
{

 for(int i=OrdersTotal()-1;i<=0;i--)
 {
    if(OrderSelect(i, SELECT_BY_POS)==true) 
      {
            Print("Normalized OOP order#", OrderTicket()," is ",NormalizeDouble(OrderOpenPrice(),5)); 
            Print("doubletostr OOP order#", OrderTicket()," is ",DoubleToStr(OrderOpenPrice(),5)); 
            Print("Symbol of order#",OrderTicket() ," is ",OrderSymbol()); 
            Print("Volume of order#",OrderTicket() ," is ",OrderLots()); 
      }
      else Print("OrderSelect() error - ",GetLastError());

 }
   return(0);
}

Ничего не выводит в журнале, рыночных позиций две, на евродол. и йенодол.

 
evillive:

Чота туплю...

Скрипт

Ничего не выводит в журнале, рыночных позиций две, на евродол. и йенодол.


У Вас ошибка в задании цикла, он изначально не верен и поэтому его тело не выполняется и Вы не видите принты

int start()
  {
  for(int i=OrdersTotal()-1;i>=0;i--)
     {
     if(OrderSelect(i, SELECT_BY_POS)==true) 
        {
            Print("Normalized OOP order#", OrderTicket()," is ",NormalizeDouble(OrderOpenPrice(),5)); 
            Print("doubletostr OOP order#", OrderTicket()," is ",DoubleToStr(OrderOpenPrice(),5)); 
            Print("Symbol of order#",OrderTicket() ," is ",OrderSymbol()); 
            Print("Volume of order#",OrderTicket() ," is ",OrderLots()); 
        }
     else Print("OrderSelect() error - ",GetLastError());
     }
   return(0);
   }

Вот так будет верно

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