droba
Droba

 
Уровень 9

  Торгую в компаниях:


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

Рейтинг 2146



РЕКОМЕНДУЮ



Прошу написать скрипт.

Прошу написать Скрипт risk для МТ4, величина лота в зависимости от риска, расчёт от свободных средств.
1. Скрипт должен выставлять BUYLIM и SELLLIM на уровень указанный мышкой с величиной лота от заданного SL.
2. ТР = n * SL
  • 0
  • Просмотров: 1804
  • 7 февраля 2022, 10:57
  • droba
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
сделать советник
Следующая запись в группе  
Модификация Советника на индикаторе «Parabolic»
07 февраля 2022
09 февраля 2022

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

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

+
0
на 10-е
avatar

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

  • 7 февраля 2022, 18:33
+
0
OK!
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 8 февраля 2022, 08:04
+
0
что куда ставим? покажите на скрине
avatar

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

  • 9 февраля 2022, 20:29
+
0
ставить на цену указанной мышкой трейдером
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 10 февраля 2022, 07:19
+
0
ставить на цену указанной мышкой трейдером под текущей ценой для BUYLIM и над текущей ценой SELLLIM
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 10 февраля 2022, 07:21
+
0


avatar

  9  droba Автор Сообщений: 239 - Droba

  • 10 февраля 2022, 14:49
+
0
Скрипт должен выставлять BUYLIM или SELLLIM на уровень указанный мышкой с величиной лота от заданного SL.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 10 февраля 2022, 14:54
+
0
Скрипт должен выставлять BUYLIM или SELLLIM на уровень указанный мышкой с величиной лота от заданного SL.

Самая простая реализация:

//+------------------------------------------------------------------+
//|                        Скрипт risk для МТ4   Mouse Lot SL TP.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
#property strict

#property show_inputs

extern double lot        = 1;
extern int    risk       = 10;
extern int    StopLoss   = 300;
extern int    Slippage   = 30;
extern double n          = 2;

extern int Magic         = 123;
int TakeProfit;
//+------------------------------------------------------------------+
//| Лот на стоп от депо                                              |
//+------------------------------------------------------------------+
double Lot(){
   double lt=lot;
   if(lot==0)
     {
      lt=NormalizeDouble((AccountEquity()*risk)/(100*StopLoss),2); 
     }
   return(lt);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   double StopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
   double priceBuy = NormalizeDouble(WindowPriceOnDropped()-StopLevel*Point,Digits);
   double priceSell = NormalizeDouble(WindowPriceOnDropped()+StopLevel*Point,Digits);
   TakeProfit = NormalizeDouble(n*StopLoss,0);
   
   if(priceBuy<=Ask-StopLevel) 
      { 
       SetOrder(NULL, OP_BUYLIMIT, Lot(), priceBuy, priceBuy-StopLoss*Point, priceBuy+(StopLoss*n)*Point, Magic);
      }
   if(priceSell>=Bid+StopLevel) 
      {     
       SetOrder(NULL, OP_SELLLIMIT, Lot(), priceSell, priceSell+StopLoss*Point, priceSell-(StopLoss*n)*Point, Magic);
      }
   Comment("\n Lot: ",Lot(),
           "\n StopLoss: ",StopLoss,
           "\n TakeProfit: ",TakeProfit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
void SetOrder(string sy, int op, double ll, double pp,
              double sl=0, double tp=0, int mn=0, datetime ex=0) {
  int   err, ticket;

  if (sy=="" || sy=="0") sy=Symbol();
  ticket=OrderSend(sy, op, ll, pp, Slippage, sl, tp, "", mn, ex, clrNONE);
  if (ticket<0) {
    err=GetLastError();
  }
}
//+----------------------------------------------------------------------------+
avatar

  16  ssg Сообщений: 817

  • 10 февраля 2022, 22:09
+
0
У Андрея советник выставляет И байлимит И селллимит ордера одновременно.
avatar

  16  ssg Сообщений: 817

  • 10 февраля 2022, 22:11
+
+1
в скриптах ончартивент не поддерживается, поэтому советник: www.opentraders.ru/downloads/3249/

avatar

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

  • 10 февраля 2022, 19:50
+
0
Я правильно понял, что б лот рассчитывался в процентах от SL надо во входных параметрах установить lot = 0.0.
Всё классно работает. Благодарю за оперативность и отличную работу.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 10 февраля 2022, 22:11
+
0
Да.

//+------------------------------------------------------------------+
//| Лот на стоп от депо                                              |
//+------------------------------------------------------------------+
double Lot(){
   double lt=lot;
   if(lot==0)
     {
      lt=NormalizeDouble((AccountEquity()*risk)/(100*StopLoss),2); 
     }
   return(lt);
  }
avatar

  16  ssg Сообщений: 817

  • 10 февраля 2022, 22:13
+
0
Давно все это уже написано)))
avatar

  7  drona007 Сообщений: 117 - Евгений

  • 12 февраля 2022, 14:56

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