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

Рейтинг 2081



РЕКОМЕНДУЮ



Повышение объема лота на процент полученной прибыли

Доброе время суток!
Написать функцию которая увеличивалаб размер лота на процент от прибыли полученой за прошлый день, неделю или месяц.
Пример:
Начальный лот (вводиться пользователем): 0.1;
С этим лотом советник торгует день (неделю, месяц выбирается пользователем);
Прибыль за день составила 10% от количества средств на депозите;
На следующий день объем лота будет 0.11 (т.к. 10% от 0.1 будет 0.01)
и тому подобное…

Дополнение: процент прибыли округлять в меньшую сторону. т.е. если прибыль составила 19.9% то объем лота увеличивается на 10%
  • 0
  • Просмотров: 1464
  • 23 февраля 2017, 10:43
  • Kudryashov
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
повтор кажется :) 
avatar

  22  poker Сообщений: 801

  • 23 февраля 2017, 11:08
+
0
Да… прошу прощения… просто дописал думал просто вставиться в одну, а вуышло 2 записи*wall* 
avatar

  8  Kudryashov Автор Сообщений: 129

  • 23 февраля 2017, 12:03
+
0
Ну с чего в одну то вставится. Чтобы дописать, надо нажать редактировать, а не создавать новый топик

ЗЫ: дополнение сюда перенес, раз тут обсуждение возникло, второй топик удалил
Редактирован: 23 февраля 2017, 12:36
avatar

  45  Bishop Сообщений: 5719 - АЛЬФАХАМЕЦ-Машковод

  • 23 февраля 2017, 12:33
+
0
Хорошо. Спасибо!
Постараюсь в следующий раз быть внимательнее
avatar

  8  Kudryashov Автор Сообщений: 129

  • 23 февраля 2017, 12:49
+
0
С этим лотом советник торгует день (неделю, месяц выбирается пользователем)

В каком формате будете вводить дату?

Начал делать:

//+------------------------------------------------------------------+
//|                                                      DateLot.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

input string Date="12.01.2016";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetProfitFromDate(datetime date=0)
  {
   double profit=0;

   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderType()<2)
           {
            if(date<OrderCloseTime()) profit+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return(profit);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   Comment("\n Profit: ",GetProfitFromDate(StringToTime(Date)));
  }
//+------------------------------------------------------------------+

Редактирован: 23 февраля 2017, 22:26
avatar

  34  AM2 Сообщений: 15866 - Андрей

  • 23 февраля 2017, 21:57
+
0
Думаю лучше будет в виде количества дней: если пользователь поставит значение 1 то лот будет считаться каждай день, если 7 то каждую неделю, и т.д.
avatar

  8  Kudryashov Автор Сообщений: 129

  • 23 февраля 2017, 23:18
+
+1
И еще, для чего это нужно, не проще считать лот от баланса? Получится также примерно.
avatar

  34  AM2 Сообщений: 15866 - Андрей

  • 23 февраля 2017, 22:12
+
+1
Для автоматизации рутины. Я повышаю объем лота каждые 10-15 дней при условии что за это время есть прибыль.
Думаю такое не только я буду использовать.
Не спорю что также получиться, но расчет от баланса это более агрессивный метод.
avatar

  8  Kudryashov Автор Сообщений: 129

  • 23 февраля 2017, 23:26
+
0
Так примерно :) 



//+------------------------------------------------------------------+
//|                                                      DateLot.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

input int Days=15;
input double Lot=0.1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double DaysProfit(datetime date=0)
  {
   double profit=0;

   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderType()<2)
           {
            if(date<OrderCloseTime()) profit+=OrderProfit()+OrderCommission()+OrderSwap();
           }
        }
     }
   return(profit);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double dprofit=DaysProfit(TimeCurrent()-3600*24*Days);
   double pr=NormalizeDouble(dprofit*100/AccountBalance(),2);
   double lot=Lot+(pr*Lot)/100;

   Comment("\n Profit: ",dprofit,
           "\n Procent Profit: ",pr,
           "\n Lot: ",Lot,
           "\n New Lot: ",lot);
  }
//+------------------------------------------------------------------+
avatar

  34  AM2 Сообщений: 15866 - Андрей

  • 24 февраля 2017, 05:00
+
0
Спасибо!!!*drinks* 
avatar

  8  Kudryashov Автор Сообщений: 129

  • 24 февраля 2017, 08:44

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