Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Функия усреднения Помогите доработать.

Доброго времени суток!
Суть заключается в следующем.
extern double LOTS = 0;
Когда LOTS стоит на 0 сделки открываются от процента депозита
double LOT()
{
if (LOTS!=0) return(LOTS);
double LOT = NormalizeDouble(AccountBalance()*RiskPercent/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED),DigitsLot);
if (LOT>MAXLOT) LOT = MAXLOT;
if (LOT<MINLOT) LOT = MINLOT;
return(LOT);
}

Когда ставлю LOTS к примеру 0.01 То идет фиксированный лот
Хочу добавить в советник усреднение, но ни как не получается, при фиксированном лоте шаг усреднения идет, но не увеличивается лот при усреднении
if(Usred)
{
if(FindOrderType()==0 && (FindLastBuyPrice()-Ask)/_Point>=UStep)
{
PutOrder(0,Ask);
}

if(FindOrderType()==1 && (Bid-FindLastSellPrice())/_Point>=UStep)
{
PutOrder(1,Bid);
}
}
А при LOTS = 0 т.е Лот от процента баланса нет ни шага, ни усреднения.
Можно как то обьеденить LOT и Lot?
double Lot()
{
double lot=LOTS;
if(CountTrades()>0) lot=NormalizeDouble(LOTS*MathPow(KLot,CountTrades()),2);
if(lot>MaxLot)lot=LOTS;
return(lot);
}
Или быть может как то сделать это по другому?
Использую вот такой метод открытия ордеров
if (SendOrder(OP_SELLSTOP,LOT(),Price,0,0,TimeCurrent()+Period()*60*BarLife)) TimeOpen=iTime(NULL,TIMEFRAMES,0);
  • 0
  • Просмотров: 1562
  • 19 марта 2021, 18:01
  • rus008
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Торговая панель
Следующая запись в группе  
Доработка чужого советника
18 марта 2021
19 марта 2021

Брокер для ваших роботов, 15 лет на рынке

Комментарии (8)

+
0
это в какой сове копаешь, с этой площадки?
avatar

  14  verta81 Сообщений: 390

  • 19 марта 2021, 18:33
+
0
Некоторые функции тут на этом сайте нашел. А так сам сижу собираю сову
avatar

  6  rus008 Автор Сообщений: 46

  • 19 марта 2021, 18:59
+
0
а если так написать?

double LOT()
{
if(CountTrades()>0)
     {
      LOT=NormalizeDouble(LOT*MathPow(KLot,CountTrades()),2);
     }
if (LOTS!=0) return(LOTS);
double LOT = NormalizeDouble(AccountBalance()*RiskPercent/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED),DigitsLot);
if (LOT>MAXLOT) LOT = MAXLOT;
if (LOT<MINLOT) LOT = MINLOT;
return(LOT);
}
avatar

  14  verta81 Сообщений: 390

  • 19 марта 2021, 18:40
+
0
Нет этот вариант не подходит, ошибки выдает
avatar

  6  rus008 Автор Сообщений: 46

  • 19 марта 2021, 19:04
+
0
если не сделали поставлю на 25-е
avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 21 марта 2021, 13:18
+
0
Хорошо. Буду ждать.Спасибо
avatar

  6  rus008 Автор Сообщений: 46

  • 21 марта 2021, 16:11
+
0
набросал советник с нужной функцией: www.opentraders.ru/downloads/2967/

avatar

  35  AM2 Сообщений: 16256 - Андрей

  • 24 марта 2021, 21:12
+
0
Спасибо!!!
avatar

  6  rus008 Автор Сообщений: 46

  • 24 марта 2021, 22:46

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий