droba
Droba

 
Уровень 10

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


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

Рейтинг 2156



РЕКОМЕНДУЮ



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

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

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

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

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

+
0
на 10-е
avatar

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

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

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

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

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

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

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

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

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

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


avatar

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

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

  10  droba Автор Сообщений: 245 - 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 Сообщений: 16537 - Андрей

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

  10  droba Автор Сообщений: 245 - 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

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