Скачать MetaTrader 5

Народ помогите сижу уже 4 часа не могу закончить часть кода - страница 3

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

я смотрел вставил и не понял в чем фишка там слишком много кода лишнего не очем а метаедитор ругается на все 4 стороны куда не вставлю шо не поменяю везде ерорр и каждый раз разный

bountyhunter
127
bountyhunter  
drknn:
Зря переправили пост - теперь наш диалог выглядит по дебильному, будто Вы попросили флаг, а я Вам рассказываю Бог весть что. Я удаляю свои посты и умываю руки.

Я ЖЕ НАПИСАЛ:

"Нужно както по условию что получили тейк профит закрыть отложки

ДОПУСТИМ:
Открыл BUY ;

Получил профит;

Закрыть все отложенные ордера;"

и чем отличается мой пост вначале от етого:

"мне нада что бы получилось так

открыли селл

поставили байстоп

селл закрылся по тейку?

да - удалить байстоп "

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

mirko
9
mirko  
Уважаемые програмисты. просьба помочь в написании кода.по такому принцыпу -Сигнал BUY -открыть позицию BUY 1 .SL.TP.перевод в безубыток

Сигнал SELL -открыть позицию SELL 1. SL.TP.перевод в безубыток . Сигнал BUY- если есть открытые позиции BUY 1 и SELL 1 то открываем BUY 2. Сигнал SELL-еслиесли есть открытые позиции SELL 1 и BUY 1 то открываем SELL 2. Сигнал BUY- если есть открытые позиции SELL 1. BUY 1. SELL 2. то закрываем SELL 2. открываем BUY 2. Сигнал SELL - еслиесли есть открытые позиции BUY 1. SELL 1. BUY 2. то закрываем BUY 2. открываем SELL 2. Врынке не должно работать больше 3 ордеров .Если кто то сможет помочь. то очень большое спасибо.
o_o
Модератор
24357
o_o  
mirko:
Уважаемые програмисты. просьба помочь в написании кода.

вы начните, а дальше тут конечно помогут.

pako
3309
pako  
bountyhunter:

Я ЖЕ НАПИСАЛ:

"Нужно както по условию что получили тейк профит закрыть отложки

ДОПУСТИМ:
Открыл BUY ;

Получил профит;

Закрыть все отложенные ордера;"

и чем отличается мой пост вначале от етого:

"мне нада что бы получилось так

открыли селл

поставили байстоп

селл закрылся по тейку?

да - удалить байстоп "

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

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}

Эта функция возвращает флаг закрытия последней позиции по тейку. Флаг поднят - True - сработал TakeProfit. Флаг опущен - False - позиция была закрыта по другой причине.

если флаг  True ,  удаляете отложеники

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                    |
//+----------------------------------------------------------------------------+
//| Версия   : 28.11.2006                                                      |
//| Описание : Удаление ордеров                                                |
//+----------------------------------------------------------------------------+
//| Параметры:                                                                 |
//|   sy - наименование инструмента   ( ""  - любой символ,                    |
//|                                    NULL - текущий символ)                  |
//|   op - операция                   (  -1 - любой ордер)                     |
//|   mn - MagicNumber                (  -1 - любой магик)                     |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int err, i, it, k=OrdersTotal(), ot;
  
  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(NameFileSound); break;
              } else {
                err=GetLastError();
                Print("Error(",err,") delete order ",GetNameOP(ot),
                      ": ",ErrorDescription(err),", try ",it);
                Sleep(1000*5);
              }
            }
          }
        }
      }
    }
  }
}

 например этой функцией

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