[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 104

 

В кометарий ордера добавляется номер дня месяца. Как посчитать сколько было ордеров (закрытых) за день с коментом этого дня?

Что то не соображу как это реализовать.

comment = Day();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("колл-во ордеров = ",f,"");
return(f);
}

 
To serega393
А у тебя comment за функцией это строка или целое?
Функция вроде сложена правильно. Поставь внутрь распринтовку всех входящих переменных, чтобы видеть ясную картину.
 
serega393 писал(а) >>

В кометарий ордера добавляется номер дня месяца. Как посчитать сколько было ордеров (закрытых) за день с коментом этого дня?

Что то не соображу как это реализовать.

comment = Day();

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("колл-во ордеров = ",f,"");
return(f);
}

comment = TimeDay(iTime(Symbol(),Period(),0)) ;
И при отправке ордеров тоже самое!
 
StatBars >>:
И при отправке ордеров тоже самое!

Лучше так:

   comment = TimeDay(TimeCurrent());
И быстрее, и проще, и надежнее.
 

bool UseTF = true;


int start()
{

string comment = TimeDay(TimeCurrent());

if (OpenOrdersDayHistory(Symbol(), OP_SELL, 123, comment) > 0)
{
UseTF = false;
Print("Нет");
}
else
{
UseTF = true;
Print("Да");

}

if (UseTF == true)
{
int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+10*Point, comment, 123, 0, Green);
}
return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{
int n;
int f = 0;
int total = OrdersHistoryTotal();
for (n = total - 1; n >= 0; n--)
{
OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && OrderComment() == comment)
{
f++;
}
}
Print("колл-во ордеров = ",f,"");
return(f);
}

Вот попробуйте. Не читает он ордеров в истории.

 

Доброго дня всем.

Никак не получается правильно "забить" в код открытие отложенных ордеров. Учебник, хелп и прочее прочитал. Скорее всего там есть ответ, но просто до меня так и не доходит...


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

1.Вопрос - как выглядит функция цены текущего бара к примеру в 6 утра?

2.Как указать в закрытии ордера параметр тикет?

Или как то по другому закрывать один из двух ранее открытых ордеров?

Мне приходится изголяться вот так...


for (int i=1; i<=OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS)==true)

{

int T=OrderTicket();

int Cur_Hour2=Hour(); // Серверное время в часах

double Cur_Min2 =Minute(); // Серверное время в минутах

double Cur_time2=Cur_Hour2 + Cur_Min2/100; // Текущее время

Alert(Cur_time2);

if (Cur_time2>=Time_of_buy_sell_2)

OrderClose(T,1,Ask,3,Red);

}

return; // Выход из start()


Прошу строго не судить:)

 
TheXpert писал(а) >>

Лучше так:

И быстрее, и проще, и надежнее.

Согласен, но я больше акцентировал внимание на другое.

 
serega393 писал(а) >>

Вот попробуйте. Не читает он ордеров в истории.

Все читает нормально. Проверь какой у тебя комментарий после закрытия. Некоторые брокеры при закрытии ордера добавляют в комментарий свои записи.

 
int start()
{
   string comment = TimeDay(TimeCurrent());   
   if (OpenOrdersDayHistory(Symbol(), OP_BUY, 123, comment) <3)   
   {      
      UseTF = true;      
      Print("Yes");   
   }
   else   
   {      
      UseTF = false;      
      Print("No");   
   }    
   
   if (UseTF == true)   
   {      
      int ticket = OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, Ask+100*Point, comment, 123, 0, Green);   
   }
   return(0);
}

int OpenOrdersDayHistory(string symbol, int type, int magic, string comment)
{   
   int n;   
   int f = 0;   
   int total = OrdersHistoryTotal();    
   for (n = total - 1; n >= 0; n--)   
   {      
      OrderSelect(n,SELECT_BY_POS,MODE_HISTORY);
      Print(OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic," ",StringFind(OrderComment(),comment,0)>=0);
      if (OrderSymbol() == symbol && OrderType() == type && OrderMagicNumber() == magic && StringFind(OrderComment(),comment,0)>=0)          
            f++;   
   }    
   Print("колл-во ордеров = ",f,"");   
   return(f);
} 
 
Господа может подскажите советника, который закрывает все позиции (и убыточные тоже) при достижении заданного профита и удаляет все не сработанные отложники ?
Причина обращения: