Нужен совет

 

Куда вписать это условие if((OrderProfit()>OrderTakeProfit()) OrderDelete(OrderTicket()) чтобы работало ?

void ManageSelllimit(string symb,double lt,double TP,double SL,int slp,int spd,int magic,string com)
{ double bid =MarketInfo(symb,MODE_BID);
double point =MarketInfo(symb,MODE_POINT);
double sprd =MarketInfo(symb,MODE_SPREAD);
double Price =OrderStopLoss();
if( sprd <= spd )
{
total = OrdersTotal();
int j, orders;
for(j=0;j<total;j++)
{
OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == magic) orders++; //---- an order is opened with
} //---- same symbol, same magic number

if ( orders >0 ) //---- we can go trading
{
if (TP==0) { tp=0; }
else { tp=Price-TP*point; }
if (SL==0) { sl=0; }
else { sl=Price+SL*point; }
//Print("ticket=OrderSend(",symb,",",OP_SELL,",",lt,",",bid,",",slp,",",sl,",",tp,",",com,",",magic,",",0,",",Red);
lotlib_OpenPriceLevel = Bid; // вместо Ask - реальное значение уровня открытия позиции
lotlib_StopLossLevel = sl; // вместо Ask-StopLoss*Point - реальное значение уровня СтопЛосса позиции



ticket=OrderSend(symb,OP_SELLLIMIT,Lot(),Price,slp,sl,tp,com,magic,0,Red);

if( ticket > 0 )
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("SELL order opened : ",OrderOpenPrice());
}
}
else
{
Print("Error opening SELL order : ",GetLastError());
}
} //---- if ( orders < 1 )
} //---- if( sprd <= spd )
} //---- void

 
Помогите пожалуйста
 
azfaraon:
Помогите пожалуйста

А разве можно это сравнивать?

OrderProfit()>OrderTakeProfit()
 
А почему нет ?
 
azfaraon:
А почему нет ?

OrderProfit( )
Возвращает значение чистой прибыли (без учёта свопов и комиссий)

OrderTakeProfit( )
Возвращает значение цены закрытия позиции при достижении уровня прибыльности

Т.е. сумму денег сравнивать с ценой, оригинально !!!???

З.Ы. Могли бы и сами посмотреть.

 

Что вы посоветуете ? Поправьте пожалуйста.

 
azfaraon:

Что вы посоветуете ? Поправьте пожалуйста.

Алгоритм советника напишите на бумажку, составьте блок-схему. И выучите матчасть (хотя бы заглядывайте в справку).

Если что-то работает не правильно, сделайте распринтовку (очень помогает) и если и тут что-то не понимаете, то вопрос на форум. И обязательно понятный вопрос с куском кода и код вставляйте через кнопку .

Поправить не могу, я не ясновидец и не знаю что хотите получить от советника.

 

Мне нужен совет .Что вписать в этот код советника чтобы отложенный ордер удалялся если предыдущая сделка закрылась по тейк профиту .

 
в самом верху этого форума есть ветка,'Полезные функции от KimIV' рекомендую очень внимательно её просмотреть
 

смотрел . Там целая бибилиотека .Респект Киму .Тут же всего три строчки . Вопрос между какими строчками вписать.

 
azfaraon:

Мне нужен совет .Что вписать в этот код советника чтобы отложенный ордер удалялся если предыдущая сделка закрылась по тейк профиту .

if( isCloseLastPosByTake() ) {
   for(int i=0;i<OrdersTotal();i++) {
      if((OrderType() >= OP_BUYLIMIT ) && (OrderType() <= OP_SELLSTOP)) {
         OrderDelete(OrderTicket());
      }
   }
}

Примерно так.

isCloseLastPosByTake() - функция Игоря Кима.