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

Рейтинг 2146



РЕКОМЕНДУЮ



Переворотный советник с плавающим лотом.

Добрый день.Прошу написать советник в котором происходит автоматическое изменение размера лота.
В свое время, на известном Вам сайте и известный Вам человек — Юрий Решетов, предложил в одном из своих советников следующий расчет лота при предыдущей убыточной позиции Лот= старт.лот(стоплосс+тейкпрофит)/стоплосс. При таком расчете происходит компенсацию средств от предыдущей сделки.
  • 0
  • Просмотров: 1167
  • 10 июля 2022, 09:52
  • ssg
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
<code>

extern double Lots        = 0.01;     // торговый объем ордера
extern ENUM_TIMEFRAMES tf = PERIOD_CURRENT;
extern int MA1Period      = 50;       // период МА1
extern int Shift          = 1;        // на каком баре сигнал индикатора
//+------------------------------------------------------------------+
.
.
.
.
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
    
    double ma1=iMA(NULL,tf,MA1Period,0,0,0,Shift);
    double cl1 = iClose(NULL,tf,1);
    double cl2 = iClose(NULL,tf,2);
    
    bool buy=cl1>ma1 && cl2>ma1;
    
    bool sell=cl1<ma1 && cl2<ma1;
    
    bool clbuy=cl1<ma2 && cl2>ma1;
    
    bool clsell=cl1>ma2 && cl2<ma1;
    
   if(clbuy)CloseAll(0);
   
   if(clsell)CloseAll(1);
   
   если предыдущая сделка была убыточная
   double lot = Lots*((последний убыток+последний профит)/последний убыток);//не важно или в валюте или в пунктах.
   
   if(CountTrades()<1)
     {
      if(buy)
        {
         PutOrder(0,Ask,lot);
        } 
                       
      if(sell)
        {
         PutOrder(1,Bid,lot);
        }
     }

  }
//+------------------------------------------------------------------+

</code>

примерно так.
Не фиксированный тейк и стоплосс, а те конкретные числа которые будут получатся в ходе торговли.И убыток и профит всегда будут разными.
Соотвественно и коэф-нт, на который нужно будет умножить лот, каждый раз будет разный.
Редактирован: 10 июля 2022, 10:00
avatar

  16  ssg Автор Сообщений: 817

  • 10 июля 2022, 09:54
+
0
лот большой может насчитать. на скрине видно: www.opentraders.ru/downloads/3355/

avatar

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

  • 10 июля 2022, 11:47
+
0
Андрей, спасибо за работу и оперативность.
Ни как не мог понять почему такой большой лот.По моим расчетам новый лот не мог быть более чем в 2 раза больше чем стартовый. А вообще в пределах 1.1-2.
Причем в 2 раза больше при условии, что убыток и профит равны.
Пока не посмотрел повнимательнее расчет лотов. Там оказалась небольшое, но существенное отличие от ТЗ.
Переписал функцию, добавив ещё и проверку деления на 0:


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderProfit()>0)
           {
            lot=Lots;
            break;
           }
         if(OrderProfit()<0)
           {
            if(LastLoss()!=0 && LastProfit()!=0)
              {
              if(LastLoss()>=LastProfit())lot=Lots*(LastLoss()+LastProfit())/LastLoss();
              if(LastLoss()<LastProfit())lot=Lots*(LastLoss()+LastProfit())/LastProfit();  
              if(lot>=1)lot=Lots;
              }
            break;
           }
        }
     }
   return(NormalizeDouble(lot,2));
  }
//+------------------------------------------------------------------+

Но конечно в лоб эта идея не работает.
Проверю наверное с добавлением стационарных или стоплосса или тейпрофита раздельно.
Сигнал на открытие позиции опираясь на Ма конечно был формальный.
avatar

  16  ssg Автор Сообщений: 817

  • 10 июля 2022, 13:50
+
+1
Я когда-то заказывал фрилансеру написать советник по главной идее:
Рискнули по индюку 1% дэпо- заработали до получения встречного сигнала.
Дальше уже рискуем заработанным и дальше при перевороте, пока в стоп не вляпаемся. Тогда считал за три подряд цикла разгон 32% при единичном риске.
Фрилансер распальцованный оказался. Одних только стрингов — не меряно.
Короче — полный тормоз. Отпустил с богом.
Так там у меня фиксированный SL. А ТР переворотнику вреден. Так что расчитывать нужно было только лот, что несомненно логичнее.
А на счет МА согласен — не канает. Индюк нужен с винрейтом выше 75%.
avatar

  7  kvashnin007 Сообщений: 598 - Андрей

  • 11 июля 2022, 23:22

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