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

zpro

Почетный гражданин
всем привет
помогите с кодом

ТП фиксированный, без СЛ, лот фиксированный

открывается сразу два ордера, бай и селл. если, к примеру, бай закрылся по тейку, то открывается новый бай-ордер. если снова закрылся бай по тейку, то снова открываем бай-ордер.

вот такая простая логика.

как реализовать в коде? как смотреть какой ордер закрылся (баевский или селловский)?

спасибо

Проще посмотреть, какой остался :D
 

AlexeyVik

Программист mql4 mql5
Проще посмотреть, какой остался :D
Почему это проще? Может всё-таки проще на глобальном уровне 2 переменные в которые засунуть тикеты ордеров и проверять по времени закрытия и профиту? Если > 0 открываем такой-же.
 

zpro

Почетный гражданин
Почему это проще? Может всё-таки проще на глобальном уровне 2 переменные в которые засунуть тикеты ордеров и проверять по времени закрытия и профиту? Если > 0 открываем такой-же.

А если перезапустили терминал?!
 

vetallic

Местный знаток
как смотреть какой ордер закрылся (баевский или селловский)?
спасибо

void CheckLastOrderType()
{
int orderType = -1;
int orderId = -1;
datetime lastCloseTime = 0;
int cnt = OrdersHistoryTotal();
for (int i=0; i < cnt; i++)
{
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
if (OrderSymbol() == Symbol() && lastCloseTime < OrderCloseTime() && orderId == магик №)
{
lastCloseTime = OrderCloseTime();
orderType = OrderType();
orderId = OrderMagicNumber();
}
}
if (orderType == OP_SELL)
{пишем что делать если закрытый был селл}
if (orderType == OP_BUY)
{пишем что делать если закрытый был бай}
}

как то так ;)
 

ansol

Местный знаток
Сообщение от zpro
А если перезапустили терминал?!



В ините надо всё предусматривать и восстанавливать значения тех переменных.
Хелп не любим читать ни разу, да? :D

Не следует путать глобальные переменные клиентского терминала с переменными, объявленными на глобальном уровне mql4-программы.

Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются. Обращением к глобальной переменной считается не только установка нового значения, но и чтение значения глобальной переменной.

Хоть за перепускася терминалом!:laugh:
 

AlexeyVik

Программист mql4 mql5
Хелп не любим читать ни разу, да? :D

Не следует путать глобальные переменные клиентского терминала с переменными, объявленными на глобальном уровне mql4-программы.

Глобальные переменные существуют в клиентском терминале 4 недели с момента последнего обращения, после этого автоматически уничтожаются. Обращением к глобальной переменной считается не только установка нового значения, но и чтение значения глобальной переменной.

Хоть за перепускася терминалом!:laugh:
Я что-то не пойму, это ты кому такую реплику адресуешь? В твоей цитате и zpro и я. Если это мне сказано, то почитай внимательно мои слова. И не придумывай ничего о чём пытаешься спорить.
 

ansol

Местный знаток
Я что-то не пойму, это ты кому такую реплику адресуешь? В твоей цитате и zpro и я. Если это мне сказано, то почитай внимательно мои слова. И не придумывай ничего о чём пытаешься спорить.

К обоим. Один думет, что переменные сбрасываются, другой говорит, что надо какие-то меры принимать.
По-моему, я из хелпа выделил, что "оно само" 4 недели и ничё делать не надо.
Впрочем, ты лично уже ясно какой "программист", так что, да, к тебе больше не буду обращаться.
 

zpro

Почетный гражданин
Ну и ладно, все равно vetallic молодец ))

А Ансол сумничал )) хоть и о своем ))
 

zpro

Почетный гражданин
К обоим. Один думет, что переменные сбрасываются, другой говорит, что надо какие-то меры принимать.
По-моему, я из хелпа выделил, что "оно само" 4 недели и ничё делать не надо.
Впрочем, ты лично уже ясно какой "программист", так что, да, к тебе больше не буду обращаться.

Если ты об этих переменных "GlobalVariableSet", то у меня и мысли не было, что Алекс их предлагает использовать. Ибо это пушкой по тараканам. А у него вроде как опыт то есть.
 

AlexeyVik

Программист mql4 mql5
К обоим. Один думет, что переменные сбрасываются, другой говорит, что надо какие-то меры принимать.
По-моему, я из хелпа выделил, что "оно само" 4 недели и ничё делать не надо.
Впрочем, ты лично уже ясно какой "программист", так что, да, к тебе больше не буду обращаться.
Ну если тебе лениво прокрутить страничку, я тебе повторю сказанное.
Почему это проще? Может всё-таки проще на глобальном уровне 2 переменные в которые засунуть тикеты ордеров и проверять по времени закрытия и профиту? Если > 0 открываем такой-же.
Теперь скажи где упоминание о GV значения которых сохраняются...o_o
Вот уж действительно видно какой ты программист.
 
Последнее редактирование:

SIDOYY

Новичок форума
подскажите как исправить вот такую ошибку " 'maxlot_196' - undeclared identifier " ???
 

Gnn-life

Местный знаток
Всем привет)) Помогите, плиз, с функцией ограничения по спреду, если спред в данный момент больше чем указан в параметрах, то ордер не открывается. Очень надо, а то ДЦ совсем в последнее время обнаглели, расширяют спреды до нельзя.:)
 

mobidik

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

Я бы сделал так:
PHP:
extern MaxSpread = 15;  // максимально допустимый спред
//---
double Spread = MarketInfo(Symbol(),MODE_SPREAD);   // получаем текущие значение спреда

if(Spread>MaxSpread) int trade = 0; else trade = 1; // при 1 - можно торговать

if(trade==1 && Ваше условие на открытие позиции);
 

Gnn-life

Местный знаток
Я бы сделал так:
PHP:
extern MaxSpread = 15;  // максимально допустимый спред
//---
double Spread = MarketInfo(Symbol(),MODE_SPREAD);   // получаем текущие значение спреда

if(Spread>MaxSpread) int trade = 0; else trade = 1; // при 1 - можно торговать

if(trade==1 && Ваше условие на открытие позиции);

Спасибо mobidik) уже не в первый раз меня выручаешь)
 

djasper

Интересующийся
Помогите пожалуйста. Как прописать: если хай свечи впервые за день находится в диапазоне +-10п от хая прошлого дня тогда...
 

Вложения

  • eurusdh1.png
    eurusdh1.png
    4,8 КБ · Просмотры: 14

Picasso

Местный знаток
Приветствую коллеги. Есть такой вопрос, как в самом простом подвальном индикаторе (любом) с одной линией, сделать визуализацию в виде стрелки, в том же подвале, если показания индюка выше отметки 0 - стрелка вверх или ниже - стрелка вниз.
Надеюсь на вашу помощь.
 

Milord

Местный знаток
Вопрос знатокам MQL4 - я верно понимаю???

Всем Привет!
у меня вопрос относительно функции OrdersTotal(), я верно понимаю что отсчет открытых ордеров идет от 0 , а не от 1, то есть при 1ном открытом ордере, функция OrdersTotal()=0, если это так, то при 10 открытых ордерах, она покажет 9???:facepalm:
отсюда понятна путаница в кодах разных программистов, когда они считают число открытых ордеров или выбирают ордера в цикле
fot(int i=0;i<OrdersTotal();i++) или лучше так?
fot(int i=0;i=OrdersTotal();i++)


еще вопрос - есть ли разница в работе советника если перебирать ордера наоборот, вот так:
fot(int i<OrdersTotal();i=0;i--)
или вот так:
for(int i=OrdersTotal()-1; i>=0; i--)

напишите плиз понятно где ошибки в каких вариантах циклов по выбору ордеров, и в чем именно ошибки, и есть ли разница в работе если ошибок нету, при прямом переборе и обратном???
ЗАРАНЕЕ СПАСИБО!
 
Последнее редактирование:
Верх