Перейти к содержанию

Обучение языку MQL4 под MetaTrader 4


Рекомендуемые сообщения

  • 4 weeks later...
  • Ответов 6,8k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Смотрим видео-уроки, изучаем MQL:       Скачать видеокурс «MQL программирование. Как самому написать форекс советник/ индикатор/ скрипт»   P.S. Тема про Обучение MQ

Перейти

Циклы цикл for Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. К примеру, мы хотим проанализировать последние 10 баров и выяснить наименьшую цен

Перейти

Речь идет о том, что не будет значимых нововведений. А только баги периодически будут править. А вот все новое мол - в МТ5. Когда они вживую сказали то же самое на конференции в Москве, я уточнил: "То

Перейти
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Доброе всем время суток! Кто нибудь может подсказать как выставлять отложенные ордера BUY STOP и  SELL STOP на расстояние в пунктах от существующей цены в MQL4?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
7 минут назад, Hanuman сказал:

Доброе всем время суток! Кто нибудь может подсказать как выставлять отложенные ордера BUY STOP и  SELL STOP на расстояние в пунктах от существующей цены в MQL4?

С помощью скрипта.

OpenStopOrderNet.rar

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
40 минут назад, Hanuman сказал:

Cпасибо, но этот архив не распаковывается, выходит сообщение, что повреждён.

Архиватор скачайте новый.

OpenStopOrderNet.mq4

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
1 час назад, Hanuman сказал:

Доброе всем время суток! Кто нибудь может подсказать как выставлять отложенные ордера BUY STOP и  SELL STOP на расстояние в пунктах от существующей цены в MQL4?

https://www.davinci-fx.com/mql_pendings/

Посмотри здесь

Ссылка на сообщение
Поделиться на другие сайты

  • 4 weeks later...
Обучение языку MQL4 под MetaTrader 4 Опубликовано

привет!

я только вторую неделю изучаю MQL,

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

 

задаю исходный риск в %, лотность считается взависимоти от величины стопа (это уже работает, прада порядок я до сих пор руками подкручиваю для инструмента))))

 

затем если получили стоп - то увеличиваем обьем риска

новый риск:

Risk=((убыток/размер текущего счета-убыток)/соотношение риск:прибыль) +изначальный риск

 

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

Спасибо за помощь! код ниже

--------------------------------

double Lots()
   {
   double r;
   
   double result=Result();
   
   double Risk;
   if(result>=0)
   {  Risk=RiskStart;}
   else
   {Risk=NormalizeDouble((((result/(AccountBalance()+MathAbs(result)))/multiplier)+RiskStart),2);
   Print(Risk);}
   if(Digits>2)
   {
      double p=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_CONTRACT_SIZE)*Bid*0.01;
      double k=MathAbs(Bid-SL)*p*(10^Digits);
      double m=Risk*AccountBalance()/100;
      double f=m/k;
      r=NormalizeDouble(f,2);
     
    }
    else{
    double p=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE);
      double k=MathAbs(Bid-SL)*p;
      double m=Risk*AccountBalance()/10000;
      double f=m/k;
      r=NormalizeDouble(f,2);
    }
   
       if(r<0.01)
       r=0.01;
        return(r);
   }
   
 double Result()//-------------выясняю какой общий убыток наторговали
 {
    double s=0;
    if (OrdersHistoryTotal()>0)
   {
   int j=OrderSelect(0,SELECT_BY_POS, MODE_HISTORY);
   if(j<0)
   Print("error to got order");
   double loss=OrderProfit(); 
   if(loss<0)
   {
   for (int u=1; loss<=0 && u<=OrdersHistoryTotal(); u++)
   {
      int k=OrderSelect(u,SELECT_BY_POS, MODE_HISTORY);
      if(OrderProfit()<0)
      {
         loss=OrderProfit();
         s=s+loss;
       }
   }
   }
   else{s=loss;}
   }
   return(s);
 }

 

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Кто ни будь может помочь восстановить индикатор Juice (что бы он отображался в МТ4):

 

//+------------------------------------------------------------------+
//| Juice.mq4 |
//| Perky_z |
//+------------------------------------------------------------------+
#property copyright "perky"
#property link ""
//---- indicator settings
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 LimeGreen
#property indicator_color2 FireBrick
//---- indicator parameters
extern int Periyod=7;
extern double Level=0.0004;

//---- indicator buffers
double OsMAUpBuffer[];
double OsMADownBuffer[];
double OsMABuffer[];
double MACDBuffer[];
double SignalBuffer[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(5);
//---- drawing settings
SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1);
SetIndexDrawBegin(0,Level);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 3 indicator buffers mapping
if(!SetIndexBuffer(0,OsMAUpBuffer) &&
!SetIndexBuffer(1,OsMADownBuffer) &&
!SetIndexBuffer(2,OsMABuffer) &&
!SetIndexBuffer(3,MACDBuffer) &&
!SetIndexBuffer(4,SignalBuffer))
Print("cannot set indicator buffers!");
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("Juice("+Periyod+","+Level+")");
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Moving Average of Oscillator |
//+------------------------------------------------------------------+
int start()
{
//if ( Period != 15) Alert ("Juice Is Recommended for 15 Min Chart only!!");


if (Symbol()=="USDJPY") Level=0.040;
if (Symbol()=="EURJPY") Level=0.040;
if (Symbol()=="GBPJPY") Level=0.040;
int limit,i;
int counted_bars=IndicatorCounted();
//---- check for possible errors
if(counted_bars<0) return(-1);
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if (Level== 0.0004 && Period()==5 ) Level=0.0002;


//---- main loop
for(i=0; i<limit; i++){
OsMABuffer=iStdDev (NULL,0,Periyod,MODE_EMA,0,PRICE_CLOSE,i)-(Level);

if(OsMABuffer>0){
OsMAUpBuffer=OsMABuffer;
OsMADownBuffer=0;
}else if(OsMABuffer<0){
OsMADownBuffer=OsMABuffer;
OsMAUpBuffer=0;
}else{
OsMAUpBuffer=0;
OsMADownBuffer=0;
}
}
//---- done
return(0);
}
//+------------------------------------------------------------------+

Juice.gif

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте!

Не могу сообразить функцию подсчета количества черных и белых свечей на таймфрейме H1 не за определенный период, а за закрытый предыдущий день. Т.е. например сегодня 27.07, а необходимо узнать сколько вчера 26.07 за сутки на Н1 было черных и белых свечей. Если кто может, прошу подсказать. Спасибо!

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
4 часа назад, Владимир Стариков сказал:

Здравствуйте!

Не могу сообразить функцию подсчета количества черных и белых свечей на таймфрейме H1 не за определенный период, а за закрытый предыдущий день. Т.е. например сегодня 27.07, а необходимо узнать сколько вчера 26.07 за сутки на Н1 было черных и белых свечей. Если кто может, прошу подсказать. Спасибо!

Пробегаете в цикле от 0-й свечи до i-той.
Если смотрите гарантированно за вчерашний день, то с запасом берете 24*2=48 итераций.
На каждой итерации проверяете дату свечи. Если удовлетворяет условию, то проверяете ее направление.

Решение "кривое" в смысле того, что будет работать только "предыдущий день".
Если продумать все возможные сценарии использования, то алгоритм можно усложнить.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
6 часов назад, Владимир Стариков сказал:

Здравствуйте!

Не могу сообразить функцию подсчета количества черных и белых свечей на таймфрейме H1 не за определенный период, а за закрытый предыдущий день. Т.е. например сегодня 27.07, а необходимо узнать сколько вчера 26.07 за сутки на Н1 было черных и белых свечей. Если кто может, прошу подсказать. Спасибо!

Вот простой скрипт для выполнения данной функции.
Узнается предыдущий день, фильтруются выходные. Далее запускается цикл на последние 100 свечей и идет сравнение дня каждой из свеч с рассчитанным ранее, если день совпадает, то:
а) если цена открытия выше цены закрытия - свеча медвежья
б) если цена открытия ниже цены закрытия - свеча бычья. 
Все записывается в память и выдается в журнал принтом. 

Candles counter.mq4

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Кто-нибудь скиньте плиз толковую книгу по программироанию мкьл4 этак на  пару сотен страниц, из первого поста ни черта не скачивается.

Изменено пользователем immortal
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
11 минут назад, immortal сказал:

Кто-нибудь скиньте плиз толковую книгу по программироанию мкьл4 этак на  пару сотен страниц, из первого поста ни черта не скачивается.

Попробуй этот курс: https://www.davinci-fx.com/mql-coding/
Преимущество в том, что код можно сразу копировать с сайта в MetaEditor 

  • Лайк 1
  • Хм... 1
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

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

в коде советника как это сделать, что бы советник работал до 30.08.2022

 

 

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 26.08.2022 в 20:53, serga-bl сказал:

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

в коде советника как это сделать, что бы советник работал до 30.08.2022

 

 

А вам зачем, если не секрет?

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

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

#4X Bheurekso Pattern 4_arrow.mq4

Изменено пользователем 967030@mail.ru
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 29.08.2022 в 22:41, Rigal сказал:

А вам зачем, если не секрет?

надо... помогите, пожалуйста

как ограничить работу советника до определенной даты, как это прописать в коде ?

Изменено пользователем serga-bl
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
2 часа назад, serga-bl сказал:

надо... помогите, пожалуйста

как ограничить работу советника до определенной даты, как это прописать в коде ?

Если с вашей точки зрения "надо" - исчерпывающий ответ на мой вопрос, то "очень просто" - мой ответ на ваш

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
12 часов назад, Rigal сказал:

Если с вашей точки зрения "надо" - исчерпывающий ответ на мой вопрос, то "очень просто" - мой ответ на ваш

у меня есть код советника, я хочу его продать, дать в аренду, но не знаю как мне его ограничить до определенной даты

помогите, пожалуйста

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 10.09.2022 в 07:12, Roman 13 сказал:

Здравствуйте подскажите код для того чтобы советник торговал например с 9 до 19 

Чуть выше есть ссылка на сайт davinci. Там есть всё в обучении, что нужно уверенному середнячку в программировании, в т.ч. и ответ на Ваш вопрос.

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано

 

https://www.davinci-fx.com/mql-ea-stochastic/
Описание пользовательской функции IsTime читайте

В 10.09.2022 в 14:12, Roman 13 сказал:

Здравствуйте подскажите код для того чтобы советник торговал например с 9 до 19 

Изменено пользователем Rever27
Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
1 час назад, Rever27 сказал:

 

https://www.davinci-fx.com/mql-ea-stochastic/
Описание пользовательской функции IsTime читайте

Да это понятно, что там написано. Непонятно , почему установил торговать с 9 до 19 часов, запустил советник в 22, а он торговать начал, т.е. мимо установленного времени

Ссылка на сообщение
Поделиться на другие сайты

Обучение языку MQL4 под MetaTrader 4 Опубликовано
В 14.09.2022 в 09:27, serga-bl сказал:

у меня есть код советника, я хочу его продать, дать в аренду, но не знаю как мне его ограничить до определенной даты

помогите, пожалуйста

Собственно, как и ожидалось.

Мне кажется не совсем логичным, что вы просите кого-то помочь вам бесплатно, чтобы у вас была возможность заработать.

Не говоря уже о том, что вы планируете зарабатывать на продаже чего-то, что вам явно не принадлежит.

 

Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
Обучение языку MQL4 под MetaTrader 4 Опубликовано

Здравствуйте! По уроку Павла по трейлинг стропу прикрутил его трейлинг к индиктатру true TMA, и сделал сигнал на вход при пересечении ценой сверху вниз нижней линии по тренду на продажу, на покупку соответственно - наоборот. 

 

 if (iOpen(NULL,0,0) > iClose(NULL,0,0) && iOpen(NULL,0,0) > PriceLow && iClose(NULL,0,0) < PriceLow && PriceLow < PriceLowPrev && CountBuy() == 0 && CountSell() == 0)

 

PriceLowPrev это линия TMA на шаг назад для определения тренда по свече. 


Так вот вопрос, как сделать так, чтобы советник открывал сделку только один раз за свечу. Очень часто так происходит, что он на текущей длинной свече закрывает позицию по трейлингу, и моментально открывает заново, т.к. условия открытия сохраняются, а свеча еще не закрылась. Таким образом весь профит улетает на таких свечах

244.png

Изменено пользователем megakosmo
скриншот
Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • Рекомендуемые брокеры

  • ×
    ×
    • Создать...