Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ищешь единомышленников? На форуме их много!
Mike Kharkov
846
Mike Kharkov 2014.08.01 01:18 
Всем привет.

Есть такой код:

// ---- функция подсчета значения стартового лота. ------------------------------+

       double function_trade_lot(double account_balance ){
       double lot = 0;
          
          if(account_balance >= 10000 && account_balance < 15000){
             lot = 0.02;
          }
          else if(account_balance >= 15000 && account_balance < 20000){
             lot = 0.03;
          }
          else if(account_balance >= 20000 && account_balance < 25000){
             lot = 0.04;
          }
          else if(account_balance >= 25000 && account_balance < 30000){
             lot = 0.05;
          }
          else if(account_balance >= 30000 && account_balance < 35000){
             lot = 0.06;
          }
          else if(account_balance >= 35000 && account_balance < 40000){
             lot = 0.07;
          }
          else if(account_balance >= 40000 && account_balance < 45000){
             lot = 0.08;
          }
          else if(account_balance >= 45000 && account_balance < 50000){
             lot = 0.09;
          }
          else if(account_balance >= 50000 && account_balance < 55000){
             lot = 0.10;
          }
          else if(account_balance >= 55000 && account_balance < 60000){
             lot = 0.11;
          }
          else if(account_balance >= 60000 && account_balance < 65000){
             lot = 0.12;
          }
          else if(account_balance >= 65000 && account_balance < 70000){
             lot = 0.13;
          }
          else if(account_balance >= 70000 && account_balance < 75000){
             lot = 0.14;
          }
          else if(account_balance >= 75000 && account_balance < 80000){
             lot = 0.15;
          }
          else if(account_balance >= 80000 && account_balance < 85000){
             lot = 0.16;
          }
          else if(account_balance >= 85000 && account_balance < 90000){
             lot = 0.17;
          }
          else if(account_balance >= 90000 && account_balance < 95000){
             lot = 0.18;
          }
          else if(account_balance >= 95000 && account_balance < 100000){
             lot = 0.19;
          }
          else if(account_balance >= 100000 && account_balance < 105000){
             lot = 0.20;
          }

          else{
             lot = 0.01;
          }
          
    return(lot);
  
  };//---------------------------------------------------------------------------+
Не подскажите, какие есть варианты(приемы программирования), что бы не писать в такой ужасном стиле, а оформить всё по человечески? )
P.S. В программировании я новичёк - но пытаюсь пока, что писать своими силами +-
(+ c помощью форумов.)

Если кто подскажет книжку какую для мега чайников(чисто по приемам программирования и что бы ничего лишнего больше.) - буду очень признателен. )
Alexey Navoykov
3979
Alexey Navoykov 2014.08.01 01:31  
По С/С++ полно книжек для чайников, в инете нетрудно найти. Там лишнего ничего и не будет, если оно для чайников :)
Aliaksandr Yemialyanau
3461
Aliaksandr Yemialyanau 2014.08.01 03:53  

Я бы попробовал так:

lot=account_balance/5000;
lot=(int)lot;
lot=lot/100;

PS

Перед отправкой торгового запроса нормализуйте значение объёма, StopLoss, TakeProfit с помощью NormalizeDouble

Andrew Petras
4658
Andrew Petras 2014.08.01 04:12  
Mike_Kharkov:
...
Если кто подскажет книжку какую для мега чайников(чисто по приемам программирования и что бы ничего лишнего больше.) - буду очень признателен. )
Dmitry Fedoseev
42636
Dmitry Fedoseev 2014.08.01 05:04  
Mike_Kharkov:
Всем привет.

Есть такой код:

Не подскажите, какие есть варианты(приемы программирования), что бы не писать в такой ужасном стиле, а оформить всё по человечески? )
P.S. В программировании я новичёк - но пытаюсь пока, что писать своими силами +-
(+ c помощью форумов.)

Если кто подскажет книжку какую для мега чайников(чисто по приемам программирования и что бы ничего лишнего больше.) - буду очень признателен. )
Найти закономерность, вывести формулу. 
Dmitry Fedoseev
42636
Dmitry Fedoseev 2014.08.01 05:14  
NormalizeDouble(0.01+MathMax(MathFloor((account_balance-10000)/5000),0)*0.01,2)
Sergey Gridnev
4907
Sergey Gridnev 2014.08.01 06:17  
Mike_Kharkov:
Всем привет.

Есть такой код:

Не подскажите, какие есть варианты(приемы программирования), что бы не писать в такой ужасном стиле, а оформить всё по человечески? )
P.S. В программировании я новичёк - но пытаюсь пока, что писать своими силами +-
(+ c помощью форумов.)

Если кто подскажет книжку какую для мега чайников(чисто по приемам программирования и что бы ничего лишнего больше.) - буду очень признателен. )

В "менее ужасном стиле" будет так:

// ---- функция подсчета значения стартового лота. ------------------------------+

       double function_trade_lot(double account_balance ){
       double lot = 0.1;
          
          if(account_balance >= 10000 && account_balance < 15000)
             lot = 0.02;
          else if(account_balance < 20000)
             lot = 0.03;
          else if(account_balance < 25000)
             lot = 0.04;
          else if(account_balance < 30000)
             lot = 0.05;
          else if(account_balance < 35000)
             lot = 0.06;
          else if(account_balance < 40000)
             lot = 0.07;
          else if(account_balance < 45000)
             lot = 0.08;
          else if(account_balance < 50000)
             lot = 0.09;
          else if(account_balance < 55000)
             lot = 0.10;
          else if(account_balance < 60000)
             lot = 0.11;
          else if(account_balance < 65000)
             lot = 0.12;
          else if(account_balance < 70000)
             lot = 0.13;
          else if(account_balance < 75000)
             lot = 0.14;
          else if(account_balance < 80000)
             lot = 0.15;
          else if(account_balance < 85000)
             lot = 0.16;
          else if(account_balance < 90000)
             lot = 0.17;
          else if(account_balance < 95000)
             lot = 0.18;
          else if(account_balance < 100000)
             lot = 0.19;
          else if(account_balance < 105000)
             lot = 0.20;

          
    return(lot);
  
  };//---------------------------------------------------------------------------+
Sergey Gridnev
4907
Sergey Gridnev 2014.08.01 06:17  
Integer:

MathMin 

Dmitry Fedoseev
42636
Dmitry Fedoseev 2014.08.01 06:32  
Contender:

MathMin 

А если подумать? Попробуйте, я в вас верю.
Sergey Gridnev
4907
Sergey Gridnev 2014.08.01 07:05  
Integer:
А если подумать? Попробуйте, я в вас верю.

 

Я другое недосмотрел.

Надо не только снизу ограничивать, но и сверху.

NormalizeDouble(0.01+MathMin(MathMax(MathFloor((account_balance-10000)/5000),0),19)*0.01,2)
Dmitry Fedoseev
42636
Dmitry Fedoseev 2014.08.01 07:12  
Contender:

 

Я другое недосмотрел.

Надо не только снизу ограничивать, но и сверху.

Неужели не очевидно, что вот это ограничение в 19 шагов связано только с тем, что программисту было лень писать больше вариантов, даже скорее с тем, что в таком стиле писать их больше просто глупо. Сверху ограничивать надо максимальным лотом брокера, но это в другом месте. 
/ /1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий