Как добавить в код.Доп условие для выхода с позы ??? - страница 2

 
Panzer писал (а) >>

Вроде помогло.

Осталось ток еще прикрутить ему что бы один ордер был в работе.

А то понаоткрывает тучу ордеров.

Спасиб.

Вот здесь можно взглянуть, как это сделать

https://www.mql5.com/ru/forum/107476/page18#78397

Функция NumberOfPositions().

Эта функция возвращает количество открытых в данный момент позиций. Более точный отбор подсчитываемых позиций задаётся внешними параметрами

if   (NumberOfPositions(NULL, -1, -1) <=0) { //если нет откр. позиций, открываем
 

)))))))))))))))))))

Ну что могу сказать трейдера юмористы.

 
rid писал (а) >>

Вот здесь можно взглянуть, как это сделать

'Полезные функции от KimIV'

Функция NumberOfPositions().

Эта функция возвращает количество открытых в данный момент позиций. Более точный отбор подсчитываемых позиций задаётся внешними параметрами

У мну тут еще ляп выявился (

Мож поможеш ;-).

Короче были открыты раньше ордера, все условия сходятся. И он ни хрена не закрывает рание открытые ордера (((

Работа по закрытию баров идёт.

Как исправить что бы он закрывал все ордера рание открытые ( бай или селл пачки ордеров ) которые попадают под условия выхода позы.

А то глохнет и всё и позы висят (

 
Panzer писал (а) >>

У мну тут еще ляп выявился (

Мож поможеш ;-).

Короче были открыты раньше ордера, все условия сходятся. И он ни хрена не закрывает рание открытые ордера (((

Работа по закрытию баров идёт.

Как исправить что бы он закрывал все ордера рание открытые ( бай или селл пачки ордеров ) которые попадают под условия выхода позы.

А то глохнет и всё и позы висят (

Вам всетаки нужно больше читать, давалиже уже ссылку, на ветку где эти коды лежат

'Полезные функции от KimIV'

Не забудте как заработаете свои миллионы отблагодарить автора, на создание некоторых процедур ушли годы, хотя и содержат не там много строк кода. Ветка - ей цены нет, так что выучите её. А лучше сохранайте у себя на компе. Тут иногда ветки форума пропадают :-)

 

Вот на этих страничках есть функции закрытия. https://www.mql5.com/ru/forum/107476/page13

https://www.mql5.com/ru/forum/107476/page14

Функция ClosePosBySizeProfitInCurrency().

Эта функция выполняет закрытие только тех позиций, у которых профит в валюте депозита превысил некоторое заданное значение. Уточнить, какие именно позиции подлежат закрытию можно с помощью параметров функции

ClosePosBySizeProfitInCurrency(NULL , -1, -1, pr) ;

Вместо "pr" подставите величину профита в валюте депозита (долл), при достижении которого позиция закроется.

Т.е. в вашем примере (в простейшем случае) это будет примерно так :

//================ Закрытие позицтий ==================================
if ( ma1>ma2 )  {ClosePosBySizeProfitInCurrency(NULL , OP_BUY, -1, 0) };
if ( ma1<ma2 )  {ClosePosBySizeProfitInCurrency(NULL , OP_SELL, -1, 0) };

Саму же функцию можно расположить в самом конце кода ( вне ф-и int start() )

//----------------------------------------------------------------------------------------------

Обратите внимание на рекомендации в предыд. сообщ ! Использование различных функции (на все случаи жизни) сильно облегчит вам работу. При некотором навыке с их помошью можно практически за час-другой реализовать программно и проверить любую несложную идею.

 

вбиваю в код по этому примеру. 0 эффекта :-(

 
нPanzer писал (а) >>

Не въеду.

Вроде осилил что бы ток один ордер в работе висел.

А как что бы позы закрывал в профите если висит несколько ордеров.

На скорую руку исправил. Сделал так, что в рынке присутствует не более одной позиции. Пока она не закроется, другие не откроются.

Странное использование у вас ф-и Sleep(Спим); В тестере, кстати эта функция не должна работать. Ну ладно.

Добавил в параметры Магик для позиций, открываемых советником и параметр Profit=0(по умолчанию). Т.е. позиции после соблюдения условий закрытия будут закрываться по достижении этого задаваемого профита

В тестере эксперт работает. В онлайне не проверял, - сами смотрите.

Ваш советник - в закачке. Наверное лучше бы его по Ценам открытия переделать.

А В этом адресе вы найдете профессионально выполненные эксперты для различных ситуаций.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=select&id=4

Файлы:
panzer_mod.mq4  13 kb
 
rid писал (а) >>

На скорую руку исправил. Сделал так, что в рынке присутствует не более одной позиции. Пока она не закроется, другие не откроются.

Странное использование у вас ф-и Sleep(Спим); В тестере, кстати эта функция не должна работать. Ну ладно.

Добавил в параметры Магик для позиций, открываемых советником и параметр Profit=0(по умолчанию). Т.е. позиции после соблюдения условий закрытия будут закрываться по достижении этого задаваемого профита

В тестере эксперт работает. В онлайне не проверял, - сами смотрите.

Ваш советник - в закачке. Наверное лучше бы его по Ценам открытия переделать.

А В этом адресе вы найдете профессионально выполненные эксперты для различных ситуаций.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=select&id=4

Спасибо !

Ток вот мне надо что бы не только один ордер был (

С одним то разобрался.

А как добится что бы открывался по условиям а вот закрывал тоже по условиям. Когда один ордер висит то и так закроет.

А если висит 2 бая то глохнет. Картинку прикладываю.

С входами у меня проблем в нём нету, а вот с выходом.

На скине малость ошибся позы должны были раньше закрытся но и так понятно видно что глохнет. (((((((((((((((((((((((((((((((((((((((((((((((((((((((

P.s. можите дать мне Ваш номер ICQ?, на всякий.

 

На картинке видно: Висит 2 ордера на селл.

И эксп глохнет когда надо эти 2 позы закрывать. ( Условие общие на выход совпадают)

И как от этой делемы избавится ума не приложу (((((((((((((((((((((((((((((((((((((((((((((((((.

Ток ордеров и на бай и на селл может быть не 2 а результат в демо тот же что на скине глохнет.

 

Коды просмотрел.

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Закрытие тех позиций, у которых профит в валюте депозита |
//| превысил некоторое значение |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" - любой символ, |
//| NULL - текущий символ) |
//| op - операция (-1 - любая позиция) |
//| mn - MagicNumber (-1 - любой магик) |
//| pr - профит |
//+----------------------------------------------------------------------------+
void ClosePosBySizeProfitInCurrency(string sy="", int op=-1, int mn=-1, double pr=0) {
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=k-1; i>=0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderProfit()+OrderSwap()>pr) ClosePosBySelect();
}
}
}
}
}
}

Вот куды этовставить.... в моего бота.

Закрытие всех поз которые попадают под условия выхода.

Причина обращения: