Ваши вопросы по языку MQL4

haxbam

Интересующийся
Всем привет! Возникла идея по закрытию свечи старшего таймфрейма (например М15), сделать расчет индикатора с младшего таймфрейма (например М1), то есть подсчитать 15 свечей для М1, а результат вывести на М15 и так для каждой свечи М15. Не соображу как сделать.

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

_SERG_

Активный участник
Всем привет! Возникла идея по закрытию свечи старшего таймфрейма (например М15), сделать расчет индикатора с младшего таймфрейма (например М1), то есть подсчитать 15 свечей для М1, а результат вывести на М15 и так для каждой свечи М15. Не соображу как сделать.

Когда идея возникала, мозг не задела?
Может всётаки с ценой и временем начнешь работать, а не с её представлением в виде баров?:D
 

a6pakaga6pa

Интересующийся
Здравствуйте. Собираюсь написать советника, который будет торговать по уровня Мюррея. Подскажите пожалуйста, с чего начать. Спасибо.
 

_SERG_

Активный участник
Здравствуйте. Собираюсь написать советника, который будет торговать по уровня Мюррея. Подскажите пожалуйста, с чего начать. Спасибо.

Как минимум с того, как рассчитываются уровни того самого Мюрея.
Потом найти индикатор по теме, и интегрировать его в код советника.
Проверить на правильность работы.
Внести необходимые исправления.
Получать удовольствие от получения дохода.

Дет так.
 

a6pakaga6pa

Интересующийся
_SERG_, есть индикатор :) и есть его настройки. Нужен советник, который будет покупать от одних уровней и продавать от других. Алгоритм у меня в голове есть. Думал найти любого советника по Мюррею и уже туда вносить свой алгоритм. Но советника пока нет. Брать любого советника и как быть? :)
 

_SERG_

Активный участник
_SERG_, есть индикатор :) и есть его настройки. Нужен советник, который будет покупать от одних уровней и продавать от других. Алгоритм у меня в голове есть. Думал найти любого советника по Мюррею и уже туда вносить свой алгоритм. Но советника пока нет. Брать любого советника и как быть? :)
Я обычно алгоритм на бумажку переписываю, если переписал - значит алгоритм, если не переписал, значит не алгоритм. :laugh:

И про нюансы: "Что делать если минус, а не плюс?"

Тут надо бы понимание, а не просто индикатор.
 
Последнее редактирование:

haxbam

Интересующийся
_SERG_, есть индикатор :) и есть его настройки. Нужен советник, который будет покупать от одних уровней и продавать от других. Алгоритм у меня в голове есть. Думал найти любого советника по Мюррею и уже туда вносить свой алгоритм. Но советника пока нет. Брать любого советника и как быть? :)
Я себе для этих целей создал этого советника. Там конечно куча мусора. Да и ошибки типов данных имеются, но для теста то что надо. Может если кто нибудь подправит его и выложит улучшеную версию буду очень благодарен.
 

Вложения

  • haxbam.mq4
    12,9 КБ · Просмотры: 29

a6pakaga6pa

Интересующийся
_SERG_, переписал на бумажку - рабочий вариант. 100%. А могу ли взять любого советника, но задать в нем параметры от индикатора? Пример. Есть советник, который покупает и продает по определенным параметрам. И вот вместо них я вписываю параметры (уровни) с индикатора.
 

_SERG_

Активный участник
Я себе для этих целей создал этого советника. Там конечно куча мусора. Да и ошибки типов данных имеются, но для теста то что надо. Может если кто нибудь подправит его и выложит улучшеную версию буду очень благодарен.

12 кило, это не работоспособный код.
Работоспособный код на MQL начинается гдето от 80 - 100 кило.

Возможно использование, как ассистента, но никак, как
самостоятельно работающий советник.

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

:D

Цитата: "Это, как писать картину, если ты в нее веришь, со временем она станет совершенством. "
 
Последнее редактирование:

_SERG_

Активный участник
_SERG_, переписал на бумажку - рабочий вариант. 100%. А могу ли взять любого советника, но задать в нем параметры от индикатора? Пример. Есть советник, который покупает и продает по определенным параметрам. И вот вместо них я вписываю параметры (уровни) с индикатора.

Не всё так, как тебе хотелось бы.
Но методом проб,ошибок и анализа, коррекции кода,
можно добиться результата.
 

a6pakaga6pa

Интересующийся
_SERG_, да ради одного советника ... 2 года :) я думаю найдутся люди, которые смогут сделать :) если сам не смогу его слепить.
 

gince

Местный знаток
Когда идея возникала, мозг не задела?
Может всётаки с ценой и временем начнешь работать, а не с её представлением в виде баров?:D
Serg, Зачемобижаешь его.Он со временим все поймет, а пока пускай учиться.
 

Prizr@k

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

zQuant

Местный житель
Всем привет... Подскажите, есть ли готовая функция mql4 чтобы выполнялось условие: открылся ордер допустим buy по сигналу индикатора... далее если появляется обратный сигнал buy закрывается и открывается sell...и т.д. Или подскажите как прописать это в советнике... Заранее благодарен

Как-то так
// получаем сигнал
int signal = GetSignal();
if(signal == OP_BUY)
{
CloseOrdersByCmd(MagicNumber, OP_SELL);
Buy();
} else
if(signal == OP_SELL)
{
CloseOrdersByCmd(MagicNumber, OP_BUY);
Sell();
}

осталось написать функцию CloseOrdersByCmd или найти ее на просторах ))
 

_SERG_

Активный участник
Всем привет... Подскажите, есть ли готовая функция mql4 чтобы выполнялось условие: открылся ордер допустим buy по сигналу индикатора... далее если появляется обратный сигнал buy закрывается и открывается sell...и т.д. Или подскажите как прописать это в советнике... Заранее благодарен

Это уже небольшой советник, а не просто функция. :D
Зайди на CodeBase. тат что то найдешь, думаю.
 

officialboob

Элитный участник
Всем привет... Подскажите, есть ли готовая функция mql4 чтобы выполнялось условие: открылся ордер допустим buy по сигналу индикатора... далее если появляется обратный сигнал buy закрывается и открывается sell...и т.д. Или подскажите как прописать это в советнике... Заранее благодарен



PHP:
//------- Глобальные переменные советника ---------------------------------------+
bool   UseSound      = True;           // Использовать звуковой сигнал
string SoundSuccess  = "ok.wav";       // Звук успеха
string SoundError    = "timeout.wav";  // Звук ошибки 
int    NumberOfTry   = 1;              // Количество торговых попыток



if (ExistPositions("",OP_BUY,Magic) && GetTypeLastOpenPos("", Magic)==0) {

OrderSend(Symbol(),OP_SELL..);
ClosePositions("", OP_BUY, Magic);
}


if (ExistPositions("",OP_SELL,Magic) && GetTypeLastOpenPos("", Magic)==1) {

OrderSend(Symbol(),OP_BUY...);
ClosePositions("", OP_SELL, Magic);
}




PHP:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 06.03.2008                                                     |
//|  Описание : Возвращает флаг существования позиций                          |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    ot - время открытия             ( 0   - любое время открытия)           |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal();
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}

PHP:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает тип последней открытой позиции или -1               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int GetTypeLastOpenPos(string sy="", int mn=-1) {
  datetime t=0;
  int      i, k=OrdersTotal(), r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderOpenTime()) {
            t=OrderOpenTime();
            r=OrderType();
          }
        }
      }
    }
  }
  return(r);
}


PHP:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Закрытие позиций по рыночной цене                              |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void ClosePositions(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect();
        }
      }
    }
  }
}

void ClosePosBySelect() {
  bool   fc;
  color  clClose;
  double ll, pa, pb, pp;
  int    err, it;

  if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
    for (it=1; it<=NumberOfTry; it++) {
      if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
      while (!IsTradeAllowed()) Sleep(5000);
      RefreshRates();
      pa=MarketInfo(OrderSymbol(), MODE_ASK);
      pb=MarketInfo(OrderSymbol(), MODE_BID);
      if (OrderType()==OP_BUY) {
        pp=pb; clClose=clrBlue;
      } else {
        pp=pa; clClose=clrRed;
      }
      ll=OrderLots();
      fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose);
      if (fc) {
        if (UseSound) PlaySound(SoundSuccess); break;
      } else {
        err=GetLastError();
        if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
        Print("Error(",err,") Close ",GetNameOP(OrderType())," ",
              ErrorDescription(err),", try ",it);
        Print(OrderTicket(),"  Ask=",pa,"  Bid=",pb,"  pp=",pp);
        Print("sy=",OrderSymbol(),"  ll=",ll,"  sl=",OrderStopLoss(),
              "  tp=",OrderTakeProfit(),"  mn=",OrderMagicNumber());
        Sleep(1000*5);
      }
    }
  } else Print("Некорректная торговая операция. Close ",GetNameOP(OrderType()));
}
 
Верх