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

hoz

Активный участник
Print("Ask = " + DoubleToStr(Ask, Digits)) для начала. Ты же пятый знак срезал. =)


Кстати, да. Вот:

PHP:
Expand Collapse Copy
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: Не удалось модифицировать стоплосс ордера №1. Ошибка: 130
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderModify error 130
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderOpenPrice() = 1.29789
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderStopLoss() = 1.29689
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: nextstair = 1.30589
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: Ask = 1.29717 Bid = 1.29708
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: Не удалось модифицировать стоплосс ордера №1. Ошибка: 130
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderModify error 130
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderOpenPrice() = 1.29789
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderStopLoss() = 1.29689
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: nextstair = 1.30589
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: Ask = 1.29715 Bid = 1.29706
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: Не удалось модифицировать стоплосс ордера №1. Ошибка: 130
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderModify error 130
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderOpenPrice() = 1.29789
2013.01.30 14:33:28    2011.01.12 13:29  Phillip_Nel's_TS_for_M5 EURUSD,H1: OrderStopLoss() = 1.29689
Стоп за БИДом, значит всё верно. А ругань продолжается...
 
Последнее редактирование модератором:

Sergey Kovalyov

Элитный участник
Ну, я не знаю. Это buy был?

А тип счета какой? Если стандарт, то может стоплевелы?
 

hoz

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

Fendy130288

Новичок форума
Can U Help Me Eviilll

Is anyone able to make EA + Indicator ..
:-(
strategy
- If it shows a bullish candle At brokerage hour candle close 4:00 AM, then at 5:00 AM will open OP BUY
- If it shows a bearish candle At brokerage hour candle close 4:00 AM, then at 5:00 AM will open OP SELL

Supporting Parameter EA (2Sides_v5.0c1)

AutoLot
step = 30;
Step_coef = 1;
mult = 2;
slippage = 3;

Profit = 1.0;
TP1 = 8;
TP = 8;
TPstep = 2;
Tral_Start = 5;
Tral_Size = 5;
 

Вложения

  • project.gif
    project.gif
    43,1 КБ · Просмотры: 40

aufx

Интересующийся
Как быстро скачать котировки

Уважаемые профи! подскажите плисс..
В терминале много окон различных иструментов и разных тайфреймов. Нужно быстренько их всех обновить не открывая каждое окно инструмента.
Существует ли возможность сделать это программно, например скрипт какой запустить?
 

eevviill

Заблокирован
Уважаемые профи! подскажите плисс..
В терминале много окон различных иструментов и разных тайфреймов. Нужно быстренько их всех обновить не открывая каждое окно инструмента.
Существует ли возможность сделать это программно, например скрипт какой запустить?
Была такая проблема. Так и не решил. Скрипты как бы подкачивают, но не совсем и не всегда. Но я не фанат этого дела так что 100% ответа не дам.
 

hoz

Активный участник
Уважаемые профи! подскажите плисс..
В терминале много окон различных иструментов и разных тайфреймов. Нужно быстренько их всех обновить не открывая каждое окно инструмента.
Существует ли возможность сделать это программно, например скрипт какой запустить?

Ты б указал хоть суть задачи канкретно. Если ты руками торгуешь, то терминал и так всё обновит. А если ты торгуешь экспертом, то получая рыночные данные есть функция RefreshRates(). Он сам всё получит... Сложность то в чём вообще?
 

aufx

Интересующийся
Ты б указал хоть суть задачи канкретно. Если ты руками торгуешь, то терминал и так всё обновит. А если ты торгуешь экспертом, то получая рыночные данные есть функция RefreshRates(). Он сам всё получит... Сложность то в чём вообще?

Суть задачи!
Эксперт в своей работе использует информацию не только того инструмента в окно которого он брошен но и некоторых других инструментов. Если окна этих инструментов не открыты в терминале то
эксперт пользуются "старыми" данными этих инструментов. Что бы обновить
эти инструменты нужно открыть в терминале окна этих инструментов.
Можно ли этот процесс "ручного" обновления как то программно автоматизировать?
Функция Refresh... обновляет данные только текущего инструмента, с инструментами окна которых не открыты в терминале она не работает.
 

qqmber

Почетный гражданин
Суть задачи!
Эксперт в своей работе использует информацию не только того инструмента в окно которого он брошен но и некоторых других инструментов. Если окна этих инструментов не открыты в терминале то
эксперт пользуются "старыми" данными этих инструментов. Что бы обновить
эти инструменты нужно открыть в терминале окна этих инструментов.
Можно ли этот процесс "ручного" обновления как то программно автоматизировать?
Функция Refresh... обновляет данные только текущего инструмента, с инструментами окна которых не открыты в терминале она не работает.

Если код обращается к чужому символу/фрейму, а нужных данных нет на месте, то автоматически запускается рефреш для этого фрейма. GetLastError() в этом случае вернет 4066, надо просто подождать какое-то время. Иметь открытый график не обязательно, необходимо только чтобы символ присутствовал в обзоре рынка. И еще, если какой-то рефреш уже выпоняется, то второй не запустится.
 

aufx

Интересующийся
Если код обращается к чужому символу/фрейму, а нужных данных нет на месте, то автоматически запускается рефреш для этого фрейма. GetLastError() в этом случае вернет 4066, надо просто подождать какое-то время. Иметь открытый график не обязательно, необходимо только чтобы символ присутствовал в обзоре рынка. И еще, если какой-то рефреш уже выпоняется, то второй не запустится.

1. Все за действующие инструменты открыты в обзоре рынка.
2. Почему то получается что скрипт не ждет когда обновятся данные инструмента к которому обращается его код а хватает то что есть на момент обращения к этим данным, т.е. старые данные которые сохранились со времени последнего обновления в терминале к этому инструмента.
Причем некоторые инструменты (после того как к ним обратился скрипт)
все таки обновляются, некоторые частично, а некоторые вообще нет. (видимо не успевают :))
3. Кмк проще сначала обновить задействованные инструменты а потом работать с ними.
 

qqmber

Почетный гражданин
1. Все за действующие инструменты открыты в обзоре рынка.
2. Почему то получается что скрипт не ждет когда обновятся данные инструмента к которому обращается его код а хватает то что есть на момент обращения к этим данным, т.е. старые данные которые сохранились со времени последнего обновления в терминале к этому инструмента.
Причем некоторые инструменты (после того как к ним обратился скрипт)
все таки обновляются, некоторые частично, а некоторые вообще нет. (видимо не успевают :))
3. Кмк проще сначала обновить задействованные инструменты а потом работать с ними.

Именно так, скрипт ничего не ждет, но можно программно добиться обновления нужных таймфреймов, если следить за кодом ошибки и обходить все фреймы по очереди.
Через интерфейс обновлять тоже можно, надо через WinAPI эмулировать нажатие кнопок.
 
  • Like
Реакции: aufx

aufx

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

СПАСИБО!!!
 
Ордер при изменении цвета

Помогите пожалуйста! как сделать чтобы советник открывал ордер при изменении цвета индикатора???
 

Ugar

Гуру форума
Помогите пожалуйста! как сделать чтобы советник открывал ордер при изменении цвета индикатора???
Разный цвет индикатора, если он использует буфера, это разные буфера.
В коде советника, при вызове индикатора, указывается номер буфера, обычно предпоследний параметр.
Если индикатор показывает объектами то нужно в коде советника извлечь свойство объекта цвет.
Если всё что я написал кажется "китайской грамотой", лучше обратиться к программисту.
 

sergh67

Активный участник
Помогите вывести информер по всем TF!

Хочу вывести информер по всем TF.
Но уперся в проблему: buf1[i+1] . У меня в примере идет разбивка содержания буфера по цвету. В данной ситуации буфер получает значение ограничивающее вывод информации. Значение +1 не позволяет мне снять для информер информацию со всех TF. Что делать подскажите? Как вывести информацию из buf8 и buf7 со всех TF?

PHP:
Expand Collapse Copy
buf7[i]=buf1[i];     
      buf8[i]=buf1[i];     
if(buf1[i] < buf1[i+1])
      buf7[i] = EMPTY_VALUE;
if(buf1[i] > buf1[i+1])
      buf8[i] = EMPTY_VALUE;
 

Алекc1234

Местный житель
Есть такой код
PHP:
Expand Collapse Copy
for (i=0; i<=OrdersTotal()-1; i++)  
 {     
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
 { 
 if ( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) ) 
 {
 double fir_op_pr = OrderOpenPrice(); 
  if(ot==OP_BUY) 
  {        
   prof = NormalizeDouble((Bid-fir_op_pr),Digits)/Point; }
  if (ot == OP_SELL)   
   {
   prof = NormalizeDouble((fir_op_pr-Ask),Digits)/Point; } 
  break;
  }
  }
  }
Подскажите, пожалуйста, почему на бай работает всё как надо, а на селл - нет? Дальше код не привожу, потому что будет непонятно всё равно принцип работы - долго объяснять. Но на бай работает правильно!А на селл - нет...
 

strannik-ps

VIP-участник
Есть такой код
PHP:
Expand Collapse Copy
for (i=0; i<=OrdersTotal()-1; i++)  
 {     
 if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
 { 
 if ( (OrderSymbol() == Symbol()) && (OrderMagicNumber() == Magic) ) 
 {
 double fir_op_pr = OrderOpenPrice(); 
  if(ot==OP_BUY) 
  {        
   prof = NormalizeDouble((Bid-fir_op_pr),Digits)/Point; }
  if (ot == OP_SELL)   
   {
   prof = NormalizeDouble((fir_op_pr-Ask),Digits)/Point; } 
  break;
  }
  }
  }
Подскажите, пожалуйста, почему на бай работает всё как надо, а на селл - нет? Дальше код не привожу, потому что будет непонятно всё равно принцип работы - долго объяснять. Но на бай работает правильно!А на селл - нет...

параметр открытия и будет проще пояснить.
 

eevviill

Заблокирован
Есть такой код
...
Подскажите, пожалуйста, почему на бай работает всё как надо, а на селл - нет? Дальше код не привожу, потому что будет непонятно всё равно принцип работы - долго объяснять. Но на бай работает правильно!А на селл - нет...
1)Вместо ot напиши OrderType()
2)Если после if() надо выполнить одно действие, то квадратных скобок не надо.
 
Верх