Самообучение языку MQL5 с полного нуля - страница 81

 
Alexey Viktorov #:

Очень надеюсь, что это писали не вы…

Вот рабочая функция

Достаточно только вписать размер риска, чтобы считать не от полной свободной маржи…

Спасибо, Алексей, за отклик! Расчёт лота в моём варианте работает, а не работает только та часть кода, где прописан массив.

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

Как использовать Ваш код для мультивалютного советника, честно говоря, пока не совсем понимаю.

С уважением, Владимир.

 
MrBrooklin #:

Спасибо, Алексей, за отклик! Расчёт лота в моём варианте работает, а не работает только та часть кода, где прописан массив.

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

Как использовать Ваш код для мультивалютного советника, честно говоря, пока не совсем понимаю.

С уважением, Владимир.

Очень просто. Я не думал, что после всего чему вы научились у вас в этом могут возникнуть трудности…

/********************************************************************\
|   Calculate optimal lot size     Расчет объема лота                |
/********************************************************************/
//double contractSize(double Lot)
double contractSize(string symbol, double risk)
 {
//  double volume = Lot > 0.0 ? Lot : AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,
  double volume = AccountInfoDouble(ACCOUNT_MARGIN_FREE)*risk/10000,
         v = volume,
         volumeStep = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP),
         minLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN),
         maxLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
  v = round(volume/volumeStep)*volumeStep;
  return(fmin(maxLot, fmax(minLot, v)));
 }/******************************************************************/

И вызывается функция

double lot = contractSize(symbol[Number], Risk[Number]);
 
Alexey Viktorov #:

Очень просто. Я не думал, что после всего чему вы научились у вас в этом могут возникнуть трудности…

И вызывается функция

Ещё раз спасибо, Алексей! Вечером попробую применить в своём советнике.

С массивами только начинаю знакомиться, отсюда и трудности. До настоящего времени не было надобности ими пользоваться, а сейчас уже понимаю, что это сильный пробел, который придётся восполнить в ближайшее время. Начал изучать статью Дмитрия Федосеева, но пока в ней много чего не понятного. Нужно время для усвоения материала.

С уважением, Владимир.

 
SanAlex #:

вот что то я нахимичил

Может сначала нужно понять суть вопроса
 
SanAlex #:

что то - по всякому перепробовал код - вот так, вроде работает.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

сейчас начнётся - опять портянку выложил.

Саша, и такие коды пишете на заказ во фрилансе? Я всегда удивлялся как вы пишете коды по 2 и более ТЫСЯЧ строк. А вот теперь начинаю понимать… Посчитай количество строк моего кода и твоего… А проверка максимального спреда, это вообще нонсенс… Куда проще использовать

  MqlTick tick;
    if(!SymbolInfoTick(posSymbol, tick))
      return;
    if(tick.ask-tick.bid > inpSpred)
      return;

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

  MqlTick tick;
    if(!SymbolInfoTick(posSymbol, tick) || tick.ask-tick.bid > inpSpred)
      return;
 
SanAlex #:

этот код взят из терминала 

Продолжайте в том-же духе.
 
SanAlex #:

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

\\\\\\\\\\\\\\\\\\\\

а так же, смотрю и Ваши коды и в кодобазе. Учусь - теоретически не умею - легче самому скопать, чем объяснить - как надо копать.

Это и так понятно, что ты можешь только копать. Зачем коды то сюда выкладывать
 
SanAlex #:

для того - что бы тебя повеселить.

кому ещё будешь свои умные вопросы задавать?

Не зря тебе десять лет дали, не зря
 
SanAlex #:

бросай свой финский залив и к нам к чёрному морю  

Я в Калининграде вообще-то
 
SanAlex #:

бросай свой финский залив и к нам к чёрному морю  

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