Спасибо, Юрий. Ваш код я постараюсь использовать, но позже, поскольку его нужно разобрать и понять принцип работы. Выше описанный этап несложен, далее мне придется разобрать каждую пользовательскую функцию мистера "Н", а это имеет высшую степень сложности, соответственно займет много времени, от 3 до 10 часов (как говорят: - Один день. -).
Доработаю свой код, там "моя среда обитания" и изучать в ней нечего.
Еще раз благодарю, Юрий.
borilunad: 1 - Он ничего не может! 2 - Только хочет, чтобы ему написали! 3 - Объяснять бесполезно! 4 - Логика напрочь отсутствует! 5 - Неисправимый двоечник!
1 - Относительно - да. 2 - Помогли разобрать ситуацию. 3 - Совсем не бесполезно. 4 - Из - за того, что вам отвечаю - да. 5 - Окончил полугодие с пятью четверками, все остальные оценки - пять.
Вы нарушили правила форума, так же как и я. Сейчас ваш аккаунт достоин предупреждения, мой аккаунт достоин бана.
Прошу простить за нерациональные действия (ответ на критиканство).
Спасибо, Юрий. Ваш код я постараюсь использовать, но позже, поскольку его нужно разобрать и понять принцип работы. Выше описанный этап несложен, далее мне придется разобрать каждую пользовательскую функцию мистера "Н", а это имеет высшую степень сложности, соответственно займет много времени, от 3 до 10 часов (как говорят: - Один день. -).
Доработаю свой код, там "моя среда обитания" и изучать в ней нечего.
Еще раз благодарю, Юрий.
Для начала не обязательно вникать в код каждой функции. Достаточно разобраться с параметрами, которые используются в функции, её назначение и использование. Я собственно и сам то во внутренности каждой функции не вникал. А вникал только тогда, когда требовалось её в чём то изменить. Вот вы успешно в жизни используете мобильник, компьютер, телевизор, хотя детально их схемы и их работу не знаете, но это не мешает вам их использовать для своих целей. Так и здесь, главное уметь использовать эти функции. Вот здесь описаны все функции и их назначение. Как их использовать можно понять из тестов которые приведены для каждой функции. Становление вас как программиста произойдёт быстрее, если вы пойдёте по этому пути. А изобретательство своего велосипеда - это долгий и малопродуктивный путь. Строительство эксперта - по вашему варианту - это как строительство дома при отсутствии строительных материалов. Всё надо придумывать самому. Гораздо быстрее можно построить дом, когда есть строительные блоки(функции).
Подскажите, пожалуйста, функция AccountEquity() делает запрос к терминалу или к брокеру?
Вопрос вызван предположением, что вызов данной функции на каждом тике может вызвать раздражение у брокера (особенно при одновременном запуске советника на нескольких графиках) и, соответственно, блокировку счёта?
Подскажите, пожалуйста, функция AccountEquity() делает запрос к терминалу или к брокеру?
Вопрос вызван предположением, что вызов данной функции на каждом тике может вызвать раздражение у брокера (особенно при одновременном запуске советника на нескольких графиках) и, соответственно, блокировку счёта?
Да к брокеру конечно)))
Терминалу пофигу.... Даст Вам последние известные данные...
vadynik: Вопрос нужно ли передавать в функцию Magic или нет?
Это можно понять, если знать для чего нужен магил. А он нужен для того, чтобы эксперт мог отличать свои ордера от ордеров другого эксперта или ордеров открытых вручную. Если у вас установлено несколько ордеров бай-стоп и среди них есть разные магики или ручные ордера(без магика), то магил нужен для функции. И вообще лучше для универсализации функции магик как параметр для функции лучше задать. А по умолчанию сделать его к примеру равным -1.
khorosh: Для начала не обязательно вникать в код каждой функции. Достаточно разобраться с параметрами, которые используются в функции, с её назначение и использование. Я собственно и сам то во внутренности каждой функции не вникал. А вникал только тогда, когда требовалось её в чём то изменить. Вот вы успешно в жизни используете мобильник, компьютер, телевизор, хотя детально их схемы и их работу не знаете, но это не мешает вам их использовать для своих целей. Так и здесь, главное уметь использовать эти функции. Вот здесь описаны все функции и их назначение. Как их использовать можно понять из тестов которые приведены для каждой функции. Становление вас как программиста произойдёт быстрее, если вы пойдёте по этому пути. А изобретательство своего велосипеда - это долгий и малопродуктивный путь. Строительство эксперта - по вашему варианту - это как строительство дома при отсутствии строительных материалов. Всё надо придумывать самому. Гораздо быстрее можно построить дом, когда есть строительные блоки(функции).
Вы мудрый человек, умеющий объяснить и переубедить если это потребуется. :) На том я снова вас благодарю.
В таком случае, оставляю построение дома из органоидов эукариотических клеток и использую для его построения обыкновенные строй - материалы.
Посмотрите пожалуйста две функции на наличие ошибок в них.
Суть первой: должна рассчитывать лот необходимый для выхода из просадки после закрытия сетки ордеров (открытых по мартину) если цена пройдет определенное количество пунктов (TP-к-во пунктов) в нужную сторону.
Суть второй: должна закрывать половину ордеров сетки начиная с самого старого.
double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после //закрытия сетки ордеров
{
double Lot=0; double TotalLot=0;
for (int i = OrdersTotal()-1; i>0; i--)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
{
if (otype == OP_BUY)
{
Lot = NormalizeDouble ((OrderOpenPrice()-Bid)*OrderLots()/TP,2);
if (Lot>0)
{
TotalLot= NormalizeDouble (TotalLot+Lot,2);
}
}
elseif (otype == OP_SELL)
{
Lot = NormalizeDouble ((Ask-OrderOpenPrice())*OrderLots()/TP,2);
if (Lot>0)
{
TotalLot= NormalizeDouble (TotalLot+Lot,2);
}
}
}
}
}
return (TotalLot);
}
//+------------------------------------------------------------------+void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
int count = 0;
for (int i = 0; i<= OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
{
if (otype == OP_BUY)
{
if (count<CountTrades(OP_BUY)/2 && CountTrades(OP_BUY)>3 )
OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
count++;
}
elseif (otype == OP_SELL)
{
if (count<CountTrades(OP_SELL)/2 && CountTrades(OP_SELL)>3)
OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
count++;
}
}
}
}
}
Я наверно не совсем точно задал вопрос, я имею в виду увидит ли функция магик который задан в глобальной переменной
или его надо передавать в функцию, хотя подозреваю не надо раз он глобальный
Если в глобальной переменной, то да увидит. Но функция должна обладать универсальностью и работать не с одним магиком, а для этого лучше его передавать в виде параметра функции.
Спасибо, Юрий.
Ваш код я постараюсь использовать, но позже, поскольку его нужно разобрать и понять принцип работы.
Выше описанный этап несложен, далее мне придется разобрать каждую пользовательскую функцию мистера "Н", а это имеет высшую степень сложности, соответственно займет много времени, от 3 до 10 часов (как говорят: - Один день. -).
Доработаю свой код, там "моя среда обитания" и изучать в ней нечего.
Еще раз благодарю, Юрий.
1 - Он ничего не может! 2 - Только хочет, чтобы ему написали! 3 - Объяснять бесполезно! 4 - Логика напрочь отсутствует! 5 - Неисправимый двоечник!
1 - Относительно - да.
2 - Помогли разобрать ситуацию.
3 - Совсем не бесполезно.
4 - Из - за того, что вам отвечаю - да.
5 - Окончил полугодие с пятью четверками, все остальные оценки - пять.
Вы нарушили правила форума, так же как и я.
Сейчас ваш аккаунт достоин предупреждения, мой аккаунт достоин бана.
Прошу простить за нерациональные действия (ответ на критиканство).
Спасибо, Юрий.
Ваш код я постараюсь использовать, но позже, поскольку его нужно разобрать и понять принцип работы.
Выше описанный этап несложен, далее мне придется разобрать каждую пользовательскую функцию мистера "Н", а это имеет высшую степень сложности, соответственно займет много времени, от 3 до 10 часов (как говорят: - Один день. -).
Доработаю свой код, там "моя среда обитания" и изучать в ней нечего.
Еще раз благодарю, Юрий.
Добрый день!
Подскажите, пожалуйста, функция AccountEquity() делает запрос к терминалу или к брокеру?
Вопрос вызван предположением, что вызов данной функции на каждом тике может вызвать раздражение у брокера (особенно при одновременном запуске советника на нескольких графиках) и, соответственно, блокировку счёта?
Добрый день!
Подскажите, пожалуйста, функция AccountEquity() делает запрос к терминалу или к брокеру?
Вопрос вызван предположением, что вызов данной функции на каждом тике может вызвать раздражение у брокера (особенно при одновременном запуске советника на нескольких графиках) и, соответственно, блокировку счёта?
Да к брокеру конечно)))
Терминалу пофигу.... Даст Вам последние известные данные...
Вопрос нужно ли передавать в функцию Magic или нет?
Это можно понять, если знать для чего нужен магил. А он нужен для того, чтобы эксперт мог отличать свои ордера от ордеров другого эксперта или ордеров открытых вручную. Если у вас установлено несколько ордеров бай-стоп и среди них есть разные магики или ручные ордера(без магика), то магил нужен для функции. И вообще лучше для универсализации функции магик как параметр для функции лучше задать. А по умолчанию сделать его к примеру равным -1.
А вообще поскольку код вашей функции определяет цену установки только первого в цикле for ордера бай-стоп, то и сам цикл в принципе не нужен.
Для начала не обязательно вникать в код каждой функции. Достаточно разобраться с параметрами, которые используются в функции, с её назначение и использование. Я собственно и сам то во внутренности каждой функции не вникал. А вникал только тогда, когда требовалось её в чём то изменить. Вот вы успешно в жизни используете мобильник, компьютер, телевизор, хотя детально их схемы и их работу не знаете, но это не мешает вам их использовать для своих целей. Так и здесь, главное уметь использовать эти функции. Вот здесь описаны все функции и их назначение. Как их использовать можно понять из тестов которые приведены для каждой функции. Становление вас как программиста произойдёт быстрее, если вы пойдёте по этому пути. А изобретательство своего велосипеда - это долгий и малопродуктивный путь. Строительство эксперта - по вашему варианту - это как строительство дома при отсутствии строительных материалов. Всё надо придумывать самому. Гораздо быстрее можно построить дом, когда есть строительные блоки(функции).
Вы мудрый человек, умеющий объяснить и переубедить если это потребуется. :)
На том я снова вас благодарю.
В таком случае, оставляю построение дома из органоидов эукариотических клеток и использую для его построения обыкновенные строй - материалы.
Посмотрите пожалуйста две функции на наличие ошибок в них.
Суть первой: должна рассчитывать лот необходимый для выхода из просадки после закрытия сетки ордеров (открытых по мартину) если цена пройдет определенное количество пунктов (TP-к-во пунктов) в нужную сторону.
Суть второй: должна закрывать половину ордеров сетки начиная с самого старого.
Подскажите, пожалуйста, функция AccountEquity() делает запрос к терминалу или к брокеру?
Я наверно не совсем точно задал вопрос, я имею в виду увидит ли функция магик который задан в глобальной переменной
или его надо передавать в функцию, хотя подозреваю не надо раз он глобальный