Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1010

 
Maxim Kuznetsov:

при открытии ордера пишите ему в коммент номер правила/переменной по которому его открываете.

потом когда будете рыть историю - вытаскиваете этот номер, добавляете к нему 1 и получаете новый номер правила

Спасибо! Хороший способ. Попробую

 
Igor Makanu:

Поэкспериментируйте с таким кодом, возможно это Вам нужно

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.7 ---> 0.7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.6 ---> 0.7

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.5 ---> 0.6

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.4 ---> 0.5

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.3 ---> 0.4

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.2 ---> 0.3

2019.11.28 22:31:26.409 tst EURUSD,H1: 0.1 ---> 0.2

в мою функцию GetNextLot() будете подавать обьем последнего закрытого ордера, а она будет возвращать следующее значение настройки Lot_XX

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

Спасибо!!

 
Corvin85:

Спасибо!!

пожалуйста

если расчет лота у Вас вообще произвольный, можно попробовать в моем примере заменить if на switch-case 

 
Я хочу открыть 2 терминала МТ4 и с них подключаться к одному советнику, т.е. программа одна будет установлена в один терминала а второй тоже сможет находить советника, очень тяжело компилировать программу и каждый раз бросать файл туда и туда. Можно ли такое сделать?
 

Как лучше написать алгоритм?


Задача: 

Один советник запускается на разных графиках.

Нужно чтоб в отдельный файл писалась по минутам информация о счете про Баланс, эквити и т.д.


Сейчас получается, что все советники в один файл пишут всю инфу. В итоге, получается много лишних записей. 


Какое можно придумать оригинальное решение, чтоб в файл записи делал только один бот. (А если его например удалили, то записи начинал делать другой бот и т.д.)

 
Seric29:
Я хочу открыть 2 терминала МТ4 и с них подключаться к одному советнику, т.е. программа одна будет установлена в один терминала а второй тоже сможет находить советника, очень тяжело компилировать программу и каждый раз бросать файл туда и туда. Можно ли такое сделать?

Так нельзя. 

Поищите программу для винды, которая синхронизирует данные в папках. И настройте так, чтоб советник автоматом копировался в новый терминал

 
Sergey Likho:

Как лучше написать алгоритм?


Задача: 

Один советник запускается на разных графиках.

Нужно чтоб в отдельный файл писалась по минутам информация о счете про Баланс, эквити и т.д.


Сейчас получается, что все советники в один файл пишут всю инфу. В итоге, получается много лишних записей. 


Какое можно придумать оригинальное решение, чтоб в файл записи делал только один бот. (А если его например удалили, то записи начинал делать другой бот и т.д.)

Можно попробовать через GV организовать взаимодействие.

Например: Запустил первый, он не находит GV и создаёт её с определённым именем. В качестве значения можно использовать ID графика. Запускаешь следующий советник, GV есть, не пишет. Удаляешь первый, он проверяет значение, если значение равно ID графика, то удаляет GV. Следующий видит, что GV отсутствует и создаёт со своим значением.

Таким образом удалить GV может только тот кто её создал или тот, кто всем этим руководит, в прямом смысле этого слова. Удаляет руками.

 

Здравствуйте, все. У меня глупый вопрос, просто экспериментировать немного не хочется. Есть индикатор, мне не нужно из него ничего выводить, но эксперт должен бырать из него данные. Каким свойствам правильнее инициализировать массивы?

INDICATOR_DATA или INDICATOR_CALCULATIONS?

Т.е. вопрос в общем в том, смогу ли я по номеру буфера из функции iCustom получить данные из буфера объявленного как SetIndexBuffer(N, BufferName, INDICATOR_CALCULATIONS);

 
Никита Парамонов:

Здравствуйте, все. У меня глупый вопрос, просто экспериментировать немного не хочется. Есть индикатор, мне не нужно из него ничего выводить, но эксперт должен бырать из него данные. Каким свойствам правильнее инициализировать массивы?

INDICATOR_DATA или INDICATOR_CALCULATIONS?

Т.е. вопрос в общем в том, смогу ли я по номеру буфера из функции iCustom получить данные из буфера объявленного как SetIndexBuffer(N, BufferName, INDICATOR_CALCULATIONS);

Возьмите стандартную МА, измените тип данных буфера, скомпилируйте и проверьте в окне данных терминала (Ctrl+D)

 

В глобальные переменные терминала записывается ChartID() с ошибкой. что за ерунда?


Попробуйте такой код:


   string GlobalVar1 = "GVAR";
   long ChID = ChartID();
   
   if(GlobalVariableSet(GlobalVar1,ChID) == 0)
      Print("Error GV", GetLastError());

   Print(GlobalVar1," id:",ChID, " GV_id:", (long)GlobalVariableGet(GlobalVar1));


//мой ответ 2019.11.29 13:30:39.292     test EURUSD,M5: GVAR id:132194970392300419 GV_id:132194970392300416

разница в конце в одну цифру
Причина обращения: