Группа "Стол заказов MQL"

Рейтинг 2073



РЕКОМЕНДУЮ



Функция перебора ордеров

Здравствуйте уважаемые программисты и трейдеры!!! Пробую изучать MQL4 и что то тяжело он мне даётся… Можно написать отдельно функцию что бы можно было добавить в советник:
Открыто N сделок. 1,2,3,4,5,6,7....()
1 Найти OrderProfit() 1 или 2 сделки.(Или 3 или сумме 2 или 3 сделок )
Другими словами красиво перебрать ордера найти нужный и оформить в виде функции. Можно с пояснениями а то я что то не догоняю немного.
Спасибо!!!
  • +1
  • Просмотров: 2771
  • 22 июня 2019, 06:42
  • SakhalinMen
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Необходимо
Следующая запись в группе  
Индикатор приветствия
16 июня 2019
23 июня 2019

Комментарии (8)

+
0
Тяжело тебе придётся. Программист в отпуске… А купцы не программируют. Их работа торговля.

Но выход есть. Скачай советников последний десяток. В одном из них точно было что-то похожее.
avatar

  13  axe44 Сообщений: 1149 - Алек

  • 22 июня 2019, 06:53
+
+1
*hi*  Знаю. Ни че я подожду.
//+------------------------------------------------------------------+
Есть функция находит последний ордер в списке.
//+------------------------------------------------------------------+
double BuyOrders()
{
int oldticket;
ticket = 0;
double buyorders = 0;
for (int cnt = OrdersTotal()-1; cnt>=0; cnt--)
{
if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
{
oldticket = OrderTicket();
if (oldticket > ticket)
{
ticket = oldticket;
buyorders = OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
return(buyorders);
}
//+------------------------------------------------------------------+
avatar

  9  SakhalinMen Автор Сообщений: 7 - Сахалин

  • 22 июня 2019, 07:52
+
0
Смотря что нужно сделать с ордером
avatar

  9  Servir Сообщений: 84

  • 22 июня 2019, 16:19
+
0
//+------------------------------------------------------------------+
//|                                                  OrderProfit.mq4 |
//|                                              Copyright 2019, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

input int One=1;
input int End=1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int one=0,int end=3)
  {
   double pr=0;
   for(int i=one;i<end;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderType()<2) pr+=OrderProfit()+OrderCommission()+OrderSwap();
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,0.1,NormalizeDouble(price,Digits),0,0,0,"",0,0,clr);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(OrdersTotal()<1)
     {
      for(int i=1;i<=5;i++) PutOrder(2,Bid-111*Point*i);//buylimit
      for(int i=1;i<=5;i++) PutOrder(3,Bid+111*Point*i);//selllimit
     }
   Comment("\n Profit: ",AllProfit(One,End));
  }
//+------------------------------------------------------------------+
avatar

  34  AM2 Сообщений: 15826 - Андрей

  • 22 июня 2019, 16:27
+
0
//+------------------------------------------------------------------+
//|                                                       Profit.mq4 |
//|                                                              GDV |
//|                                                          2019.01 |
//+------------------------------------------------------------------+
#property copyright "GDV"
#property link      "2019.01"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
extern int    MagicBuy  = 1;   //Если прописать магик то будет закрывать
extern int    MagicSell = 2;   //определенные ордера(например только от советника)
                               //выставленные вручную нетогает 
extern double Profit    = 10.0;  //Желаемый Min доход
   
double PR_S,PR_B;

//+------------------------------------------------------------------+
int OnInit()
  {
  return(INIT_SUCCEEDED);
  }
//---------------------------------------------------------------------------------------------------  
  
  int CountBYU()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {
     if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicBuy)
     {
     if(OrderType()==OP_BUY) count++;
     }
     }
     }
   return(count);
  }
//-----------------------------------------------------------------------------------------------------  
  int CountSELL()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicSell)
      {
      if(OrderType()==OP_SELL) count++;
      }
      }
      }
   return(count);
  }
  

int start()
  {
  
if (CountBYU()==1)                                
   {
   for(int i=OrdersTotal()-1;i>=0;i--)
   {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   {
   if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && OrderMagicNumber()==MagicBuy)
   {
   if(OrderProfit()>Profit){
    PR_B=OrderProfit();
    bool cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),30,White);}
   
   }
   }
   }
   }
if (CountSELL()==1)
   {
   for(int j=OrdersTotal()-1;j>=0;j--)
   {
   if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES))
   {
   if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && OrderMagicNumber()==MagicSell)
   {
   if(OrderProfit()>Profit){
    PR_S=OrderProfit();
    bool cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),30,White);}
   }
   }
   }
   }
 
   
   
   
if (IsTesting() && OrdersTotal()==0)
   {
      
     bool l1= OrderSend(Symbol(),OP_BUY,0.5,NormalizeDouble(Ask,Digits),30,0,0,NULL,MagicBuy,0,clrBlue);
     bool l2= OrderSend(Symbol(),OP_SELL,0.5,NormalizeDouble(Bid,Digits),30,0,0,NULL,MagicSell,0,clrRed);
      
   }
   Comment("\n",CountBYU(),
           "\n",CountSELL(),
           "\n",PR_B,
           "\n",PR_S);
    return(0);
  }
//+------------------------------------------------------------------+

Редактирован: 22 июня 2019, 21:48
avatar

  9  Servir Сообщений: 84

  • 22 июня 2019, 16:49
+
0
Держи сову —
1.Находит
2.Закрывает любые профитные ордера
3.Можно указать магик и мин. доход для закрытия
avatar

  9  Servir Сообщений: 84

  • 22 июня 2019, 16:52
+
0
А то не дождешься
avatar

  9  Servir Сообщений: 84

  • 22 июня 2019, 16:55
+
0
Спасибо! :) 
avatar

  9  SakhalinMen Автор Сообщений: 7 - Сахалин

  • 23 июня 2019, 09:56

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари