Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 383

 
clubsmi:

люди подскажите пожалуйста, как в MQL4 считать проценты

к примеру x=10+3% как это записать програмно?

чтото в справочнике немагу найти.



x=10*1.03
 
r772ra:


x=10*1.03



ок! но Я же небуду каждый раз их пересчитывать, нужна функция которая сама считает проценты

y=3; // чило постоянно меняется с каждым тиком

x=10+yP; // вместо P нужны проценты. а в mql я немагу их написать

 
if(Line_7 > Lines_1 && Lines_1 > Line_6)
{
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,0,0);
}
if(AccountProfit() > 50)
{ 
OrderClose(Symbol(),5,Ask,0);
}
Логическая цепочка кода:

1 Если линия 7 выше линии 1, при этом линия 1 выше линии 6,
2 то
3 открывается ордер на покупку с объемом Lots_Typ, возможным проскальзыванием в 5 пунктов, без СЛ и ТП, по цене закрытия.

1 Если потенциальная прибыль данного счета больше 50 $,
2 то
3 закрываются все ордера, независимо от того, какими свойствами они обладают (объем, покупка/продажа, ...).

Логическая цепочка выстроена правильно, а код по логической цепочки - нет.

OrderClose(Symbol(),5,Ask,0);
Ошибка заключается здесь.
Если строить логическую цепочку, относительно выше представленного кода, получим:
Закрытие 5 лотов ордера с ценой закрытия и возможным проскальзыванием в 0 пунктов.

Как это исправить? Посоветуйте пожалуйста.
 
clubsmi:



ок! но Я же небуду каждый раз их пересчитывать, нужна функция которая сама считает проценты

y=3; // чило постоянно меняется с каждым тиком

x=10+yP; // вместо P нужны проценты. а в mql я немагу их написать

по отношению к чему?
 
clubsmi:



ок! но Я же небуду каждый раз их пересчитывать, нужна функция которая сама считает проценты

y=3; // чило постоянно меняется с каждым тиком

x=10+yP; // вместо P нужны проценты. а в mql я немагу их написать

//+----------------------------------------------------------------------------+
double Percent(double x, double y) {return(x*0.01*y);}
//+----------------------------------------------------------------------------+

x - число, y - нужный процент

передаём число x и нужный от него процент y, на выходе получаем процент y от числа x

 
Link_x:
Логическая цепочка кода:

1 Если линия 7 выше линии 1, при этом линия 1 выше линии 6,
2 то
3 открывается ордер на покупку с объемом Lots_Typ, возможным проскальзыванием в 5 пунктов, без СЛ и ТП, по цене закрытия.

1 Если потенциальная прибыль данного счета больше 50 $,
2 то
3 закрываются все ордера, независимо от того, какими свойствами они обладают (объем, покупка/продажа, ...).

Логическая цепочка выстроена правильно, а код по логической цепочки - нет.

Ошибка заключается здесь.
Если строить логическую цепочку, относительно выше представленного кода, получим:
Закрытие 5 лотов ордера с ценой закрытия и возможным проскальзыванием в 0 пунктов.

Как это исправить? Посоветуйте пожалуйста.

Уважаемый, читайте внимательно Документацию,

конкретно

bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Закрытие позиции. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Параметры:
ticket - Уникальный порядковый номер ордера.
lots - Количество лотов для закрытия.
price - Цена закрытия.
slippage - Значение максимального проскальзывания в пунктах.
Color - Цвет стрелки закрытия на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображается.
Пример:
  if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75)
    {
     OrderClose(order_id,1,Ask,3,Red);
     return(0);
    }

 
r772ra:

Уважаемый, читайте внимательно Документацию,

конкретно

bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Закрытие позиции. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().
Параметры:
ticket - Уникальный порядковый номер ордера.
lots - Количество лотов для закрытия.
price - Цена закрытия.
slippage - Значение максимального проскальзывания в пунктах.
Color - Цвет стрелки закрытия на графике. Если параметр отсутствует или его значение равно CLR_NONE, то стрелка на графике не отображается.
Пример:

Все это я знаю.
Как сделать так, что бы закрывались все ордера, независимо от их особенностей?
 
Link_x:
Все это я знаю.
Как сделать так, что бы закрывались все ордера, независимо от их особенностей?

Знаешь молодец,

OrderClose(Symbol(),5,Ask,0) //зто твое

OrderClose(order_id,1,Ask,3,Red); // А зто пример из документации

// Найди отличие
 
artmedia70:

x - число, y - нужный процент

передаём число x и нужный от него процент y, на выходе получаем процент y от числа x



то что нужно, спасибо Вам большое... оказывается как все легко, а Я блин пол дня голову ламаю!! еще раз спасибо!

 
r772ra:

Знаешь молодец,


В моем примере: случайный номер ордера, объем - 5, по цене закрытия, с проскальзыванием 0, без стрелки.
В документационном примере: расчет номера ордера по order_id, обьем 1, по цене закрытия, с проскальзыванием 3, стрелка имеет красный цвет.

1 имеется расчет номера ордера - не имеется расчет номера ордера
2 объем (1) - объем (5)
3 проскальзывание (3) - проскальзывание (0)
4 стрелка красного цвета - стрелки нет

Отличия найдены.
Теперь вернемся к задаче.

Задача 1
Написать код, который будет закрывать все открытые ордера без исключений.

Мои рассуждения.
Такой код возможно написать, но встает вопрос: "Как?".
1 - создается код, который ведет наблюдение за всеми открытыми ордерами (общий объем, номер кластера ордеров, покупка/продажа, допустимое проскальзывание).
2 - создается код, который открывает ордера и отправляет данные в код, который ведет наблюдение за всеми этими ордерами (создается своеобразная база данных).
3 - создается код, который закрывает все ордера, при определенных условиях и берет только не использованные данные из "своеобразной базы данных".
Повторно данные не используются.

Можно сделать так, но думаю, что есть другой, менее громоздкий вариант.
Потому и спрашиваю: "Как?".