Здравствуйте, у меня в терминале мт4 когда нажимаю на кнопку одной из валютных пар , которая находится сразу под терминалом например (eurusd) , чтобы открыть окно терминала именно с этой парой , при открытии окно сворачивается в маленькое , и нужно его разворачевать в правом верхнем углу , раньше такого не было , подскажите почему так получается и как исправить ?
Подчеркнутое выражение возвращает десятичный логарифм (логарифм по основанию 10) для bd_LOTSTEP, тоесть показывает в какую степень надо возвести 10 чтобы получить bd_LOTSTEP.
Как можно вывести на графике надпись по текущему инструменту Прибыль/убыток открытых ордеров.
Сложно осуществлять проверку в эксперте, открывал ли он позиции или нет (включение/выключение терминала) и чтобы подхватывал последний объем лота до закрытия терминала.
Если ошибаюсь, то извиняюсь. MathLog(x) - это ln(x) (натуральный логарифм). Формула перевода на другое основание - log_a(b)=ln(b)/ln(a), в данном случае получаем ln(x)/ln(10)=lg(x) (десятичный логарифм). Целая часть десятичного логарифма lg(1...9) равна 0, lg(10...99) равна 1, lg(100...999) равна 2, lg(1000...9999) равна 3 и так далее, т.е. значение логарифма числа больше единицы равно количеству цифр в этом числе (до запятой, после не считаем) минус один. Если икс от 0 до единицы, то целая часть lg(0,1...0,9) равна -1, lg(0,01...0,09) равна -2, lg(0,001...0,009) равна -3 и так далее, то есть если не смотреть на минус, десятичный логарифм числа от 0 до единицы равен общему количеству нулей до первой значащей цифры. Я не знаю, как работает MathCeil, но если она возвращает целую часть числа, то эта функция по идее возвращает количество цифр в числе до запятой минус один, если число больше 1, и количество нулей в числе до первой значащей цифры, если число от 0 до единицы. Минимум этой функции находится в диапазоне икс равным 1...9. Дальше при 10...99 и 0,1...0,9 функция равна 1, при 100...999 и 0,01...0,09 равна 2 и так далее. По идее...
День добрый, косяк какой-то в программе, голову сломал уже, ткните пожста пальцем что не так. Просто хочу знать почему не работает условие для modifi. Даже если условие не истино, все равно оно выполняется и соответственно при модификации выскакивают ошибки либо 1, либо 130. Всем спасибо.
//---------------модификация ордеров под TP------------------- for (i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) { if (OrderTakeProfit() == 0 || OrderTakeProfit() > OprTPB(TP)){ RefreshRates(); OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPB(TP),0,CLR_NONE); } } if ((OrderType() == OP_SELL)) { if (OrderTakeProfit() == 0 || OrderTakeProfit() < OprTPS(TP)){ RefreshRates(); OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPS(TP),0,CLR_NONE); } } } } return(0); }
double LastOpPrBuy(double va=0) { for (i = OrdersTotal() - 1; i>= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (va == 0) va = OrderOpenPrice(); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) if (OrderType() == OP_BUY && OrderOpenPrice()<va) va = OrderOpenPrice(); } return (va); } //---------------------------------------------------------------------------------- double LastOpPrSell(double va=0) { for (i = OrdersTotal() - 1; i>= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (va == 0) va = OrderOpenPrice(); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) if (OrderType() == OP_SELL && OrderOpenPrice()>va) va = OrderOpenPrice(); } return (va); } //---------------------------------------------------------------------------------- double OprTPB(int TP) { int j=0; double TPB=0; for (i = OrdersTotal() - 1; i>= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) if (OrderType() == OP_BUY) { TPB+=OrderOpenPrice(); j++; } } if (j==0) { j++; TPB = Ask; } TPB=(TPB/j)+TP*Point; return (TPB); } //---------------------------------------------------------------------------------- double OprTPS(int TP) { int j=0; double TPS=0; for (i = OrdersTotal() - 1; i>= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue; if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) if (OrderType() == OP_SELL) { TPS+=OrderOpenPrice(); j++; } } if (j==0) { j++; TPS = Bid; } TPS=(TPS/j)-TP*Point; return (TPS); } //----------------------------
borilunad: Да все мы тут новички! Не видите, что простых вещей не знаем! Где нам ещё выяснять! По крайней мере, мы хотим знать, не то, что как некоторые думают, что только спросят, чтобы вставить в код и сразу деньги качать!
))) Из трейдерского юмора:
- Подскажите где прибыльный советник скачать!
- Поищи где-то выше в теме, там выкладывали робота, называется @MOZG@v4.12.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Здравствуйте.
Помогите разобраться плз, что я не так делаю.
Условно: Ask = 1.3000
PriceAsk = 1.3055 (в т.ч. где Step=50 и Srpead=3)
bool BuyOrder=1,
if (Ask-PriceAsk+Step-Spread<=0 && BuyOrder==0) почему это условие считается истинным??Непосредственно перед оператором if выведите в лог значения всех переменных присутствующих в условии
Непосредственно перед оператором if выведите в лог значения всех переменных присутствующих в условии
Проверимс, спасибо)
А теперь вывод
Хочу понять как она работает. Потому и спросил.
GaryKa:
Непосредственно перед оператором if выведите в лог значения всех переменных присутствующих в условии
ed3sss:
Проверимс, спасибо)
Спасибки, нашел логическую ошибку в программе, теперь все работает.
Здравствуйте.
Как можно вывести на графике надпись по текущему инструменту Прибыль/убыток открытых ордеров.
Сложно осуществлять проверку в эксперте, открывал ли он позиции или нет (включение/выключение терминала) и чтобы подхватывал последний объем лота до закрытия терминала.
Спасибо.
Просто мне тут попалась функция:
Хочу понять как она работает. Потому и спросил.Если ошибаюсь, то извиняюсь. MathLog(x) - это ln(x) (натуральный логарифм). Формула перевода на другое основание - log_a(b)=ln(b)/ln(a), в данном случае получаем ln(x)/ln(10)=lg(x) (десятичный логарифм). Целая часть десятичного логарифма lg(1...9) равна 0, lg(10...99) равна 1, lg(100...999) равна 2, lg(1000...9999) равна 3 и так далее, т.е. значение логарифма числа больше единицы равно количеству цифр в этом числе (до запятой, после не считаем) минус один. Если икс от 0 до единицы, то целая часть lg(0,1...0,9) равна -1, lg(0,01...0,09) равна -2, lg(0,001...0,009) равна -3 и так далее, то есть если не смотреть на минус, десятичный логарифм числа от 0 до единицы равен общему количеству нулей до первой значащей цифры. Я не знаю, как работает MathCeil, но если она возвращает целую часть числа, то эта функция по идее возвращает количество цифр в числе до запятой минус один, если число больше 1, и количество нулей в числе до первой значащей цифры, если число от 0 до единицы. Минимум этой функции находится в диапазоне икс равным 1...9. Дальше при 10...99 и 0,1...0,9 функция равна 1, при 100...999 и 0,01...0,09 равна 2 и так далее. По идее...
День добрый, косяк какой-то в программе, голову сломал уже, ткните пожста пальцем что не так. Просто хочу знать почему не работает условие для modifi. Даже если условие не истино, все равно оно выполняется и соответственно при модификации выскакивают ошибки либо 1, либо 130. Всем спасибо.
//---------------модификация ордеров под TP-------------------
for (i = OrdersTotal() - 1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {
if (OrderType() == OP_BUY) {
if (OrderTakeProfit() == 0 || OrderTakeProfit() > OprTPB(TP)){
RefreshRates();
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPB(TP),0,CLR_NONE);
}
}
if ((OrderType() == OP_SELL)) {
if (OrderTakeProfit() == 0 || OrderTakeProfit() < OprTPS(TP)){
RefreshRates();
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OprTPS(TP),0,CLR_NONE);
}
}
}
}
return(0);
}
double LastOpPrBuy(double va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (va == 0) va = OrderOpenPrice();
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_BUY && OrderOpenPrice()<va) va = OrderOpenPrice();
}
return (va);
}
//----------------------------------------------------------------------------------
double LastOpPrSell(double va=0)
{
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (va == 0) va = OrderOpenPrice();
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_SELL && OrderOpenPrice()>va) va = OrderOpenPrice();
}
return (va);
}
//----------------------------------------------------------------------------------
double OprTPB(int TP)
{
int j=0;
double TPB=0;
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_BUY)
{
TPB+=OrderOpenPrice();
j++;
}
}
if (j==0) {
j++;
TPB = Ask;
}
TPB=(TPB/j)+TP*Point;
return (TPB);
}
//----------------------------------------------------------------------------------
double OprTPS(int TP)
{
int j=0;
double TPS=0;
for (i = OrdersTotal() - 1; i>= 0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
if (OrderType() == OP_SELL)
{
TPS+=OrderOpenPrice();
j++;
}
}
if (j==0) {
j++;
TPS = Bid;
}
TPS=(TPS/j)-TP*Point;
return (TPS);
}
//----------------------------
Да все мы тут новички! Не видите, что простых вещей не знаем! Где нам ещё выяснять! По крайней мере, мы хотим знать, не то, что как некоторые думают, что только спросят, чтобы вставить в код и сразу деньги качать!
))) Из трейдерского юмора:
- Подскажите где прибыльный советник скачать!
- Поищи где-то выше в теме, там выкладывали робота, называется @MOZG@v4.12.