[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 567
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Еще вопрос от начинающего.
В своем эксперте использую несколько пользовательских функций. Как можно сделать, чтобы эти функции обьединить в библиотеку, а в теле самого эксперта просто вызывать их оттуда.
Не знаком с синтаксисом языка в этом отношении.
Направьте пожалуйста на раздел документации или учебника. Не нашел там подобного.
https://book.mql4.com/ru/build/structure
https://www.mql5.com/ru/articles/1462
+ до кучи... https://book.mql4.com/ru/appendix/examples
Как написать функцию, которая проверяла есть или были открыты позы на нулевом баре (желателно чтобы был выбор таимфрейма. OpenPosLastBar(string sym="", int tf=0, int op=-1, int mn=-1), или эта функция то делает. Как я понял, то она толко открытые позы в данный момент, а если была открыта и уже закрыта, то вернет -1.
//+----------------------------------------------------------------------------+
//| Возвращает номер бара открытия последней позиции или -1. |
//| Параметры: |
//| sym - наименование инструмента ("" - текущий символ) |
//| tf - таймфрейм ( 0 - текущий таймфрейм) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//+----------------------------------------------------------------------------+
int NumberOfBarLastPos(string sym="", int tf=0, int op=-1, int mn=-1)
{
datetime oot;
int i, k=OrdersTotal();
if(sym=="")
sym=Symbol();
for(i=0; ik; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==sym)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op0 || OrderType()==op)
{
if(mn0 || OrderMagicNumber()==mn)
{
if(ootOrderOpenTime()) oot=OrderOpenTime();
}
}
}
}
}
}
return(iBarShift(sym, tf, oot, True));
}
//+----------------------------------------------------------------------------+
Нужно два цикла. В первом проходим по истории ордеров, во втором - по текущим ордерам. В обоих случаях если время открытия ордера больше или равно Time[0], то ордер был открыт на текущей свече. Это справедливо для всех таймфреймов.
Спадибо, что аткликнулся. А можно попросить это в коде
Спадибо, что аткликнулся. А можно попросить это в коде
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
ObjectDelete(a_name_0);
ObjectCreate(a_name_0, OBJ_ARROW, a_window_8, a_datetime_12, a_price_20);
ObjectSet(a_name_0, OBJPROP_ARROWCODE, ai_28);
ObjectSet(a_name_0, OBJPROP_COLOR, a_color_32);
ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_36);
}
void _setabuy(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), Bid + 15.0 * Point, SYMBOL_ARROWUP, Blue, 2);
gi_120++;
}
void _setasell(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), Bid - 15.0 * Point, SYMBOL_ARROWDOWN, Red, 2);
gi_120++;
}
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Спасибо. Попробую.
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Или вот функция, которая проверяет открывались ли позы на текущем баре (с проверкой по OrdersTotal() и OrdersHistoryTotal() ). Возвращает true если ордер Type открывался.
Скажите пожалуйста, как реализовать условие.-
If( есть отложенные ордера) то делаем то и то ;