Ответ
 
Опции темы
29.01.2015, 09:01
Аватар для zpro
zpro Почётный гражданин
Регистрация: 07.10.2014 / Адрес: ЦО / Сообщений: 445
Поблагодарили 475 раз(а) / Репутация: 480
Сообщение от Palesandr Посмотреть сообщение
всем привет
помогите с кодом

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

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

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

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

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zpro вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 09:17
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от zpro Посмотреть сообщение
Проще посмотреть, какой остался
Почему это проще? Может всё-таки проще на глобальном уровне 2 переменные в которые засунуть тикеты ордеров и проверять по времени закрытия и профиту? Если > 0 открываем такой-же.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 09:23
Аватар для zpro
zpro Почётный гражданин
Регистрация: 07.10.2014 / Адрес: ЦО / Сообщений: 445
Поблагодарили 475 раз(а) / Репутация: 480
Сообщение от AlexeyVik Посмотреть сообщение
Почему это проще? Может всё-таки проще на глобальном уровне 2 переменные в которые засунуть тикеты ордеров и проверять по времени закрытия и профиту? Если > 0 открываем такой-же.
А если перезапустили терминал?!

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zpro вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 09:33
Аватар для vetallic
vetallic Местный знаток
Регистрация: 31.08.2010 / Сообщений: 352
Поблагодарили 509 раз(а) / Репутация: 511
Сообщение от Palesandr Посмотреть сообщение
как смотреть какой ордер закрылся (баевский или селловский)?
спасибо
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)
{пишем что делать если закрытый был бай}
}

как то так

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
vetallic вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 09:48
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от zpro Посмотреть сообщение
А если перезапустили терминал?!
В ините надо всё предусматривать и восстанавливать значения тех переменных.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 11:20
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от AlexeyVik Посмотреть сообщение
Сообщение от zpro
А если перезапустили терминал?!



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

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

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

Хоть за перепускася терминалом!
ansol на форуме Ответить с цитированиемОтветить с цитированием  
29.01.2015, 11:33
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от ansol Посмотреть сообщение
Хелп не любим читать ни разу, да?

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

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

Хоть за перепускася терминалом!
Я что-то не пойму, это ты кому такую реплику адресуешь? В твоей цитате и zpro и я. Если это мне сказано, то почитай внимательно мои слова. И не придумывай ничего о чём пытаешься спорить.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 11:58
Аватар для ansol
ansol Местный знаток
За призовое место в конкурсе 

Регистрация: 22.04.2010 / Сообщений: 2,016
Поблагодарили 855 раз(а) / Репутация: 841
Сообщение от AlexeyVik Посмотреть сообщение
Я что-то не пойму, это ты кому такую реплику адресуешь? В твоей цитате и zpro и я. Если это мне сказано, то почитай внимательно мои слова. И не придумывай ничего о чём пытаешься спорить.
К обоим. Один думет, что переменные сбрасываются, другой говорит, что надо какие-то меры принимать.
По-моему, я из хелпа выделил, что "оно само" 4 недели и ничё делать не надо.
Впрочем, ты лично уже ясно какой "программист", так что, да, к тебе больше не буду обращаться.
ansol на форуме Ответить с цитированиемОтветить с цитированием  
29.01.2015, 12:03
Аватар для zpro
zpro Почётный гражданин
Регистрация: 07.10.2014 / Адрес: ЦО / Сообщений: 445
Поблагодарили 475 раз(а) / Репутация: 480
Ну и ладно, все равно vetallic молодец ))

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zpro вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 12:05
Аватар для zpro
zpro Почётный гражданин
Регистрация: 07.10.2014 / Адрес: ЦО / Сообщений: 445
Поблагодарили 475 раз(а) / Репутация: 480
Сообщение от ansol Посмотреть сообщение
К обоим. Один думет, что переменные сбрасываются, другой говорит, что надо какие-то меры принимать.
По-моему, я из хелпа выделил, что "оно само" 4 недели и ничё делать не надо.
Впрочем, ты лично уже ясно какой "программист", так что, да, к тебе больше не буду обращаться.
Если ты об этих переменных "GlobalVariableSet", то у меня и мысли не было, что Алекс их предлагает использовать. Ибо это пушкой по тараканам. А у него вроде как опыт то есть.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zpro вне форума Ответить с цитированиемОтветить с цитированием  
29.01.2015, 12:33
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от ansol Посмотреть сообщение
К обоим. Один думет, что переменные сбрасываются, другой говорит, что надо какие-то меры принимать.
По-моему, я из хелпа выделил, что "оно само" 4 недели и ничё делать не надо.
Впрочем, ты лично уже ясно какой "программист", так что, да, к тебе больше не буду обращаться.
Ну если тебе лениво прокрутить страничку, я тебе повторю сказанное.
Сообщение от AlexeyVik Посмотреть сообщение
Почему это проще? Может всё-таки проще на глобальном уровне 2 переменные в которые засунуть тикеты ордеров и проверять по времени закрытия и профиту? Если > 0 открываем такой-же.
Теперь скажи где упоминание о GV значения которых сохраняются...
Вот уж действительно видно какой ты программист.

Последний раз редактировалось AlexeyVik; 29.01.2015 в 12:35.
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
30.01.2015, 09:40
Аватар для SIDOYY
SIDOYY Новичок форума
Регистрация: 22.06.2012 / Сообщений: 32
Поблагодарили 4 раз(а) / Репутация: 4
подскажите как исправить вот такую ошибку " 'maxlot_196' - undeclared identifier " ???
SIDOYY вне форума Ответить с цитированиемОтветить с цитированием  
30.01.2015, 09:55
Аватар для zpro
zpro Почётный гражданин
Регистрация: 07.10.2014 / Адрес: ЦО / Сообщений: 445
Поблагодарили 475 раз(а) / Репутация: 480
Сообщение от SIDOYY Посмотреть сообщение
подскажите как исправить вот такую ошибку " 'maxlot_196' - undeclared identifier " ???
объявить переменную, как-то так
double maxlot_196 = 100;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
zpro вне форума Ответить с цитированиемОтветить с цитированием  
30.01.2015, 11:52
Аватар для Gnn-life
Gnn-life Элитный участник
Регистрация: 09.04.2012 / Адрес: Питер / Сообщений: 515
Поблагодарили 1,042 раз(а) / Репутация: 1042
Всем привет)) Помогите, плиз, с функцией ограничения по спреду, если спред в данный момент больше чем указан в параметрах, то ордер не открывается. Очень надо, а то ДЦ совсем в последнее время обнаглели, расширяют спреды до нельзя.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Gnn-life вне форума Ответить с цитированиемОтветить с цитированием  
30.01.2015, 12:47
Регистрация: 09.08.2012 / Адрес: Ua_Khm / Сообщений: 1,758
Поблагодарили 9,123 раз(а) / Репутация: 9128
Сообщение от Gnn-life Посмотреть сообщение
Всем привет)) Помогите, плиз, с функцией ограничения по спреду, если спред в данный момент больше чем указан в параметрах, то ордер не открывается. Очень надо, а то ДЦ совсем в последнее время обнаглели, расширяют спреды до нельзя.
Я бы сделал так:
PHP код:
extern MaxSpread 15;  // максимально допустимый спред
//---
double Spread MarketInfo(Symbol(),MODE_SPREAD);   // получаем текущие значение спреда

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

if(trade==&& Ваше условие на открытие позиции); 
mobidik на форуме Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
DomovenokBrest (30.01.2015), Gnn-life (30.01.2015)
30.01.2015, 13:21
Аватар для Gnn-life
Gnn-life Элитный участник
Регистрация: 09.04.2012 / Адрес: Питер / Сообщений: 515
Поблагодарили 1,042 раз(а) / Репутация: 1042
Сообщение от mobidik Посмотреть сообщение
Я бы сделал так:
PHP код:
extern MaxSpread 15;  // максимально допустимый спред
//---
double Spread MarketInfo(Symbol(),MODE_SPREAD);   // получаем текущие значение спреда

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

if(trade==&& Ваше условие на открытие позиции); 
Спасибо mobidik) уже не в первый раз меня выручаешь)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Gnn-life вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
mobidik (30.01.2015)
30.01.2015, 19:14
Аватар для djasper
djasper Интересующийся
Регистрация: 26.03.2013 / Сообщений: 16
Поблагодарили 0 раз(а) / Репутация: 1
Помогите пожалуйста. Как прописать: если хай свечи впервые за день находится в диапазоне +-10п от хая прошлого дня тогда...
Миниатюры:
Нажмите на изображение для увеличения
Название: eurusdh1.png
Просмотров: 4
Размер:	4.8 Кб
ID:	194488  
djasper вне форума Ответить с цитированиемОтветить с цитированием  
30.01.2015, 20:36
Аватар для AlexeyVik
AlexeyVik Программист mql4 mql5
Регистрация: 19.11.2009 / Сообщений: 2,590
Поблагодарили 3,712 раз(а) / Репутация: 3708
Сообщение от djasper Посмотреть сообщение
Помогите пожалуйста. Как прописать: если хай свечи впервые за день находится в диапазоне +-10п от хая прошлого дня тогда...
if(MathAbs(iHigh(Symbol(), PERIOD_D1, 0) - iHigh(Symbol(), PERIOD_D1, 1)) < 10*_Point)
AlexeyVik вне форума Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
djasper (30.01.2015)
31.01.2015, 11:34
Аватар для Picasso
Picasso Местный знаток
Регистрация: 17.04.2013 / Адрес: город-герой ОДЕССА ★ / Сообщений: 388
Поблагодарили 651 раз(а) / Репутация: 652
  • Отправить сообщение для Picasso с помощью Skype™
Приветствую коллеги. Есть такой вопрос, как в самом простом подвальном индикаторе (любом) с одной линией, сделать визуализацию в виде стрелки, в том же подвале, если показания индюка выше отметки 0 - стрелка вверх или ниже - стрелка вниз.
Надеюсь на вашу помощь.
Picasso на форуме Ответить с цитированиемОтветить с цитированием  
31.01.2015, 18:00
Аватар для Milord
Milord Местный знаток
Регистрация: 26.03.2011 / Сообщений: 596
Поблагодарили 702 раз(а) / Репутация: 705

По умолчанию Вопрос знатокам MQL4 - я верно понимаю???


Всем Привет!
у меня вопрос относительно функции OrdersTotal(), я верно понимаю что отсчет открытых ордеров идет от 0 , а не от 1, то есть при 1ном открытом ордере, функция OrdersTotal()=0, если это так, то при 10 открытых ордерах, она покажет 9???
отсюда понятна путаница в кодах разных программистов, когда они считают число открытых ордеров или выбирают ордера в цикле
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--)

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

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 31.01.2015 в 18:06.
Milord вне форума Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 10:49. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO