Нужен Советник - страница 2

 
Sultanov >>:
знал бы я как это сделать.что такое магик?Обьясните пожалуйста как это все проделать

Как все запущено.. Почитайте учебник, хелпы, документацию. Короткий ответ в этой ветке. Еще короче, это число - идентификатор ордера, раз и навсегда прописываемый в момент его выставления. По нему можно при переборе всех ордеров отсортировать ордера с определенным магиком, что и сможет сделать кимовский советник. Он будет считать профит и закрывать только те ордера, которые имеют магик, установленный Вами во внешних параметрах советника. Создав несколько групп ордеров с разными магиками, нужно запустить такое же количество советников, прописав в каждом магик определенной группы.

Но при ручном открытии ордера, его магик будет равен нулю. Следовательно, открывать ордера необходимо скриптом, имеющим возможность установки магика во внешних переменных. Поищите в CodeBase, там их хватает.

P.S.

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

Да и Fduch'у поверю после того, как уберет девочек с аватара. Деньги и женщины в одном флаконе не уживаются :))

 
Fduch писал(а) >>
странно что не больше) уже исправил) скопируй код выше еще раз

че то он закрыл сделки при общем профите минус 3 пункта.

 
granit77 >>:

..

Да и Fduch'у поверю после того, как уберет девочек с аватара. Деньги и женщины в одном флаконе не уживаются :))

Правильно что не верите, только девочки ни при чем - они в родном городе остались..

extern int TICKET_1 = 0; // Номер первого ордера
extern int TICKET_2 = 0; // Номер второго ордера
extern double TOTAL_PROFIT = 0.0005; // "при общем плюсе 5-10 пунктов закрывал бы оба ордера"

int start()
{
double profit = 0;

profit += Profit(TICKET_1);
profit += Profit(TICKET_2);

if(profit > TOTAL_PROFIT)
{
  CloseByTicket(TICKET_1);
  CloseByTicket(TICKET_2);
}
}
double Profit(int ticket)
{
   if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true )
   {
      if(OrderType()==OP_BUY)
         return(Bid-OrderOpenPrice());
      if(OrderType()==OP_SELL)
         return(OrderOpenPrice()-Ask);
   }
}
bool CloseByTicket(int ticket)
{
   
   if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true )
   {
      if(OrderType()==OP_BUY)
         return(OrderClose(OrderTicket(),OrderLots(),Bid,3));
      if(OrderType()==OP_SELL)
         return(OrderClose(OrderTicket(),OrderLots(),Ask,3));
   }
   else
   {
      return(false);
   }
}

С теор точки зрения должно работать.. Теперь верите, granit77 ?

 
верю фактам.ордера закрылись в минусе .один минус 2 пункта другой минус 1.
 

Хм, поставил на проверку. А пока течет профит.. Господа эксперты, в чем может быть ошибка в коде выше?

ИМХО: брокер видит цифру 3 на месте слиппеджа и закрывает по нахудшей котировке.

 

Хм, а у вас все позиции по разным валютным парам?

Тогда:

extern int TICKET_1 = 0; 
extern int TICKET_2 = 0; 
extern double TOTAL_PROFIT = 0.0005; 

int start()
{
   double profit = 0;

   profit += Profit(TICKET_1);
   profit += Profit(TICKET_2);
   
   if(profit > TOTAL_PROFIT)
   {
     CloseByTicket(TICKET_1);
     CloseByTicket(TICKET_2);
   }
}
double Profit(int ticket)
{
   if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true )
   {
      if(OrderType()==OP_BUY)
         return(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice());
      if(OrderType()==OP_SELL)
         return(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK));
   }
}
bool CloseByTicket(int ticket)
{
   
   if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true )
   {
      if(OrderType()==OP_BUY)
         return(OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),1));
      if(OrderType()==OP_SELL)
         return(OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),1));
   }
   else
   {
      return(false);
   }
}

Данная ветка посвящается теме "О вреде использования Bid и Ask. И о пользе MarketInfo()".

 
да разные валюты
 
попробывал вроде работает.буду дальше смотреть.Спасибо Автору.
 
А будет ли он работать в ДЦ с пятью знаками
 
Fduch >>:

Хм, а у вас все позиции по разным валютным парам?

Тогда:

Данная ветка посвящается теме "О вреде использования Bid и Ask. И о пользе MarketInfo()".


"double Ask
Последняя известная цена продажи (запрашиваемая цена) текущего инструмента. Для обновления необходимо использовать функцию RefreshRates()."
Причина обращения: