Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Посмотри на Топ сигналов MetaTrader 5. Выбери лучший и подпишись!
Dmitiry Ananiev
6334
Dmitiry Ananiev 2010.10.18 17:54 

bool b=0, s=0; 

void Check_History()
{
HistorySelect(0,TimeCurrent());
int    deals=HistoryDealsTotal(); 
for(int i=deals-0;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            {s=1;b=1; break;}
           }
         //  проверяем символ
         if (HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol) continue;
         //  проверяем тип сделки (вход или выход)
         if (HistoryDealGetInteger(ticket,DEAL_ENTRY)==DEAL_ENTRY_OUT) continue;
         string  comment=HistoryDealGetString(ticket,DEAL_COMMENT);
          if (StringFind(comment,"sl")<0) {s=1;b=1; break;}
          if (StringFind(comment,"sl")>=0)continue;
          if (HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY) s=0;
          if (HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL) b=0;
          
          }
  Print ("b=", b,"   s=",s);
 return;        

вот набросал, вообщем, если s=0 то запрет на продажу, если b=0 - запрет на покупку 

 но что-то не так, не срабатывает...  Поправьте плииз , где ошибка ? 

Rashid Umarov
Админ
6600
Rashid Umarov 2010.10.18 18:10  
Вставляйте код правильно, пожалуйста.
MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • 2010.02.23
  • MetaQuotes Software Corp.
  • www.mql5.com
Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
Dmitiry Ananiev
6334
Dmitiry Ananiev 2010.10.18 18:22  
Rosh:
Вставляйте код правильно, пожалуйста.

bool b=0, s=0; 

void Check_History()
{
HistorySelect(0,TimeCurrent());
int    deals=HistoryDealsTotal(); 
for(int i=deals-0;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            {s=1;b=1; break;}
           }
         //  проверяем символ
         if (HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol) continue;
         //  проверяем тип сделки (вход или выход)
         if (HistoryDealGetInteger(ticket,DEAL_ENTRY)==DEAL_ENTRY_OUT) continue;
         string  comment=HistoryDealGetString(ticket,DEAL_COMMENT);
          if (StringFind(comment,"sl")<0) {s=1;b=1; break;}
          if (StringFind(comment,"sl")>=0)continue;
          if (HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY) s=0;
          if (HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL) b=0;
          
          }
  Print ("b=", b,"   s=",s);
 return;        

 вообщем долго мучался, наконец получилось...
а то все строчки в виде отдельного куска вставлялись. Получались блоки кода, каждая строчка в своем блоке...  

Yedelkin
4532
Yedelkin 2010.10.18 19:24  
dimeon:

bool b=0, s=0; 

void Check_History()
{
HistorySelect(0,TimeCurrent());
int    deals=HistoryDealsTotal(); 
for(int i=deals-0;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            {s=1;b=1; break;}
           }
         //  проверяем символ
         if (HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol) continue;
         //  проверяем тип сделки (вход или выход)
         if (HistoryDealGetInteger(ticket,DEAL_ENTRY)==DEAL_ENTRY_OUT) continue;
         string  comment=HistoryDealGetString(ticket,DEAL_COMMENT);
          if (StringFind(comment,"sl")<0) {s=1;b=1; break;}
          if (StringFind(comment,"sl")>=0)continue;
          if (HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY) s=0;
          if (HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL) b=0;
          
          }
  Print ("b=", b,"   s=",s);
 return;        

 

Не нравится мне вот это:

for(int i=deals-0;i>=0;i--)

 Я бы поставил i=deals-1

Dmitiry Ananiev
6334
Dmitiry Ananiev 2010.10.18 19:29  
Yedelkin:

Не нравится мне вот это:

 Я бы поставил i=deals-1

и так пробовал...  

Если не сложно напишите кто-то подобную функцию..

Dmitiry Ananiev
6334
Dmitiry Ananiev 2010.10.18 20:41  

вообщем сделал вот так...   понимаю, что коряво, но как смог.

bool b=0, s=0;  

void Check_History()
{b=1;s=1;

string  comment="order cooment";
HistorySelect(0,TimeCurrent());
int    ord=HistoryOrdersTotal(); 
for(int i=ord-1;i>=0;i--)
      {
         ulong ticket=HistoryOrderGetTicket(i);
          if (ticket==0) {b=1; s=1;}         //  проверяем символ
         if (HistoryOrderGetString(ticket,ORDER_SYMBOL)==_Symbol)
        {
          double price=HistoryOrderGetDouble (ticket,ORDER_PRICE_OPEN);
          bool type =  HistoryOrderGetInteger (ticket,ORDER_TYPE);
          ulong ticket1=HistoryOrderGetTicket(i-1);
          bool type1 =  HistoryOrderGetInteger (ticket1,ORDER_TYPE);
          double sl=HistoryOrderGetDouble (ticket1,ORDER_SL);
          Print (type,"  ",type1," p=",price," sl=",sl);
          if (type==1 && type1==0 && price!=sl) {b=1; break;}
          if (type==0 && type1==1 && price==sl) {s=0;  break;}
          if (type==0 && type1==1 && price!=sl) {s=1;  break;}
          if (type==1 && type1==0 && price==sl) {b=0; break;}
         }
        }
 return;        
}  


/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий