Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Предварительно создав соответствующий файл.
При такой реализации удобно/быстро, например, копировать массивы любых размерностей (и разных) друг в друга - без насилования HDD/SDD.
#define ARRAYCOPY(Dest, Source) \
if (ArraySize(Source) > 0) \
{ \
const int handleRAM = FileOpen("\\\\REN\\pipe\\RAM", FILE_READ | FILE_WRITE | FILE_BIN); \
\
if (handleRAM != INVALID_HANDLE) \
{ \
if (FileWriteArray(handleRAM, Source) > 0) \
FileReadArray(handleRAM, Dest); \
\
FileClose(handleRAM); \
} \
}
#define MATRIX_TO_VECTOR(Matrix, Vector) \
if (ArraySize(Matrix) > 0) \
{ \
const int Range1 = ArrayRange(Matrix, 0); \
const int Range2 = ArrayRange(Matrix, 1); \
\
ArrayResize(Vector, Range1 * Range2); \
\
int k = 0; \
\
for (int i = 0; i < Range1; i++) \
for (int j = 0; j < Range2; j++) \
{ \
Vector[k] = Matrix[i][j]; \
\
k++; \
} \
}
// Копирует одномерный массив в двумерный
#define VECTOR_TO_MATRIX(Vector, Matrix) \
if (ArraySize(Vector) > 0) \
{ \
const int Size = ArraySize(Vector); \
const int Range = ArrayRange(Matrix, 1); \
\
ArrayResize(Matrix, Size / Range + ((Size % Range == 0) ? 0 : 1)); \
\
for (int i = 0; i < Size; i++) \
Matrix[i / Range][i % Range] = Vector[i]; \
}
Смысл том, что в OnTradeTransaction() сработает не сразу после OrderSend.
Короче, здесь просто толпа любителей поспорить не вникнув в предмет спора.
Есть два варианта алгоритма, если после OrderSend() надо сразу что-то делать:
1. Врубить цикл ожидания обновления списков ордеров и сделок.
2. Завершить работу OnTick() и ждать срабатывания OnTradeTransaction().
3. По тикам проверять, появился ли новый ордер или сделка в списке.
Чем можно заменить четвёрошную MODE_MARGINREQUIRED в mql5 ?
Вот это нужно спрашивать у разработчиков, потому что ни один из форумчан этого не знает. Я задавал этот вопрос 4 раза в разных ветках, один раз даже получил ответ: "пользуйся поиском", но в поиске есть более 100 вопросов, и нет ни одного ответа. Разработчик на вопрос не отвечает, наверное по причине того, что в пятёрке нет возможности получить размер маржи по парам, отличным от валюты депозита.
Как-то всё сыро ещё в пятёрке, и похоже так оно и останется, зато есть всем нужный OpenGL =)
Чем можно заменить четвёрошную MODE_MARGINREQUIRED в mql5 ?
OrderCalcMargin() попробуйте
Это понятно, но оно не работает с индикатора
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
Comment(One_Lot); // залог на 1 лот
Это понятно, но оно не работает с индикатора
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),One_Lot);
Comment(One_Lot);
Об этом прямо в справке написано, что не работает из индикатора https://www.mql5.com/ru/docs/runtime/running
Хотелось бы расчёт, не зависимый от типа программы.
Ооо, мне тоже много чего хотелось бы :)