[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 292
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте.
Помогите разобраться плз, что я не так делаю.
Условно: 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.