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

 

Всем привет! :)

Постараюсь обозначить задачу... . Хочу, чтобы независимо от размера полученного стопа, убыток в деньгах был одинаковый. Без автоматического помощника это делается так: к примеру, мне нужно ограничить свой убыток в одной сделке до 3000 рублей. Когда я вижу сигнал на вход в рынок, то определяю цену, где будет стоять стоп. Затем на графике смотрю, сколько пунктов будет от точки входа до стопа и вычисляю (настроил табличку в Exel), сколько контрактов должно быть в сделке, чтобы при неблагоприятном исходе убыток составил 3000 рублей. То есть, будет стоп 20 пунктов, 70 или 100, количество контрактов для сделки подбирается таким образом, чтобы убыток был 3000 р.

Хочу не отвлекаться на расчеты и автоматизировать этот процесс. Было бы хорошо просто указать в настройках советника-помощника убыток на сделку в валюте депозита и чтобы на графике была панель, куда можно ввести цену стопа. Также на панели должны быть кнопки для покупки или продажи с маркета и лимитником. Соответственно, в настройках также должен указываться размер тейк профита.

То есть, указываем цену стопа, жмем на кнопку для совершения сделки и помощник автоматом считает, какой объем должен быть у сделки, чтобы возможный убыток не превысил 3000 р. и отправляет заявку в рынок.


Такая вот задача. Никто не встречал что-то похожее? Я не нашел.
 
Alexey Bogatkin:

Всем привет! :)

Постараюсь обозначить задачу... . Хочу, чтобы независимо от размера полученного стопа, убыток в деньгах был одинаковый. Без автоматического помощника это делается так: к примеру, мне нужно ограничить свой убыток в одной сделке до 3000 рублей. Когда я вижу сигнал на вход в рынок, то определяю цену, где будет стоять стоп. Затем на графике смотрю, сколько пунктов будет от точки входа до стопа и вычисляю (настроил табличку в Exel), сколько контрактов должно быть в сделке, чтобы при неблагоприятном исходе убыток составил 3000 рублей. То есть, будет стоп 20 пунктов, 70 или 100, количество контрактов для сделки подбирается таким образом, чтобы убыток был 3000 р.

Хочу не отвлекаться на расчеты и автоматизировать этот процесс. Было бы хорошо просто указать в настройках советника-помощника убыток на сделку в валюте депозита и чтобы на графике была панель, куда можно ввести цену стопа. Также на панели должны быть кнопки для покупки или продажи с маркета и лимитником. Соответственно, в настройках также должен указываться размер тейк профита.

То есть, указываем цену стопа, жмем на кнопку для совершения сделки и помощник автоматом считает, какой объем должен быть у сделки, чтобы возможный убыток не превысил 3000 р. и отправляет заявку в рынок.


Такая вот задача. Никто не встречал что-то похожее? Я не нашел.

Такое определение размера лота встраивается непосредственно в советник. Функция уже давно написана, но непосредственно в таком исполнении советника у меня нет и не встречал. Хотя и не интересовался.

 
Alexey Bogatkin:

 ограничить свой убыток в одной сделке до 3000 рублей. 


Такая вот задача. Никто не встречал что-то похожее? Я не нашел.

я чему немного научился - вот слепил .

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

//---
input double TargetLoss   = 0.00;      // Ваш Баланс - минус сумму убытка 
input double TargetProfit = 900000.00; // Ваш Баланс + плюс сумму прибыли  
//---
то есть . если у вас баланс 100 и вы готовы потерять 2 значит здесь вписываем    TargetLoss   = 98; и все на оборот TargetProfit = 102; прибыль 2
Файлы:
000101.mq5  10 kb
 
Aleksandr Klapatyuk:

я чему немного научился - вот слепил .

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

то есть . если у вас баланс 100 и вы готовы потерять 2 значит здесь вписываем    TargetLoss   = 98; и все на оборот TargetProfit = 102; прибыль 2

Александр, для тренировки сделайте такую функцию.

Задаём до открытия позиции возможный убыток в валюте депозита и уровень StopLoss.

Задача: Посчитать каким размером лота можно войти в рынок, чтобы в случае неудачи, другими словами если позиция закроется по стопу, была потеряна сумма не превышающая заданный допустимый размер.

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

 
Alexey Viktorov:

Александр, для тренировки сделайте такую функцию.

Задаём до открытия позиции возможный убыток в валюте депозита и уровень StopLoss.

Задача: Посчитать каким размером лота можно войти в рынок, чтобы в случае неудачи, другими словами если позиция закроется по стопу, была потеряна сумма не превышающая заданный допустимый размер.

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

не! это - для меня . уже сложная задача. я ноль в этом. так простенькое -цель достигнута всё закрыло 

 
Alexey Viktorov:

Александр, для тренировки сделайте такую функцию.

Задаём до открытия позиции возможный убыток в валюте депозита и уровень StopLoss.

Задача: Посчитать каким размером лота можно войти в рынок, чтобы в случае неудачи, другими словами если позиция закроется по стопу, была потеряна сумма не превышающая заданный допустимый размер.

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

есть уже готовая функция - расчёта лота из терминала эксперт  Moving Average.mq5 

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

//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double TradeSizeOptimized(void)
  {
   double price=0.0;
   double margin=0.0;
//--- select lot size
   if(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price))
      return(0.0);
   if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin))
      return(0.0);
   if(margin<=0.0)
      return(0.0);

   double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
//--- calculate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      //--- select history for access
      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      int    losses=0;                    // number of losses orders without a break

      for(int i=orders-1;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            break;
           }
         //--- check symbol
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
            continue;
         //--- check Expert Magic number
         if(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=MA_MAGIC)
            continue;
         //--- check profit
         double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         if(profit>0.0)
            break;
         if(profit<0.0)
            losses++;
        }
      //---
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//--- normalize and check limits
   double stepvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
   lot=stepvol*NormalizeDouble(lot/stepvol,0);

   double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   if(lot<minvol)
      lot=minvol;

   double maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
   if(lot>maxvol)
      lot=maxvol;
//--- return trading volume
   return(lot);
  }
//+------------------------------------------------------------------+


 

 
Aleksandr Klapatyuk:

есть уже готовая функция - расчёта лота из терминала эксперт  Moving Average.mq5 

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


 

Решайте для себя не спеша. Я чужими кодами не пользуюсь, за исключением некоторых методов из CTrade. У меня всё давно своё готово.

 
Alexey Viktorov:

Решайте для себя не спеша. Я чужими кодами не пользуюсь, за исключением некоторых методов из CTrade. У меня всё давно своё готово.

так я не тороплюсь. просто пока не пощупаешь, как оно устроено - не могу понять .

 

извините конечно  что вмешиваюсь, но ЗАЧЕМ ?

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

 
Alexey Bogatkin:

нужно ограничить свой убыток в одной сделке до 3000 рублей.

указываем цену стопа, жмем на кнопку для совершения сделки и помощник автоматом считает, какой объем должен быть у сделки, чтобы возможный убыток не превысил 3000 р. и отправляет заявку в рынок.


Такая вот задача. Никто не встречал что-то похожее? Я не нашел.

на какой паре будет стоять - какой убыток или прибыль. будет закрывать  в валюте

//---
input string   t1="------ SL TP    ----------"; // Trailing
input double   InStopLoss   = 3000;      // Stop Loss, сумма убытка
input double   InTakeProfit = 3000;      // Take Profit, сумма прибыли
//---

здесь вписываем сколько денег решили потерять  InStopLoss   = 3000;      // Stop Loss, сумма убытка (можно и вписывать 0.5 )

 или заработать InTakeProfit = 3000;      // Take Profit, сумма прибыли 

- ( ОТ ОДНОЙ ПОЗИЦИИ - потому как, на одной паре можно открыть много позиции )


Общие принципы - Торговые операции - Справка по MetaTrader 5
Общие принципы - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит...
Файлы:
000102.mq5  12 kb
 
Aleksandr Klapatyuk:

на какой паре будет стоять - какой убыток или прибыль. будет закрывать  в валюте

здесь вписываем сколько денег решили потерять  InStopLoss   = 3000;      // Stop Loss, сумма убытка( можно и вписывать 0.5 )

 или заработать InTakeProfit = 3000;      // Take Profit, сумма прибыли 

- ( ОТ ОДНОЙ ПОЗИЦИИ - потому как, на одной паре можно открыть много позиции )


осталось найти - функцию счетовода

- что бы не вручную вписывать убыток или прибыль . а функция расчёта ,вписала эти значения