Как найти самый последний ордер ??? - страница 4

 
Petros Shatakhtsyan:

Как раз никак не видно из чего состоит рейтинг.

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

И получается, что солдат спит, а рейтинг увеличивается.

Рейтинг прибавляется разово за размещение, и периодически за факт скачивания. Раз скачиваются продукты - значит интересны. Разовыми публикациями рейтинг сильно не увеличить. Либо постоянно публиковать (но хлам не пройдёт модерацию, а значит - трудиться на благо общества), либо размещать интересные продукты, которые будут скачиваться людьми - это тоже вклад в развитие экосистемы, либо заниматься продажами, что тоже вносит свой вклад в общее дело.Так что тут рейтинг - скорее вклад человека в развитие сообщества, ресурса, платформы, экосистемы, а не пустые циферки.

А вот как наверное вы считаете - мол болтовнёй на форуме рейтинги люди себе набивают - так попробуйте. Мне кажется, что терпения не хватит столько болтать постоянно.

Ваш рейтинг состоит из:

  • комментирование на форуме: 1242
  • голосования: 387
  • интересные темы с обсуждениями: 603
  • ваш интерес к другим темам: 378
  • клиент облачных вычислений: 1004.79
  • работа с СД: 86
  • интерес сообщества к вашим продуктам (демо-версии): 19436
  • сигналы: 9
  • отзывы к вашим сигналам: 3
 

Всё это теория. Я могу за короткий срок увеличить мой рейтинг в разы, за счет бесплатных продуктов.  И это ни о чем ни говорит.

Люди скачивают, потому что это бесплатно.  Если в профиле всё видно то зачем этот рейтинг.


P.S. мы не в той теме обсуждаем этот вопрос и поэтому продолжить не стоит.

 

не подскажите как чтобы проверялось имеется или нет в истории ордер закрытый в течении минуты? Либо чтобы проверял открытые ордера за последнюю минуту? что нужно добавить в код

int start()
{
   string s;
   for (int i=2; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         s = OrderSymbol();
         if (s==SYMBOL1 || s==SYMBOL2 || s==SYMBOL3 || s==SYMBOL4) return(0);
      }
   }
 
T926SA:

не подскажите как чтобы проверялось имеется или нет в истории ордер закрытый в течении минуты? Либо чтобы проверял открытые ордера за последнюю минуту? что нужно добавить в код

int _OpenOrder(void)
{
     for(int i=0; i<OrdersTotal(); i++)
     {
          if( !OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ) continue;
          if( OrderOpenTime()+60 > TimeCurrent() )       continue;
          string s = OrderSymbol();
          if (s!=SYMBOL1 && s!=SYMBOL2 && s!=SYMBOL3 && s!=SYMBOL4) continue;
          
          return OrderTicket();
     }
     return 0;
}

int _CloseOrder(void)
{
     for(int i=0; i<OrdersHistoryTotal(); i++)
     {
          if( !OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) continue;
          if( OrderCloseTime()+60 > TimeCurrent() )        continue;
          string s = OrderSymbol();
          if (s!=SYMBOL1 && s!=SYMBOL2 && s!=SYMBOL3 && s!=SYMBOL4) continue;
          
          return OrderTicket();
     }
     return 0;
}
 
Konstantin Nikitin:

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

//+------------------------------------------------------------------+
//| Советник, выставляет 4 ордера по 4м валютам                      |                                                        |
//+------------------------------------------------------------------+
extern string  SYMBOL1        = "EURUSD"; //первый символ, если не указан, то не выставляется
extern string  SYMBOL2        = "GBPUSD"; //второй символ, если не указан, то не выставляется
extern string  SYMBOL3        = "EURGBP"; //третий символ, если не указан, то не выставляется
extern string  SYMBOL4        = "GBPJPY"; //четвертый символ, если не указан, то не выставляется
extern double  LOT1           = 0.01;      //лот первого инструмента
extern double  LOT2           = 0.01;      //лот второго инструмента
extern double  LOT3           = 0.01;      //лот третьего инструмента
extern double  LOT4           = 0.01;      //лот четвертого инструмента
extern int     TYPE1          = OP_BUY;   //тип ордера первого инструмента
extern int     TYPE2          = OP_SELL;  //тип ордера второго инструмента
extern int     TYPE3          = OP_BUY;  //тип ордера третьего инструмента
extern int     TYPE4          = OP_SELL;  //тип ордера четвертого инструмента
extern int     Slippage       = 3;        //проскальзывание 
extern int     Magic          = 777888;

//+------------------------------------------------------------------+
int start()
{
{
     for(int i=0; i<OrdersHistoryTotal(); i++)
     {
          if( !OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) continue;
          if( OrderCloseTime()+60 < TimeCurrent() )        continue;
          string s = OrderSymbol();
          if (s!=SYMBOL1 && s!=SYMBOL2 && s!=SYMBOL3 && s!=SYMBOL4) continue;
          
          return OrderTicket();
     }
     return 0;
}
   int    Digit=MarketInfo(SYMBOL1,MODE_DIGITS);
   double Poin=MarketInfo(SYMBOL1,MODE_POINT);
   double ASK=NormalizeDouble(MarketInfo(SYMBOL1,MODE_ASK),Digit);
   double BID=NormalizeDouble(MarketInfo(SYMBOL1,MODE_BID),Digit);
   if (SYMBOL1!="")
   {
      if (TYPE1 == OP_BUY)  
      {
         if (OrderSend(SYMBOL1,OP_BUY,LOT1,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT1," ", SYMBOL1);
         else Alert(SYMBOL1," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL1,MODE_ASK),"  ",LOT1);
      }
      if (TYPE1 == OP_SELL)  
      {
         if (OrderSend(SYMBOL1,OP_SELL,LOT1,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT1," ", SYMBOL1);
         else Alert(SYMBOL1," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL1,MODE_ASK),"  ",LOT1);
      }
   }
   if (SYMBOL2!="")
   {
      Digit=MarketInfo(SYMBOL2,MODE_DIGITS);
      Poin=MarketInfo(SYMBOL2,MODE_POINT);
      ASK=NormalizeDouble(MarketInfo(SYMBOL2,MODE_ASK),Digit);
      BID=NormalizeDouble(MarketInfo(SYMBOL2,MODE_BID),Digit);
      if (TYPE2 == OP_BUY)  
      {
         if (OrderSend(SYMBOL2,OP_BUY,LOT2,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT2," ", SYMBOL2);
         else Alert(SYMBOL2," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL2,MODE_ASK),"  ",LOT2);
      }
      if (TYPE2 == OP_SELL)  
      {
         if (OrderSend(SYMBOL2,OP_SELL,LOT2,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT2," ", SYMBOL2);
         else Alert(SYMBOL2," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL2,MODE_ASK),"  ",LOT2);
      }
   }
   if (SYMBOL3!="")
   {
      Digit=MarketInfo(SYMBOL3,MODE_DIGITS);
      Poin=MarketInfo(SYMBOL3,MODE_POINT);
      ASK=NormalizeDouble(MarketInfo(SYMBOL3,MODE_ASK),Digit);
      BID=NormalizeDouble(MarketInfo(SYMBOL3,MODE_BID),Digit);
      if (TYPE3 == OP_BUY)  
      {
         if (OrderSend(SYMBOL3,OP_BUY,LOT3,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT3," ", SYMBOL3);
         else Alert(SYMBOL3," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL3,MODE_ASK),"  ",LOT3);
      }
      if (TYPE3 == OP_SELL)  
      {
         if (OrderSend(SYMBOL3,OP_SELL,LOT3,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT3," ", SYMBOL3);
         else Alert(SYMBOL3," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL3,MODE_ASK),"  ",LOT3);
      }
   }
   if (SYMBOL4!="")
   {
      Digit=MarketInfo(SYMBOL4,MODE_DIGITS);
      Poin=MarketInfo(SYMBOL4,MODE_POINT);
      ASK=NormalizeDouble(MarketInfo(SYMBOL4,MODE_ASK),Digit);
      BID=NormalizeDouble(MarketInfo(SYMBOL4,MODE_BID),Digit);
      if (TYPE4 == OP_BUY)  
      {
         if (OrderSend(SYMBOL4,OP_BUY,LOT4,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT4," ", SYMBOL4);
         else Alert(SYMBOL4," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL4,MODE_ASK),"  ",LOT4);
      }
      if (TYPE4 == OP_SELL)  
      {
         if (OrderSend(SYMBOL4,OP_SELL,LOT4,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT4," ", SYMBOL4);
         else Alert(SYMBOL4," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL4,MODE_ASK),"  ",LOT4);
      }
   }
return(0);
} 
//--------------------------------------------------------------------

 
T926SA:

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

//+------------------------------------------------------------------+
//| Советник, выставляет 4 ордера по 4м валютам                      |                                                        |
//+------------------------------------------------------------------+
extern string  SYMBOL1        = "EURUSD"; //первый символ, если не указан, то не выставляется
extern string  SYMBOL2        = "GBPUSD"; //второй символ, если не указан, то не выставляется
extern string  SYMBOL3        = "EURGBP"; //третий символ, если не указан, то не выставляется
extern string  SYMBOL4        = "GBPJPY"; //четвертый символ, если не указан, то не выставляется
extern double  LOT1           = 0.01;      //лот первого инструмента
extern double  LOT2           = 0.01;      //лот второго инструмента
extern double  LOT3           = 0.01;      //лот третьего инструмента
extern double  LOT4           = 0.01;      //лот четвертого инструмента
extern int     TYPE1          = OP_BUY;   //тип ордера первого инструмента
extern int     TYPE2          = OP_SELL;  //тип ордера второго инструмента
extern int     TYPE3          = OP_BUY;  //тип ордера третьего инструмента
extern int     TYPE4          = OP_SELL;  //тип ордера четвертого инструмента
extern int     Slippage       = 3;        //проскальзывание 
extern int     Magic          = 777888;

//+------------------------------------------------------------------+
int start()
{
   if( _OpenOrder() != 0 )
      return 0;
   if( _CloseOrder() == 0 )
      return 0;

   int    Digit=MarketInfo(SYMBOL1,MODE_DIGITS);
   double Poin=MarketInfo(SYMBOL1,MODE_POINT);
   double ASK=NormalizeDouble(MarketInfo(SYMBOL1,MODE_ASK),Digit);
   double BID=NormalizeDouble(MarketInfo(SYMBOL1,MODE_BID),Digit);
   if (SYMBOL1!="")
   {
      if (TYPE1 == OP_BUY)  
      {
         if (OrderSend(SYMBOL1,OP_BUY,LOT1,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT1," ", SYMBOL1);
         else Alert(SYMBOL1," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL1,MODE_ASK),"  ",LOT1);
      }
      if (TYPE1 == OP_SELL)  
      {
         if (OrderSend(SYMBOL1,OP_SELL,LOT1,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT1," ", SYMBOL1);
         else Alert(SYMBOL1," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL1,MODE_ASK),"  ",LOT1);
      }
   }
   if (SYMBOL2!="")
   {
      Digit=MarketInfo(SYMBOL2,MODE_DIGITS);
      Poin=MarketInfo(SYMBOL2,MODE_POINT);
      ASK=NormalizeDouble(MarketInfo(SYMBOL2,MODE_ASK),Digit);
      BID=NormalizeDouble(MarketInfo(SYMBOL2,MODE_BID),Digit);
      if (TYPE2 == OP_BUY)  
      {
         if (OrderSend(SYMBOL2,OP_BUY,LOT2,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT2," ", SYMBOL2);
         else Alert(SYMBOL2," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL2,MODE_ASK),"  ",LOT2);
      }
      if (TYPE2 == OP_SELL)  
      {
         if (OrderSend(SYMBOL2,OP_SELL,LOT2,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT2," ", SYMBOL2);
         else Alert(SYMBOL2," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL2,MODE_ASK),"  ",LOT2);
      }
   }
   if (SYMBOL3!="")
   {
      Digit=MarketInfo(SYMBOL3,MODE_DIGITS);
      Poin=MarketInfo(SYMBOL3,MODE_POINT);
      ASK=NormalizeDouble(MarketInfo(SYMBOL3,MODE_ASK),Digit);
      BID=NormalizeDouble(MarketInfo(SYMBOL3,MODE_BID),Digit);
      if (TYPE3 == OP_BUY)  
      {
         if (OrderSend(SYMBOL3,OP_BUY,LOT3,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT3," ", SYMBOL3);
         else Alert(SYMBOL3," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL3,MODE_ASK),"  ",LOT3);
      }
      if (TYPE3 == OP_SELL)  
      {
         if (OrderSend(SYMBOL3,OP_SELL,LOT3,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT3," ", SYMBOL3);
         else Alert(SYMBOL3," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL3,MODE_ASK),"  ",LOT3);
      }
   }
   if (SYMBOL4!="")
   {
      Digit=MarketInfo(SYMBOL4,MODE_DIGITS);
      Poin=MarketInfo(SYMBOL4,MODE_POINT);
      ASK=NormalizeDouble(MarketInfo(SYMBOL4,MODE_ASK),Digit);
      BID=NormalizeDouble(MarketInfo(SYMBOL4,MODE_BID),Digit);
      if (TYPE4 == OP_BUY)  
      {
         if (OrderSend(SYMBOL4,OP_BUY,LOT4,ASK,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер BUY  лот ",LOT4," ", SYMBOL4);
         else Alert(SYMBOL4," send order BAY error ",GetLastError(),"  ",MarketInfo(SYMBOL4,MODE_ASK),"  ",LOT4);
      }
      if (TYPE4 == OP_SELL)  
      {
         if (OrderSend(SYMBOL4,OP_SELL,LOT4,BID,Slippage,0,0,"cm_script_Hedge",Magic,0,Blue)!=-1) 
            Alert("Ордер SELL  лот ",LOT4," ", SYMBOL4);
         else Alert(SYMBOL4," send order SELL error ",GetLastError(),"  ",MarketInfo(SYMBOL4,MODE_ASK),"  ",LOT4);
      }
   }
return(0);
} 
//--------------------------------------------------------------------
int _OpenOrder(void)
{
     for(int i=0; i<OrdersTotal(); i++)
     {
          if( !OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ) continue;
          if( OrderOpenTime()+60 > TimeCurrent() )       continue;
          string s = OrderSymbol();
          if (s!=SYMBOL1 && s!=SYMBOL2 && s!=SYMBOL3 && s!=SYMBOL4) continue;
          
          return OrderTicket();
     }
     return 0;
}

int _CloseOrder(void)
{
     for(int i=0; i<OrdersHistoryTotal(); i++)
     {
          if( !OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ) continue;
          if( OrderCloseTime()+60 > TimeCurrent() )        continue;
          string s = OrderSymbol();
          if (s!=SYMBOL1 && s!=SYMBOL2 && s!=SYMBOL3 && s!=SYMBOL4) continue;
          
          return OrderTicket();
     }
     return 0;
}
Вообще-то я вам написал функции, которые нужно было запросить. Само собой в вашем варианте ни чего не откроет. Return просто в любом случае вам прерывал дальнейшею работу.
 
Konstantin Nikitin:
Вообще-то я вам написал функции, которые нужно было запросить. Само собой в вашем варианте ни чего не откроет. Return просто в любом случае вам прерывал дальнейшею работу.
Да попробовал, начали открываться ордера после как закроешь ордер. Но начали открываться бесконечно... Скажите что не так? Чтобы после удаления ордера открылись 4 ордера и шло ожидание следующего удаления ордеров?
 
T926SA:
Да попробовал, начали открываться ордера после как закроешь ордер. Но начали открываться бесконечно... Скажите что не так? Чтобы после удаления ордера открылись 4 ордера и шло ожидание следующего удаления ордеров?

Вот эту строку подправил. Сейчас вроде должно работать.

if( OrderOpenTime()+60 > TimeCurrent() )       continue;

Но пора немного включать мозги, если хотите сами писать что-то.

 
Konstantin Nikitin:

Вот эту строку подправил. Сейчас вроде должно работать.

Но пора немного включать мозги, если хотите сами писать что-то.

Изменил, но теперь сразу начали открываться ордера бесконечно без удаления ордера....

Вот начал потихоньку изучать это программирование

 
Подскажите алгоритм  чтобы советник проверял открыты ли последние 4 ордера в одно время. Если 4 последних ордера открыты не одновременно(5-10сек) то переходит к следующему действию