Ошибки, баги, вопросы - страница 2448

 

ребят, помогите, плиз)

создал панель и кнопку в ней, но что-то не так, кнопка смещается по одной из осей сверху, но следует за панелью.

то есть, нужно либо сделать правильную отвязку от углов привязки или же не хватает правильной команды для привязки кнопки к панели...

 

Да что ж за программа такая, что при ее использовании одни маты?!

Ну куда не глянь, все через запасное колесо!

Решил скачать МТ5 и попробовать создать свой символ (такая функция заявлена)... Блин, взял CSV фьючерса и решил подтянуть... Это рукожопное творение почему-то в CLOSE сует объем, на что в итоге само и ругается: цена закрытия больше high. Как этому ПО можно объяснить, что это колонка объема, коли нет ни кнопок, ни выбора полей! Как можно было не предусмотреть элементарное в функции импорта CSV?

 
xaser:

Да что ж за программа такая, что при ее использовании одни маты?!

Ну куда не глянь, все через запасное колесо!

Решил скачать МТ5 и попробовать создать свой символ (такая функция заявлена)... Блин, взял CSV фьючерса и решил подтянуть... Это рукожопное творение почему-то в CLOSE сует объем, на что в итоге само и ругается: цена закрытия больше high. Как этому ПО можно объяснить, что это колонка объема, коли нет ни кнопок, ни выбора полей! Как можно было не предусмотреть элементарное в функции импорта CSV?

У Вас в коде несколько ошибок

Зачем же на зеркало пенять...


 

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

что-то не получается. или может нужно отдельно через Void или другую команду это делать?


         
         if (id==CHARTEVENT_OBJECT_CLICK) {
       
         if (sparam=="buttonbuy") {
          OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, "Opened by Advisor", 0, 0, clrBlue); //add your buy order here
         } 
         if (sparam=="buttonsell") {
               OrderSend(Symbol(), OP_SELL, lots, Bid, 3, 0, 0, "Opened by Advisor", 0, 0, clrYellow); //add your sell order here
         }
         if (sparam=="buttoncloseall") {
            
                         
         }                                                                    
      }

  }
 

Сделайте пожалуйста возможность присваивать псевдонимы для каждого счета в терминале, что бы вместо сухих цифр номеров счетов можно было давать человеческие названия, которые бы и в шапке терминала высвечивались, например:

"Мой любимы счет"

"Инвесторский счет Трампа"

"Ацкий мартин"

"Тут я просто прикалываюсь"

"Сигнал за который не стыдно"

"Сигнал за который стыдно"


И тогда в множестве запущенных терминалах и счетах не запутаешься.

Псевдонимы вместо номеров счетов

 
fxsaber:

Самое элементарное - дать хэш самого себя. Путь на самого себя дается. Хэш - по какой-то причине зажимается.

Кстати поддерживаю, это действительно полезная вещь.  Мне тоже часто требуется контроль версий сохраняемых результатов в файлах, т.е. гарантия того, что все файлы созданы одной версией программы.  Сейчас для этого приходится брать либо время компиляции, либо некий номер версии, задаваемый вручную (а значит не гарантирующий идентичности).   Например в каком-то инклуднике где-то что-то поменял - значит уже де-факто новая версия исполняемого файла, и нужно не забыть проставить новый номер версии, в общем крайне не надёжно.

Кто-то тут советовал, мол посчитайте хэш от исходников.  Так для этого нужно знать все исходники (инклудники), используемые программой, а значит нужно парсить код не по детски.  Они ж необязательно заданы в явном виде (#include <file.mqh>),  а могут быть заданы в виде макросов.

 
Alexey Navoykov:

Кто-то тут советовал, мол посчитайте хэш от исходников.  Так для этого нужно знать все исходники (инклудники), используемые программой, а значит нужно парсить код не по детски.  Они ж необязательно заданы в явном виде (#include <file.mqh>),  а могут быть заданы в виде макросов.

Ну, если что-то зависит от макросов, то для изменения результата должны измениться макросы, то есть исходники. Чтение всех зависимостей по include-ам я приводил в статье. Там, кстати говоря, комментарии выкусываются, так что остается голый код.

#property script_show_inputs

input string SourceFile = "filename.txt";
input string IncludesFolder = "";
input bool LoadIncludes = false;

void OnStart()
{
  Preprocessor loader(SourceFile, IncludesFolder, LoadIncludes);
  
  if(!loader.run())
  {
    Print("Loader failed");
    return;
  }

  // output entire data as it is assembled from one or many files
  int handle = FileOpen("dump.txt", FILE_WRITE | FILE_TXT | FILE_ANSI, 0, CP_UTF8);
  FileWriteString(handle, loader.text().get());
  FileClose(handle);
}
Но, я согласен, что удобнее всё иметь в самом редакторе, а не мастерить вручную.
 
Stanislav Korotky:

Ну, если что-то зависит от макросов, то для изменения результата должны измениться макросы, то есть исходники. Чтение всех зависимостей по include-ам я приводил в статье. Там, кстати говоря, комментарии выкусываются, так что остается голый код.

О, спасибо, я даже я не в курсе был о таком.  Правда у вас там именно и сказано о спотыканиях об макросы.  Впрочем будем проверять конечно.

Вы продолжаете развивать этот проект?  Так то потенциал действительно огромный, особенно в плане доработки языка своими силами, ибо многое в MQL так и не реализовано, а многое работает через пень-колоду (баги), и разработчики, как я понял, больше не планируют ничего улучшать в самом языке.

 
В классе CCanvas методы FontGet, TextWidth, TextHeight и TextSize почему-то объявлены неконстантными, хотя они никаких изменений с классом не производят. Работают чисто на получение данных.
 

Что-то не пойму, для графического элемента "Кнопка" нельзя задать свойство наподобие Enabled=false, чтобы кнопка стала недоступной для нажатия?

Т.е. пользователь изначально нажал кнопку, запустился некий процесс работы, при этом кнопка должна оставаться в нажатом положении, не реагируя на последующие нажатия.  Можно ли так сделать?

p.s. Нашёл. Приоритет для объекта выставить отрицательный.