Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer - страница 21

 
AlexeyVik:

А зачем писать что-то своё когда есть готовое?


Это имеет смысл, если нужно русифицировать входные параметры. Тогда можно объявить своё перечисление, сделать к нему русские комментарии, а потом при обращении к его членам делать приведение типа к "стандартному" перечислению. Если же русифицировать не нужно, тогда действительно незачем.
 
Spy:

Это имеет смысл, если нужно русифицировать входные параметры. Тогда можно объявить своё перечисление, сделать к нему русские комментарии, а потом при обращении к его членам делать приведение типа к "стандартному" перечислению. Если же русифицировать не нужно, тогда действительно незачем.
Да в данном-то случае и нет необходимости русифицировать и нет этого в примере Влада.
 
Я ему и показал в первом коде, что в его случае этого делать не нужно. ))
 
Ааа, я пропустил это сообщение... Маленько наверное ослеп...
 
Spy:

Предложение: добавить в функцию OnInit() аргумент, позволяющий различать причину её вызова: добавление советника на график, изменение параметров, перезапуск терминала, смена таймфрейма и т.д.

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

Проблема в том, что если пользователь установит входной параметр в "true", то при последующем запуске терминала с уже установленным на графике советником последний опять всё закроет, чего быть не должно. Если же функция OnInit() будет знать причину своего вызова, то проблема решается:

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


Несоответствие типов.

Ну, или так:

PS. А про последнюю запятую вам правильно сказали, она там просто не нужна.


спасибо дошло. :-)
AlexeyVik:

А зачем писать что-то своё когда есть готовое?

https://docs.mql4.com/ru/basis/variables/inputvariables

docs.mql4.com/ru/constants/indicatorconstants/prices


:-) ну вот я ж обходным путем пошел только потом узнал что уже есть?
вернее я подозревал что есть, ну и ладно.... СПАСИБО.
 

Иногда, чтобы какую-то задачу решить проще, проще написать собственную DLL, реализующую что-нибудь, либо индикатор. И такую DLL использовать в этих случаях предпочтительнее. Но чтобы передать "барные цены" в DLL всегда приходится объявлять массив, заполнять его "барными ценами" и этот массив только и можно передать в собственную DLL. А можно ли сделать так, чтобы в свою DLL уже сразу можно было пихнуть то, что нужно? В старой версии МТ4 были только Open, High, Low, Close. Теперь же такое многообразие...

Но на тек. момент всё ещё нельзя. Если сунуть с собственную библию, например, open, то получается следующее: 'open' - constant variable cannot be passed as reference

 
Хотелось бы предупреждений о глобальных неиспользуемых переменных так же, как и о локальных, а также какое-нибудь дополнительное #property, при наличии которого добавлялись бы предупреждения о неиспользуемых функциях.
 
Идея для МАркета притом бесплатно: играю не часто на реале так как чаше проигрываю, но вот уже последнее время на демо набрался опыта и теперь понимаю каким был зеленым и самонадеянным вначале. Теперь понял смысл рынка Форекса, но все еще боюсь играть по крупному, а хотел бы... и еще хотел бы взять хороший советник в Маркете соответственно на пробу сначала, но не на всю сумму, а частично или в кредит с последующим отчислением части выигрыша скажем 20 - 50% как договоришься. Вот я и предлагаю такой маркетинговый ход ввести в обиход)) Т,е. дать начинающим возможность работать в кредит или как бы сдавать желающим свои дорогие советники в аренду, тут получится обоюдная выгода: желающие могут пробовать любые понравившееся по описанию советники, а владельцы поднять цену за розницу раза в два( свои законные 2% поиметь), ну и Маркету тоже прибыль не малая ))) Согласитесь идея не плохая и многие меня наверняка поддержат. И еще большая просьба: как бы и тестер МТ4 заменили бы на МТ5. Уж больно 4 тупо выглядит после работы с тестером на 5. С большим уважением Спасибо
Причина обращения: