• Реклама: 💰 Пополни свой портфель с минимальной комиссией на Transfer24.pro
  • Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"

Открывать сразу несколько ордеров

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Суть такая, может кто создать сможет или скажет где скачать

Надо чтоб одним кликом открывалось 4-5 ордеров либо в баи либо в сел, пока только в 1 сторону интересует.

Можно конечно с возможностью и в разные стороны 4-5 в одну сторону и в другую.

Чтоб заранее мог выстовить сел стопы и тек профиты.

добавлено через 4 часа 46 минут
и что бы в определенных ордерах стоп подтягивался, если возможно ?
 
Последнее редактирование:

Forex-club7

Новичок
Регистрация
26.07.2010
Сообщения
4,045
Реакции
605
Поинты
0.000
Суть такая, может кто создать сможет или скажет где скачать

Надо чтоб одним кликом открывалось 4-5 ордеров либо в баи либо в сел, пока только в 1 сторону интересует.

Можно конечно с возможностью и в разные стороны 4-5 в одну сторону и в другую.

Чтоб заранее мог выстовить сел стопы и тек профиты.

добавлено через 4 часа 46 минут
и что бы в определенных ордерах стоп подтягивался, если возможно ?
А заказать программеру написать скрипт или советник нельзя?
 

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
заказал бы уже
Держите. Я сегодня добрый. Набросал код скрипта за десяток минут. Если заработаете, то найдете меня и отблагодарите :rolleyes:
PHP:
//+------------------------------------------------------------------+
//|                                          openorders_for_mmgp.mq4 |
//+------------------------------------------------------------------+
#property copyright "Влад Сергеев для mmgp"
#property version   "1.00"
#property strict
#property script_show_inputs

input int      orders = 4;      //всего ордеров в серии
input bool     buy = true;      //флаг разрешающий/запрещающий покупки
input bool     sell = false;    //флаг разрешающий/запрещающий продажи
input int      magic = 100500;  //уникальный номер для ордеров, открываемых этим скриптом
input double   lot = 0.01;      //объем каждого ордера серии
input int      tp = 100;        //тейк профит, в пунктах
input int      sl = 100;        //стоп лосс, в пунктах
input int      slip = 2;        //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор)

void OnStart()
{
    int i = 0;
    int ticket = 0;
    if ( buy )   {
       while ( i < orders )    {     
           RefreshRates();
           ticket = OrderSend (Symbol(), OP_BUY, lot, NormalizeDouble(Ask, Digits), slip, 0, 0, "", magic, 0, clrBlue);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()-sl*Point, Digits), NormalizeDouble(OrderOpenPrice()+tp*Point, Digits), 0, clrBlue);
              }
           }
           i++;
       }
    }
    i = 0;
    if ( sell )  {
       while ( i < orders )    {     
           RefreshRates();
           ticket = OrderSend (Symbol(), OP_SELL, lot, NormalizeDouble(Bid, Digits), slip, 0, 0, "", magic, 0, clrRed);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()+sl*Point, Digits), NormalizeDouble(OrderOpenPrice()-tp*Point, Digits), 0, clrRed);
              }
           }
           i++;
       }
    }
}
Не забудьте разрешить автоторговлю в терминале. Можно работать как в одном из направлений buy или sell, так и в двух одновременно, т.е. в противоположных. Скрипт просто "бросаете" на нужный график, устанавливаете параметры (их описание я указал в коде) и нажимаете "OK". Удачи, трейдер. :wink2:
и что бы в определенных ордерах стоп подтягивался, если возможно ?
А вот для этого уже не скрипт нужен, а программа-советник, которую именуют "трал, тральщик и т.п.". В сети их много в свободном доступе. Скачиваете, устанавливаете на график, в параметрах тральщика указываете magic ордеров, открытых скриптом, и он их будет тралить. Тральщиков бывает много: простой с заданным шагом, по фракталам и по индикаторам, например, ATR. Выбирайте, как говорится, на вкус.
 

Вложения

  • openorders_for_mmgp.zip
    899 байт · Просмотры: 7,187
Последнее редактирование:

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Вот это конечно спасибо, а вот если бы еще была возможность на каждый ордер выставлять разные теик и сел стом, возможно такое ?

После того как на график кидаем скрипт, сделка открывается сама или при нажатии? еще не ставил, собираюсь поставить.

А в тральщике есть возможность чтоб от потягивал стоп только у одного ордера ?

добавлено через 23 минуты
и вот этот п. не понял

флаг разрешающий/запрещающий продажи
 
Последнее редактирование:
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
а вот если бы еще была возможность на каждый ордер выставлять разные теик и сел стом, возможно такое ?
Возможно. Просто в коде объявляем массив тейк профитов и стоп лоссов и для i-той позиции берем тейк и стоп из соответствующего массива.
В коде комментарии, разбирайтесь:
PHP:
//+------------------------------------------------------------------+
//|                                           openorder_for_mmgp.mq4 |
//+------------------------------------------------------------------+
#property copyright "Влад Сергеев для mmgp"
#property version   "2.00"
#property strict
#property script_show_inputs

input int      orders = 4;          //всего ордеров в серии
input bool     buy = true;          //флаг разрешающий/запрещающий покупки
input bool     sell = false;        //флаг разрешающий/запрещающий продажи
input int      magic = 100500;      //уникальный номер для ордеров, открываемых этим скриптом
input double   lot = 0.01;          //объем каждого ордера серии
int            tp[] = {100,150,200,250};  //массив тейк профитов, в пунктах  
int            sl[] = {100,150,200,250};  //массив стоп лоссов, в пунктах
input int      slip = 2;            //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор)

void OnStart()
{
    int i = 0;
    int ticket = 0;
    if ( buy )   {
       while ( i < orders )    {     
       RefreshRates();
           ticket = OrderSend (Symbol(), OP_BUY, lot, NormalizeDouble(Ask, Digits), slip, 0, 0, "", magic, 0, clrBlue);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()-sl[i]*Point, Digits), NormalizeDouble(OrderOpenPrice()+tp[i]*Point, Digits), 0, clrBlue);
              }
           }
           i++;
       }
    }
    i = 0;
    if ( sell )  {
       while ( i < orders )    {     
       RefreshRates();
           ticket = OrderSend (Symbol(), OP_SELL, lot, NormalizeDouble(Bid, Digits), slip, 0, 0, "", magic, 0, clrRed);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()+sl[i]*Point, Digits), NormalizeDouble(OrderOpenPrice()-tp[i]*Point, Digits), 0, clrRed);
              }
           }
           i++;
       }
    }
}

добавлено через 7 минут
После того как на график кидаем скрипт, сделка открывается сама или при нажатии?
Открывается окно с параметрами скрипта. Если ничего не менять, то просто жмем "ОК". Сделки начнут открываться. Если надо изменить, то меняем и жмем "ОК". В варианте с массивами ТП и СЛ параметры массивов уже придется менять в коде, т.к. изменение параметров массивов через интерфейс параметров не поддерживается в МТ4.

А в тральщике есть возможность чтоб от потягивал стоп только у одного ордера ?
Это все зависит от того, какой Вы тральщик себе в сети подберете.

флаг разрешающий/запрещающий продажи
Что тут не понятного. Две флаговых переменных buy и sell. Одна разрешает/запрещает покупки, а другая продажи.
И бесплатный совет. Если не понимаете смысла MQL4 программ, то не пытайтесь зарабатывать с помощью скриптов и советников. Иначе дров наломаете. Я даже уверен, что Вы не совсем поняли, как скрипт работает. И уверен, что Вы неправильно сформулировали первоначальное задание :)
 
Последнее редактирование:

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Может понял, может нет. Мне надо было чтоб в каком направлении я нажал открыть ордера чтоб в том направлении открыл с такими настроиками которые я вписал заранее. Вот и все) вроде не чего нет сложного. Вы не так меня поняли ?
 
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
Вы не так меня поняли ?
Именно это скрипт и делает. Открывает серию ордеров по рынку (практически по одной цене).
Просто я подумал, что Вы подразумеваете отложенные ордера с разными параметрами, которые бы активизировались по мере движения цены.
Но если все так, как Вы пишите, то скрипт самое оно. :)
 

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Именно это скрипт и делает. Открывает серию ордеров по рынку (практически по одной цене).
Просто я подумал, что Вы подразумеваете отложенные ордера с разными параметрами, которые бы активизировались по мере движения цены.
Но если все так, как Вы пишите, то скрипт самое оно. :)

Добавил, но в лонг открывает, когда 3 ордера иногда 4, стопы один раз проставил и то только на 1 ордере, посл. В шорт открываться вообще не хочет (

добавлено через 4 минуты
и когда сразу в селл и бай открываешь, открывает только в бай, теик и стоп проставился только на 4 ордере.
 
Последнее редактирование:
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
Добавил, но в лонг открывает, когда 3 ордера иногда 4, стопы один раз проставил и то только на 1 ордере, посл. В шорт открываться вообще не хочет (

добавлено через 4 минуты
и когда сразу в селл и бай открываешь, открывает только в бай, теик и стоп проставился только на 4 ордере.
Журнал надо читать (вкладка "Журнал", вкладка "Эксперты"). Чтобы в шорт открывался надо параметры настроить. buy=false sell=true. Говорю же, дров наломаете. :)
Что хоть за брокер? Я бы у себя посмотрел. И параметры дайте. Может, Вы слишком близко параметры указываете, а брокер ограничения накладывает. Может, торговый поток занят, а скрипт это не проверяет и т.д. и т.п. У меня работает.

И тип счета-то какой? Маркет или инстант? Возможно, инстант и реквотит поэтому. А проверки на реквоты в скрипте нет. Он для маркета идеален. А для инстанта надо проверки дополнительные вводить.
 

Вложения

  • forum1.png
    forum1.png
    21.4 KB · Просмотры: 2,252
Последнее редактирование:

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Журнал надо читать (вкладка "Журнал", вкладка "Эксперты"). Чтобы в шорт открывался надо параметры настроить. buy=false sell=true. Говорю же, дров наломаете. :)
Что хоть за брокер? Я бы у себя посмотрел. У меня работает.

Все работает, стопы рядом очень были, из-за этого не ставил.

А работает все хорошо, большое спасибо.

И вопрос, на последок, как увеличивать или уменьшить кол-во ордеров, и ставить разный к примеру лот на разных ордерах, возможно?
 
Последнее редактирование:
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
стопы рядом очень были
Оно таки :) :
И параметры дайте. Может, Вы слишком близко параметры указываете, а брокер ограничения накладывает.

ставить разный к примеру лот на разных ордерах, возможно?
Легко. По аналогии с массивами профитов и лосей:
PHP:
//+------------------------------------------------------------------+
//|                                           openorder_for_mmgp.mq4 |
//+------------------------------------------------------------------+
#property copyright "Влад Сергеев для mmgp"
#property version   "3.00"
#property strict
#property script_show_inputs

input int      orders = 4;          //всего ордеров в серии
input bool     buy = true;          //флаг разрешающий/запрещающий покупки
input bool     sell = false;        //флаг разрешающий/запрещающий продажи
input int      magic = 100500;      //уникальный номер для ордеров, открываемых этим скриптом
double         lot[] = {0.01, 0.01, 0.01, 0.01};  //массив объемов ордеров серии
int            tp[] = {100,150,200,250};  //массив тейк профитов, в пунктах  
int            sl[] = {100,150,200,250};  //массив стоп лоссов, в пунктах
input int      slip = 2;            //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор)

void OnStart()
{
    int i = 0;
    int ticket = 0;
    if ( buy )   {
       while ( i < orders )    {     
       RefreshRates();
           ticket = OrderSend (Symbol(), OP_BUY, lot[i], NormalizeDouble(Ask, Digits), slip, 0, 0, "", magic, 0, clrBlue);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()-sl[i]*Point, Digits), NormalizeDouble(OrderOpenPrice()+tp[i]*Point, Digits), 0, clrBlue);
              }
           }
           i++;
       }
    }
    i = 0;
    if ( sell )  {
       while ( i < orders )    {     
       RefreshRates();
           ticket = OrderSend (Symbol(), OP_SELL, lot[i], NormalizeDouble(Bid, Digits), slip, 0, 0, "", magic, 0, clrRed);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()+sl[i]*Point, Digits), NormalizeDouble(OrderOpenPrice()-tp[i]*Point, Digits), 0, clrRed);
              }
           }
           i++;
       }
    }
}

как увеличивать кол-во ордеров
в скрипте есть переменная orders она и определяет число ордеров в серии. Соответственно, размерность массивов lot, tp и sl должна быть не меньше числа orders (больше можно, меньше - нет).
Для счетов с исполнением инстант, чтобы не реквотило есть такая переменная в скрипте slip, которая определяет допустимое проскальзывание. Естественно, на маркет-счетах параметр игнорируется.
 
Последнее редактирование:

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Оно таки :) :



Легко. По аналогии с массивами профитов и лосей:
PHP:
//+------------------------------------------------------------------+
//|                                           openorder_for_mmgp.mq4 |
//+------------------------------------------------------------------+
#property copyright "Влад Сергеев для mmgp"
#property version   "3.00"
#property strict
#property script_show_inputs

input int      orders = 4;          //всего ордеров в серии
input bool     buy = true;          //флаг разрешающий/запрещающий покупки
input bool     sell = false;        //флаг разрешающий/запрещающий продажи
input int      magic = 100500;      //уникальный номер для ордеров, открываемых этим скриптом
double         lot[] = {0.01, 0.01, 0.01, 0.01};  //массив объемов ордеров серии
int            tp[] = {100,150,200,250};  //массив тейк профитов, в пунктах  
int            sl[] = {100,150,200,250};  //массив стоп лоссов, в пунктах
input int      slip = 2;            //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор)

void OnStart()
{
    int i = 0;
    int ticket = 0;
    if ( buy )   {
       while ( i < orders )    {     
       RefreshRates();
           ticket = OrderSend (Symbol(), OP_BUY, lot[i], NormalizeDouble(Ask, Digits), slip, 0, 0, "", magic, 0, clrBlue);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()-sl[i]*Point, Digits), NormalizeDouble(OrderOpenPrice()+tp[i]*Point, Digits), 0, clrBlue);
              }
           }
           i++;
       }
    }
    i = 0;
    if ( sell )  {
       while ( i < orders )    {     
       RefreshRates();
           ticket = OrderSend (Symbol(), OP_SELL, lot[i], NormalizeDouble(Bid, Digits), slip, 0, 0, "", magic, 0, clrRed);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()+sl[i]*Point, Digits), NormalizeDouble(OrderOpenPrice()-tp[i]*Point, Digits), 0, clrRed);
              }
           }
           i++;
       }
    }
}


в скрипте есть переменная orders она и определяет число ордеров в серии. Соответственно, размерность массивов lot, tp и sl должна быть не меньше числа orders (больше можно, меньше - нет).
Для счетов с исполнением инстант, чтобы не реквотило есть такая переменная в скрипте slip, которая определяет допустимое проскальзывание. Естественно, на маркет-счетах параметр игнорируется.

Со всем разобрался, спасибо!

Все работает хорошо)

Пытался сам увеличить кол-во ордеров и ост. параметров, но с исходными данными работает, как только в когда добавляю к примеру: 5 ордеров, и соответственно добавляю по параметру. селл, стоп, и лот. по 1 добавляю. не работает :) Не существенно, а так на будущие хотел узнать, т.к. пока 4 ордера хватает.
 
Регистрация
10.04.2011
Сообщения
2,217
Реакции
1,182
Поинты
0.000
Не так, значит, добавляете.
Вот так надо:
4 ордера:
PHP:
input int      orders = 4;
double         lot[] = {0.01, 0.01, 0.01, 0.01};
int            tp[] = {100, 150, 200, 250};
int            sl[] = {100, 150, 200, 250};
5 ордеров:
PHP:
input int      orders = 5;
double         lot[] = {0.01, 0.01, 0.01, 0.01, 0.01};
int            tp[] = {100, 150, 200, 250, 300};
int            sl[] = {100, 150, 200, 250, 300};
6 ордеров:
PHP:
input int      orders = 6;
double         lot[] = {0.01, 0.01, 0.01, 0.01, 0.01, 0.01};
int            tp[] = {100, 150, 200, 250, 300, 350};
int            sl[] = {100, 150, 200, 250, 300, 350};
Принцип понятен? :)
 

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000

А можно сделать так, что бы если стоп сбивает то он открывал n-кол-во сделок в обратную сторону ?)

добавлено через 1 минуту
Или это отсроченные будут открываться?

Или что бы отложенные так же по схожей схеме за стопами выставлял в обратную сторону?
 
Последнее редактирование:

fotini

Новичок
Регистрация
26.03.2016
Сообщения
1
Реакции
0
Поинты
0.000
Держите. Я сегодня добрый. Набросал код скрипта за десяток минут. Если заработаете, то найдете меня и отблагодарите :rolleyes:
PHP:
//+------------------------------------------------------------------+
//|                                          openorders_for_mmgp.mq4 |
//+------------------------------------------------------------------+
#property copyright "Влад Сергеев для mmgp"
#property version   "1.00"
#property strict
#property script_show_inputs

input int      orders = 4;      //всего ордеров в серии
input bool     buy = true;      //флаг разрешающий/запрещающий покупки
input bool     sell = false;    //флаг разрешающий/запрещающий продажи
input int      magic = 100500;  //уникальный номер для ордеров, открываемых этим скриптом
input double   lot = 0.01;      //объем каждого ордера серии
input int      tp = 100;        //тейк профит, в пунктах
input int      sl = 100;        //стоп лосс, в пунктах
input int      slip = 2;        //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор)

void OnStart()
{
    int i = 0;
    int ticket = 0;
    if ( buy )   {
       while ( i < orders )    {     
           RefreshRates();
           ticket = OrderSend (Symbol(), OP_BUY, lot, NormalizeDouble(Ask, Digits), slip, 0, 0, "", magic, 0, clrBlue);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()-sl*Point, Digits), NormalizeDouble(OrderOpenPrice()+tp*Point, Digits), 0, clrBlue);
              }
           }
           i++;
       }
    }
    i = 0;
    if ( sell )  {
       while ( i < orders )    {     
           RefreshRates();
           ticket = OrderSend (Symbol(), OP_SELL, lot, NormalizeDouble(Bid, Digits), slip, 0, 0, "", magic, 0, clrRed);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()+sl*Point, Digits), NormalizeDouble(OrderOpenPrice()-tp*Point, Digits), 0, clrRed);
              }
           }
           i++;
       }
    }
}
Не забудьте разрешить автоторговлю в терминале. Можно работать как в одном из направлений buy или sell, так и в двух одновременно, т.е. в противоположных. Скрипт просто "бросаете" на нужный график, устанавливаете параметры (их описание я указал в коде) и нажимаете "OK". Удачи, трейдер. :wink2:

А вот для этого уже не скрипт нужен, а программа-советник, которую именуют "трал, тральщик и т.п.". В сети их много в свободном доступе. Скачиваете, устанавливаете на график, в параметрах тральщика указываете magic ордеров, открытых скриптом, и он их будет тралить. Тральщиков бывает много: простой с заданным шагом, по фракталам и по индикаторам, например, ATR. Выбирайте, как говорится, на вкус.


Спасибо!!! Огромное спасибо! Вы написали всё ясно и понятно! Спасибо!

добавлено через 1 минуту
Владислав ! Спасибо за такое подробное объяснение данного вопроса! И за файл,отдельное спасибо!:d-thumbup:
 
Последнее редактирование:

Mihail51

Интересующийся
Регистрация
16.04.2013
Сообщения
8
Реакции
1
Поинты
0.000
Держите. Я сегодня добрый. Набросал код скрипта за десяток минут. Если заработаете, то найдете меня и отблагодарите :rolleyes:
PHP:
//+------------------------------------------------------------------+
//|                                          openorders_for_mmgp.mq4 |
//+------------------------------------------------------------------+
#property copyright "Влад Сергеев для mmgp"
#property version   "1.00"
#property strict
#property script_show_inputs

input int      orders = 4;      //всего ордеров в серии
input bool     buy = true;      //флаг разрешающий/запрещающий покупки
input bool     sell = false;    //флаг разрешающий/запрещающий продажи
input int      magic = 100500;  //уникальный номер для ордеров, открываемых этим скриптом
input double   lot = 0.01;      //объем каждого ордера серии
input int      tp = 100;        //тейк профит, в пунктах
input int      sl = 100;        //стоп лосс, в пунктах
input int      slip = 2;        //допустимое проскальзывание на открытии, в пунктах (для ECN, где открытие по рынку - игнор)

void OnStart()
{
    int i = 0;
    int ticket = 0;
    if ( buy )   {
       while ( i < orders )    {     
           RefreshRates();
           ticket = OrderSend (Symbol(), OP_BUY, lot, NormalizeDouble(Ask, Digits), slip, 0, 0, "", magic, 0, clrBlue);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()-sl*Point, Digits), NormalizeDouble(OrderOpenPrice()+tp*Point, Digits), 0, clrBlue);
              }
           }
           i++;
       }
    }
    i = 0;
    if ( sell )  {
       while ( i < orders )    {     
           RefreshRates();
           ticket = OrderSend (Symbol(), OP_SELL, lot, NormalizeDouble(Bid, Digits), slip, 0, 0, "", magic, 0, clrRed);   
           if ( ticket !=-1 ) {
              if ( OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES) )  {
                  OrderModify (ticket, OrderOpenPrice(), NormalizeDouble(OrderOpenPrice()+sl*Point, Digits), NormalizeDouble(OrderOpenPrice()-tp*Point, Digits), 0, clrRed);
              }
           }
           i++;
       }
    }
}
Не забудьте разрешить автоторговлю в терминале. Можно работать как в одном из направлений buy или sell, так и в двух одновременно, т.е. в противоположных. Скрипт просто "бросаете" на нужный график, устанавливаете параметры (их описание я указал в коде) и нажимаете "OK". Удачи, трейдер. :wink2:

А если мне не надо, чтобы сразу ставился стоплосс и тейкпрофит? Как это сделать?
 

lightsentinel

Любитель
Регистрация
18.01.2009
Сообщения
856
Реакции
53
Поинты
0.000
Сверху Снизу