Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1399

 

Здравствуйте.

Можно ли сохранить графический элемент как файл изображение (BMP или PNG)? Т.е. сначала создать объект, а потом сохранить как картинку.

 

Здравствуйте. Подскажите как сделать так, чтобы терминал стартовал без графиков, но с сервисами ?

Проблема у меня следующая: Работает порядка 100 советников. Закрываю терминал крестиком. Запускаю. И вот тут терминал не всегда запускается. Хотелось бы чтобы терминал запускался без графиков, но с сервисами.

 
pivomoe #:

Здравствуйте. Подскажите как сделать так, чтобы терминал стартовал без графиков, но с сервисами ?

Проблема у меня следующая: Работает порядка 100 советников. Закрываю терминал крестиком. Запускаю. И вот тут терминал не всегда запускается. Хотелось бы чтобы терминал запускался без графиков, но с сервисами.

set Terminal=C:\MetaTrader5

del /f /s /q %Terminal%\MQL5\Profiles\Charts\Default\*.*

TIMEOUT /T 30

start C:\MetaTrader5\terminal64.exe /portable

 

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

 
freemovpalm #:

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

Например, добавить переменную - счётчик убыточных сделок подряд. При каждой убыточной сделке - увеличивается на 1, при каждой прибыльной - сбрасывается в 0.

И уже от этого счётчика ставить лот (например - умножать минимальный лот на 2 в степени этого счётчика).

Но мартингейл не сделает убыточную стратегию прибыльной.

 
JRandomTrader #:

Например, добавить переменную - счётчик убыточных сделок подряд. При каждой убыточной сделке - увеличивается на 1, при каждой прибыльной - сбрасывается в 0.

И уже от этого счётчика ставить лот (например - умножать минимальный лот на 2 в степени этого счётчика).

Но мартингейл не сделает убыточную стратегию прибыльной.

Спасибо, у стратегии в среднем 2 и максимум подряд 4 убытка бывает, вот и захотел мартин. Кстати есть у кого-нить пример такого счетчика, или сова работающая по такому же принципу как я описал? Я мог бы просто оттуда скопировать нужные строки.

 
string Button_TP = "Panel.String1.Button3";

Print(ObjectGetInteger(0, "Panel.String1.Button3", OBJPROP_STATE));
Print(ObjectGetInteger(0, Button_TP, OBJPROP_STATE));

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

 

Как в тестере автоматизировать проход по нескольким парам?
Например, надо пройти по 20 парам. Сейчас перезапускаю тестер для каждой пары.
Не могу сообразить как сделать symbol переменной.

Есть какие то решения?

 
Evgeny Dyuka #:

Как в тестере автоматизировать проход по нескольким парам?
Например, надо пройти по 20 парам. Сейчас перезапускаю тестер для каждой пары.
Не могу сообразить как сделать symbol переменной.

Есть какие то решения?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Как получить выбранные пары для обзора рынка в тестере стратегий?

Alexey Viktorov, 2022.04.14 17:11

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

sinput  string  Symb  = "GBPUSD,GBPAUD,GBPCAD,GBPJPY,EURUSD,EURGBP,EURAUD,EURCAD,EURJPY,AUDUSD,AUDNZD,AUDCAD,AUDJPY,NZDUSD,NZDCAD,USDCAD,USDJPY"
string s_arr[];
int OnInit()
{
  int i = 0, symbPos = 0;
  if(StringSplit(Symb, ',', s_arr) <= 0)
   {
    Print(__FUNCTION__ + " Error converting !");
    return(INIT_FAILED);
   }
  while(symbPos >= 0  && !IsStopped())
   {
    if(!SymbolInfoInteger(s_arr[i], SYMBOL_SELECT) || !SymbolInfoInteger(s_arr[i], SYMBOL_VISIBLE))
      SymbolSelect(s_arr[i], true);
    double price = SymbolInfoDouble(s_arr[i], SYMBOL_ASK);
    i++;
   }
 return(INIT_SUCCEEDED);
}/*******************************************************************/

Надеюсь не наделал ошибок при вытаскивании кода из своей программы…


 
Evgeny Dyuka #:

Как в тестере автоматизировать проход по нескольким парам?
Например, надо пройти по 20 парам. Сейчас перезапускаю тестер для каждой пары.
Не могу сообразить как сделать symbol переменной.

Есть какие то решения?

Если сделать так, что пара будет определяться параметром советника, который может меняться при оптимизации, то, чтобы запустить проход по нескольким парам, просто запускаем оптимизацию по этому параметру.
Этот параметр нельзя сделать типа string, но можно сделать int или enum.
По этому параметру при инициализации советника мы присваиваем другой своей строковой переменной имя нужного символа, соответствующего значению параметра.
В коде советника придется всюду, где используется Symbol() или _Symbol заменить её на свою переменную с именем пары.

Принцип понятен или нужен пример кода?