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

 
Panzer писал (а) >>

Спасибо !

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

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

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

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

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

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

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

Аська не работает у меня сейчас. Не из дома пишу.

Картинку вы забыли, наверное поставить. Но с моими исправлениями Закрытие позиций в советнике идет строго по заданным вами условиям.

//====================== Закрытие позиций ==========================================+
if(MA1<MA2&&MA4>MA3)  ClosePosBySizeProfitInCurrency(NULL , OP_BUY, Magic, Profit) ;
if(MA1>MA2&&MA4<MA3)  ClosePosBySizeProfitInCurrency(NULL , OP_SELL, Magic, Profit) ;
//==================================================================================+

Либо по стоплоссу.

Вы задаете параметром Profit в свойствах эксперта ту прибыль, при достижении которой позиция должна закрыться и позиция закроется.

Непонятно, что вам тут не подходит ?

 
Panzer писал (а) >>

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

//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Закрытие тех позиций, у которых профит в валюте депозита |
//| превысил некоторое значение |

void ClosePosBySizeProfitInCurrency(string sy="", int op=-1, int mn=-1, double pr=0) {
}

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

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

Всё это уже вставлено ! - см. предыд. сообщ.

 
Panzer писал (а) >>

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

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

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

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

А откуда возьмутся 2 и более ордеров? Ведь эксперт то только одну позиции может "держать" !

Или там ещё и вручную позиции открываете ?

И что значит "глохнет" ? А что при этом в журнале печатается ?

 

Стоп выходит что эксп не может больше 1й позы держать вообще ( практический ) или в принцие ?

Так же стратежка не предусматривает выхода по профиту только по сигналу, и условие профит>=0. но это есть.

Спасибо большое! :-)

Код посмотрю внимательнее как Вы вставили.

ну практик я а не теоретик, всё ток на примерах понимаю :-(

 

Может . Эксперт "в принципе" может держать столько позиций, сколько будет заложено в его алгоритме. Я в вашем советнике "заложил" в коде работу только с одной позицией

Вот этой строкой кода:

//================ Открытие позиций ==============================================
if ( NumberOfPositions(NULL , -1, Magic )<=0) { //если нет открытых позиций 
//-------------------------------------------------------------------------------
  // Проверка условий для совершения сделки

Разберитесь для начала хоть с одной.

 
rid писал (а) >>

Может . Эксперт "в принципе" может держать столько позиций, сколько будет заложено в его алгоритме. Я в вашем советнике "заложил" в коде работу только с одной позицией.

Дайте пожалуйста ваш мэйл.

Скин на кфоруме что т не идёт.

Пришлю его огрехи.

И наконец то будет видно что мне надо.

P.s. Надо что бы держал хотябы 20поз.

Условия на выход пересечение и Оrder_Prifit>=0.

Эту строчку исправлю.

а в каких строках задаётся скок он может поз держать то...

на бай или на селл

 
Panzer писал (а) >>

P.s. Надо что бы держал хотябы 20поз.

Условия на выход пересечение и Оrder_Prifit>=0.

Эту строчку исправлю.

а в каких строках задаётся скок он может поз держать то...

на бай или на селл

rid200549@ya.ru

20 поз. ? - Вам нужно одновременно открыть 20 позиций? Без проблем !

вместо <=0 - делаем :

//================ Открытие позиций ===================

if ( NumberOfPositions(NULL, -1, Magic )<20) { //если открытых позиций меньше 20-ти

 
rid писал (а) >>

rid200549@ya.ru

20 поз. ? - Вам нужно одновременно открыть 20 позиций? Без проблем !

вместо <=0 - делаем :

//================ Открытие позиций ===================

if ( NumberOfPositions(NULL, -1, Magic )<20) { //если открытых позиций меньше 20-ти

Скин выслал.

Сразу поймёте что мне надо :-)

Надо не открыть ( он открывает норм ) а закрыть 20 или болие что под условия попадётся выхода.

у меня в коде это ( выходы) if(MA1>MA2&&MA4<MA3&& OrderProfit( ) >=0)

и кроет ток 1н ордер который висит и попадает под условия.

а если 2 открыто и попадает под это условие на выход ( оба) по скину видно. глохнет (

И что бы мог держать позы в разных направлениях ( много поз что б держал)

 

Выложите сюда весь ваш кусочек кода по закрытию позиций

А пока, гляньте вот сюда

'Закрытие позиций. По сигналу индикатора.'

 
rid писал (а) >>

Выложите сюда весь ваш кусочек кода по закрытию позиций

А пока, гляньте вот сюда

'Закрытие позиций. По сигналу индикатора.'

if(OrderType()==OP_BUY)
{
if((MA1<MA2&&MA4>MA3&& OrderProfit( ) >=0))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
}

if(OrderType()==OP_SELL)
{
if(MA1>MA2&&MA4<MA3&& OrderProfit( ) >=0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
}

вот условие на закрытие позы.

Retun Убрать надо по ходу )))))))))))))))))))))))))))))))))))))))))))))))))))))))))

и так будет код выглядеть:

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY)
{
if((MA1<MA2&&MA4>MA3&& OrderProfit( ) >=0))
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
}
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop) // Bid - цена покупки
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
// return(0);
}
}
}
}
if(OrderType()==OP_SELL)
{
if(MA1>MA2&&MA4<MA3&& OrderProfit( ) >=0)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
}
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // Ask - цена продажи
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
// return(0);
}
}
}
}
}






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