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

ansol

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

Не увидел сообщение выше. Сейчас посмотрю.

Спред в советнике никак не участвует.
Ну, наверно, спред расширяется, хотя... Я ж ECN использую, там всяко бывает, но не сильно круто.
Наверное, эти мои "коэффициенты" на новостях становятся очень большими?
Мне кажется, что советник не видит открытую сделку и лепит еще одну, и еще, и еще.
Думает, что сделка не открыта и шпарит дальше.
Потому что, в обычных условиях все в порядке, открывает через нужное количество пипсов.
 

matro3

Почетный гражданин
)) fabs оказывается стандартная функция. Толи устаревшая, то ли я отстал от жизни.

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

ansol

Местный знаток
matro3
Вообщем-то, можно взять любой индикатор канала, типа, Болинждер Банд и т.д.
Ну, я выбрал ATR, но он мутный какой-то, вот я его и коэффициентами скорректировал.

На самом деле, торговля идет по ЗигЗагу, но!
Условие, что от зигзага цена должна уйти на величину "канала".

И все ведь работает! Аккуратненько лупит сделки через пипсов 100-150.
А на новостях какая-то попа с ручкой!
Через 2-3 пипса очень много сделок...


fabs - это раньше называлось MathAbs - абсолютное значение, модуль, на случай, если число отрицательное
 

IvanSam

Прохожий
Ребят, всем привет. Помогите из этого индюка сделать mtf. Или научите, покажите, какой код, куда вставить, был бы очень признателен. Может где-то это обсуждалось - ткните носом. А то я уже весь инет перерыл в поисках этого индюка, тока МТФного.. нигде не нашел. Заранее спасибо
 

Вложения

  • Robby DSS Bressert Colored with alert_v1.2.mq4
    4,2 КБ · Просмотры: 24

Milevshi

Активный участник
Нужна помощь
Задача - включить в советник условие, чтобы новый ордер не открывался спустя х времени с момента закрытия предыдущего ордера.
Ниже написал код, где параметр y - это флаг для выполнения условия выше. Т.е. если y==1, то можно открывать оредера, если y==0, значит время с момента закрытия ордера меньше х (в нашем случае х=245 минту).
Посмотрите, в чем ошибка?

for(i=OrdersHistoryTotal()-1; i>OrdersHistoryTotal()-2; i--)
{ //перебираем ордера в истории, начиная с самого свежего
if (i=-1)
{
y=1;
}
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true && (OrderSymbol()==Symbol()) && OrderMagicNumber()==MAGIC)
{
if((TimeCurrent()-OrderCloseTime())/60>=245)
y=1;
}
}
 

AlexeyVik

Программист mql4 mql5
Нужна помощь
Задача - включить в советник условие, чтобы новый ордер не открывался спустя х времени с момента закрытия предыдущего ордера.
Ниже написал код, где параметр y - это флаг для выполнения условия выше. Т.е. если y==1, то можно открывать оредера, если y==0, значит время с момента закрытия ордера меньше х (в нашем случае х=245 минту).
Посмотрите, в чем ошибка?

for(i=OrdersHistoryTotal()-1; i>OrdersHistoryTotal()-2; i--)
{ //перебираем ордера в истории, начиная с самого свежего
if (i=-1)
{
y=1;
}
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true && (OrderSymbol()==Symbol()) && OrderMagicNumber()==MAGIC)
{
if((TimeCurrent()-OrderCloseTime())/60>=245)
y=1;
}
}
Ты сначала придумай любое количество ордеров в истории и поставь реальные цифры в цикл. посмотри какие получатся и куда будешь менять счётчик.
А потом будешь разбираться с направлением в цикле. О нумерации ордеров в истории говорилось очень много, кажется даже меняли так что последний закрытый всегда будет иметь индекс 0, но я не уверен. И ещё больше не уверен что ещё раз не поменяют.
 

Cemen4yk1

Местный житель
если с момента закрытия последнего ордера то можно даже без истории обойтись, а при закрытии последнего просто запоминать таймкуррент в переменную когда функция ордер клоуз вернула тру (будет помнить время самого последнего закрытия)
ну эт самый простецкий вариант
 

Milevshi

Активный участник
Хорошее предложение...но у меня оредры могут закрывать 2 методами:
1. по значению технических индикаторов
2. по трелинг стопу (отдельная функция)

Поэтому данный вариант не совсем подходит....но все равно спасибо!
 

matro3

Почетный гражданин
Возвращает номер бара закрытия последней позиции
_http://forum.mql4.com/ru/38949/page4#434234
Возвращает количество секунд после закрытия последней позиций
_http://forum.mql4.com/ru/38949/page5#434246
 
Последнее редактирование модератором:

Milevshi

Активный участник
Возвращает номер бара закрытия последней позиции
_http://forum.mql4.com/ru/38949/page4#434234
Возвращает количество секунд после закрытия последней позиций
_http://forum.mql4.com/ru/38949/page5#434246

Спасибо, то что надо!
 
Последнее редактирование модератором:

ansol

Местный знаток
Народ, а по-моему вопросу никто ничего не скажет?
Что за х-то? :(
9231909 2015.04.21 21:11:55 balance Deposit 5 000.00
9232487 2015.04.22 04:30:08 sell 0.20 gbpaud 1.92595 1.92531 1.91756 2015.04.22 04:32:17 1.92543 -1.49 0.00 0.00 8.06
37025 ZOG-1/16 R471/3.30 D30[+1]
9232489 2015.04.22 04:30:08 sell 0.20 gbpaud 1.92611 1.92538 1.91764 2015.04.22 04:32:17 1.92543 -1.49 0.00 0.00 10.54
37025 ZOG-1/16 R501/3.41 D33[0]
9232492 2015.04.22 04:30:09 sell 0.20 gbpaud 1.92611 1.92538 1.91765 2015.04.22 04:32:17 1.92543 -1.49 0.00 0.00 10.54
37025 ZOG-1/16 R501/3.41 D33[0]
9232493 2015.04.22 04:30:09 sell 0.20 gbpaud 1.92611 1.92541 1.91785 2015.04.22 04:32:17 1.92543 -1.49 0.00 0.00 10.54
37025 ZOG-1/16 R501/3.41 D33[0]
9232497 2015.04.22 04:30:10 sell 0.20 gbpaud 1.92613 1.92548 1.91772 2015.04.22 04:32:18 1.92548 -1.49 0.00 0.00 10.07
37025 ZOG-1/16 R501/3.41 D33[+2]
9232494 2015.04.22 04:30:10 sell 0.20 gbpaud 1.92611 1.92552 1.91824 2015.04.22 04:32:20 1.92555 -1.49 0.00 0.00 8.68
37025 ZOG-1/16 R501/3.41 D33[0]
9232495 2015.04.22 04:30:10 sell 0.20 gbpaud 1.92611 1.92554 1.91793 2015.04.22 04:32:20 1.92555 -1.49 0.00 0.00 8.68
37025 ZOG-1/16 R501/3.41 D33[0]
9232496 2015.04.22 04:30:10 sell 0.20 gbpaud 1.92611 1.92555 1.91806 2015.04.22 04:32:20 1.92555 -1.49 0.00 0.00 8.68
37025 ZOG-1/16 R501/3.41 D33[0;0][sl]
9232498 2015.04.22 04:30:11 sell 0.20 gbpaud 1.92645 1.92552 1.91773 2015.04.22 04:32:20 1.92555 -1.49 0.00 0.00 13.95
37025 ZOG-1/16 R501/3.41 D33[-10]
9232499 2015.04.22 04:30:11 sell 0.19 gbpaud 1.92622 1.92555 1.91783 2015.04.22 04:32:20 1.92555 -1.42 0.00 0.00 9.87
37025 ZOG-1/16 R500/3.41 D31[0;0][sl]
9232500 2015.04.22 04:30:11 sell 0.19 gbpaud 1.92583 1.92233 1.91525 2015.04.22 04:54:04 1.92240 -1.42 0.00 0.00 50.61
37025 ZOG-1/16 R501/3.41 D31[-39]
9232501 2015.04.22 04:30:12 sell 0.19 gbpaud 1.92586 1.92238 1.91529 2015.04.22 04:54:04 1.92240 -1.42 0.00 0.00 51.05
37025 ZOG-1/16 R504/3.41 D31[0]
9232508 2015.04.22 04:30:36 sell 0.22 gbpaud 1.92368 1.92239 1.91522 2015.04.22 04:54:04 1.92240 -1.64 0.00 0.00 21.87
37025 ZOG-1/16 R558/3.59 D40[-1]
9232509 2015.04.22 04:30:38 sell 0.21 gbpaud 1.92470 1.92239 1.91516 2015.04.22 04:54:04 1.92240 -1.57 0.00 0.00 37.51
37025 ZOG-1/16 R558/3.61 D39[-5]
9232514 2015.04.22 04:32:18 sell 0.20 gbpaud 1.92503 1.92244 1.91525 2015.04.22 04:54:06 1.92245 -1.49 0.00 0.00 40.07
37025 ZOG-1/16 R566/3.62 D39[0]
9232515 2015.04.22 04:32:18 sell 0.20 gbpaud 1.92503 1.92245 1.91516 2015.04.22 04:54:06 1.92245 -1.49 0.00 0.00 40.07
37025 ZOG-1/16 R566/3.62 D39[0;0][sl]
9232516 2015.04.22 04:32:19 sell 0.20 gbpaud 1.92503 1.92245 1.91517 2015.04.22 04:54:06 1.92245 -1.49 0.00 0.00 40.07
37025 ZOG-1/16 R566/3.62 D39[0;0][sl]
9232777 2015.04.22 07:33:24 sell 0.31 usdjpy 119.534 119.492 119.029 2015.04.22 08:25:19 119.492 -1.55 0.00 0.00 10.90
37025 ZOG-1/48 R91/2.73 D26[0;0][sl]
-26.90 0.00 0.00 391.76
Closed P/L: 364.86
Open Trades:
Ticket Open Time Type Size Item Price S / L T / P Price Commission Taxes Swap Profit
9232844 2015.04.22 08:22:39 buy 0.44 eurusd 1.07457 0.00000 0.00000 1.07411 -2.36 0.00 0.00 -20.24
37025 ZOG-6/51 R90/2.41 D32[-4]
-2.36 0.00 0.00 -20.24
Floating P/L: -22.60
Working Orders:
Ticket Open Time Type Size Item Price S / L T / P Market Price
No transactions
 

ansol

Местный знаток
Обратите внимание, в это время "попёрло", но почему в один момент несколько ордеров?!
 

xsyr

Местный житель
Покажите пожалуйста на каком-нибудь примере как в индикатор добавить автоматическую постройку линий по вершинам и днам в окне индикатора, чтобы можно было задать количество вершин
 
Последнее редактирование:

Alex108

Прохожий
Здравствуй. Подскажите, какие нужно сделать изменения в скрипте, чтобы он работал в MT4 build 765.
 

Вложения

  • !_SynchCharts.mq4
    9,9 КБ · Просмотры: 23

vladradon

Программист
Обратите внимание, в это время "попёрло", но почему в один момент несколько ордеров?!
Ну... это надо дополнительную проверку ставить для открытия ордеров типа:
if (OrdersTotal()<1 && OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
{
Функция открытия ордеров
}
Или прописать функцию проверки на открытые ордера типа:
int OrdersTotalMagic(int Magic)
{
int j=0;
int r;
for (r=0;r<OrdersTotal();r++)
{
if(OrderSelect(r,SELECT_BY_POS,MODE_TRADES))
{
if (OrderMagicNumber()==Magic) j++;
}
}
return(j);
}
- возвращает количество ордеров по меджику и добавляем проверку:
if (OrdersTotalMagic(Magic)<1)
{
Функция открытия ордера
}
Тут все от основного кода зависит. Если код с логикой, то, возможно, придется флаговые переменные вносить.
 
Последнее редактирование:

ansol

Местный знаток
Ну... это надо дополнительную проверку ставить для открытия ордеров типа:
if (OrdersTotal()<1 && OrderSymbol() == Symbol() && OrderMagicNumber()==magic)
Тут все от основного кода зависит. Если код с логикой, то, возможно, придется флаговые переменные вносить.

Количество ордеров не ограничивается, но в основном коде есть две проверки:
1. Смотрим все ордера и проверяем, чтобы было не ближе "ширины канала" в одну сторону
2. Проверяем, чтобы было не дальше "ширины канала" от High на покпке или от Low на продаже(это когда свеча откатывается назад и формируется шпиль у свечи длинный)

Все это работает на относительно спокойном рынке, а на быстром рынке похоже, что ордер "зависает" у ДЦ в ожидании обработки, сова "думает", что ордера нет и лепит еще раз.
В результате получаются ордера с нулевой или минимальной разницей.
Основной код совы я выложил выше, еще раз дам ссылку http://forexsystemsru.com/sovetniki-eksperty-foreks-roboty/79101-zigzag-i-sovetnik.html#post988027
 
Последнее редактирование:

matro3

Почетный гражданин
Не вижу код для открытия ордеров, попробуйте вот этот, может поможет:
_http://forum.mql4.com/ru/38949#434191
 
Последнее редактирование модератором:

vladradon

Программист
Количество ордеров не ограничивается, но в основном коде есть две проверки:
1. Смотрим все ордера и проверяем, чтобы было не ближе "ширины канала" в одну сторону
2. Проверяем, чтобы было не дальше "ширины канала" от High на покпке или от Low на продаже(это когда свеча откатывается назад и формируется шпиль у свечи длинный)

Все это работает на относительно спокойном рынке, а на быстром рынке похоже, что ордер "зависает" у ДЦ в ожидании обработки, сова "думает", что ордера нет и лепит еще раз.
В результате получаются ордера с нулевой или минимальной разницей.
Основной код совы я выложил выше, еще раз дам ссылку http://forexsystemsru.com/sovetniki-eksperty-foreks-roboty/79101-zigzag-i-sovetnik.html#post988027
Можно попробовать просто слип ввести после команд на открытие после 132 и 144 строк типа
if(numorder > -1) Sleep (3000);// Задержка 3 секунды
Можно ввести запрет на открытие больше одного ордера на одном баре:
datetime TimeCur; bool OpOrder=false;
if (TimeCur<Time[0])
{
TimeCur=Time[0];
OpOrder=true;
}
и, соответственно вводим саму проверку на открытие в строках 129 и 141:
if((fOpenBuy || fOpenBuy1) && OpOrder)...
if((fOpenSell || fOpenSell1) && OpOrder)...
а после 132 и 144 строк ставим запрет на открытие:
if(numorder > -1) OpOrder=false;
Можно еще добавить новостной индикатор типа этого:
_http://ruforum.mt5.com/threads/4926-novostnoy-indikator-urdala-news/page3
и отключать открытие ордеров в момент выхода новостей.
Пока больше ничего умного в голову не пришло.:)
 
Последнее редактирование:

ansol

Местный знаток
Ну вот, да, на одном баре можно ограничить, опять же - их всего-то 5 штук было, иногда бывает 3.
Чёрте что. Я читал, что в новых билдах сделали "параллельное" обращение к серверу, т.е. с одного клиента может идти много запросов, но не так же!
Все бы ниче, иногда с этого плюс нехилый бывает, но стратегия и тактика такого безобразия не предусматривает :(
 

vladradon

Программист
Ну вот, да, на одном баре можно ограничить, опять же - их всего-то 5 штук было, иногда бывает 3.
Чёрте что. Я читал, что в новых билдах сделали "параллельное" обращение к серверу, т.е. с одного клиента может идти много запросов, но не так же!
Все бы ниче, иногда с этого плюс нехилый бывает, но стратегия и тактика такого безобразия не предусматривает :(
Да, говорят многое о своих возможностях, но нужно быть реалистом и расчитывать на худшее. Многое еще зависит от типа счета (исполнения ордеров): если типа Instant, то еще проверку на реквоты нужно вводить, а по маркеру (скоростные счета), всегда плавающий спред и его тоже нужно учитывать и запрещать торговлю, если спред превышает какой-то заданный уровень, т.к в момент выхода новостей или в момент перехода с одного дня на другой (обычно в час ночи по Москве) спред может периодически превышать любой профит.
 
Верх