вопрос к знатокам

 

Как заставить советника не выставлять более N-количество ордеров в день.

int up=0, dw=0, v=0, c=0, q=0, p=0;

//Bid-SLs*Point

//int ba=1;

//==============================================================================//

// Поиск ордеров

//==============================================================================//

int total=OrdersTotal();

//total=2 ;

int b=0, s=0,bb=0, ss=0;

for (int i=total-1; i>=0; i--)

{

if(OrderSelect(i, SELECT_BY_POS))

{

if(OrderSymbol()!=Symbol())continue;

{

if (OrderType()==OP_BUY&&OrderMagicNumber()==Magic)

{

b++ ;

}

if (OrderType()==OP_SELL&&OrderMagicNumber()==Magic)

{

s++ ;

}

}}}

/ / Условия открытия

int sa =1

if (sa==1)

{

OrderSend(Symbol(),OP_SELL,Lot,Ask,slip,SLss,Tpss,OrSt,Magic,0,Red);

}

 
EVgEN_SA:

Как заставить советника не выставлять более N-количество ордеров в день.

int up=0, dw=0, v=0, c=0, q=0, p=0;

//Bid-SLs*Point

//int ba=1;

//==============================================================================//

// Поиск ордеров

//==============================================================================//

int total=OrdersTotal();

//total=2 ;

int b=0, s=0,bb=0, ss=0;

for (int i=total-1; i>=0; i--)

{

if(OrderSelect(i, SELECT_BY_POS))

{

if(OrderSymbol()!=Symbol())continue;

{

if (OrderType()==OP_BUY&&OrderMagicNumber()==Magic)

{

b++ ;

}

if (OrderType()==OP_SELL&&OrderMagicNumber()==Magic)

{

s++ ;

}

}}}

/ / Условия открытия

int sa =1

if (sa==1)

{

OrderSend(Symbol(),OP_SELL,Lot,Ask,slip,SLss,Tpss,OrSt,Magic,0,Red);

}


"не выставлять более N-количество ордеров в день." Следующая схема:

extern int     Start=0; // ограничение работы сова по времени (часы)
extern int      End=23; // при таких значениях ограничение по количеству ордеров не в день, но в сутки.
int i,orderIndex;



double lots;                       // расчет лота 

int ticket;                        // Номер ордера
double orderLots;                  // Lots   
double orderProfit;                // Profit
double Price;                      // Цена открытия рыночного ордера
double SL;                         // Значение StopLoss ордера
double  TP;                        // Значение TakeProfit ордера

static datetime prevtime = 0;       // по ценам открытия

int start()
{
   int orderCount = 0;
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся
   
   
      i=10; // счетчик ордеров
            
      
         // ------------------------------------------------Считаем только наши ордера---------------------------

   int orderType;
   for (orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))
      {
         continue;
      }

      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != magic))
      {
         continue;
      }

      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue;
      }
      orderCount++;      
    }   
      Print( "Всего наших ордеров = " ,orderCount);    
      
      
      if(Sell_signal==true && orderCount<i && TimeHour(TimeCurrent()) >= Start && TimeHour(TimeCurrent()) <  End)
                  
          OrderSend(Symbol(),OP_SELL,lots, Bid,30,Ask+StopLoss*Point,0,"Expert",magic,0,Red);
                   
     
      if(Buy_signal==true && orderCount<i && TimeHour(TimeCurrent()) >= Start && TimeHour(TimeCurrent()) <  End)
          OrderSend(Symbol(),OP_BUY,lots, Ask,30, Bid-StopLoss*Point,0,"Expert",magic,0,Blue);
         
 }
 
EVgEN_SA:

Как заставить советника не выставлять более N-количество ордеров в день.


datetime NewTime,OldTime;

int sa=0;

NewTime=iTime("USDCHF", PERIOD_D1, 0),

if(NewTime!= OldTime)

{

OldTime=NewTime;

sa=0;

}

/ / Условия открытия

if (sa<N)

{

OrderSend(Symbol(),OP_SELL,Lot,Ask,slip,SLss,Tpss,OrSt,Magic,0,Red);

sa++;

}

 
peshihod:


datetime NewTime,OldTime;

int sa=0;

NewTime=iTime("USDCHF", PERIOD_D1, 0),

if(NewTime!= OldTime)

{

OldTime=NewTime;

sa=0;

}

/ / Условия открытия

if (sa<N)

{

OrderSend(Symbol(),OP_SELL,Lot,Ask,slip,SLss,Tpss,OrSt,Magic,0,Red);

sa++;

}


Робит если ордера открытые. А если они были открытые и уже закрылись и больше ставить в этот день не надо - тогда не работает.

За это тоже спасибо пригодится.

 
bool MaxDayOrders(int max,int magic=0,string symb=""){int i,x,y,t,ct,dt;
        dt = iOpen(Symbol(),PERIOD_D1,0);
        for(i=OrdersTotal()-1;i>=0;i--){
                if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
                        if(symb!=""){if(OrderSymbol()!=Symbol()){continue;}}
                        if(magic!=0){if(OrderMagicNumber()!=magic){continue;}}
                        if(OrderOpenTime()>=dt){x++;}
                }
        }
        if(x>=max){return(true);}
        for(i=OrdersHistoryTotal()-1;i>=0;i--){
                if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
                        if(symb!=""){if(OrderSymbol()!=Symbol()){continue;}}
                        if(magic!=0){if(OrderMagicNumber()!=magic){continue;}}
                        if(OrderOpenTime()>=dt||OrderCloseTime()>=dt){y++;}
                }
        }
        if(x+y>=max){return(true);}
        return(false);  
}
 
всем большое спасибо за ответы.
 

Всем привет!

Вопрос вот такой. При выходе с компа на удаленный север (удаленный рабочий стол) - ситуация заметно тормозит!

Как в замедленной сьёмке двигается мышка, браузер тормозит тоже, приказы для МТ4 тоже - словно в замедленной сьемке исполняются с небольшой задежкой.

Более того, заметил, что при полном ОБЗОРЕ РЫНКА ("показать все символы") - мт4 иной раз зависает на 15-20 секунд! (на удаленном столе одна-две мт4 с одним советником на каждой).

От чего это зависит? От небольшой оперативной памяти моего компа - либо от параметров удаленного сервера?

 
leonid553:

От чего это зависит? От небольшой оперативной памяти моего компа - либо от параметров удаленного сервера?

Это стандартный клиент RDP, встроенный в Виндоус, тормозит (если он используется). Есть сторонние решения, работающие гораздо шустрее, например вот бесплатный http://www.mremote.org/wiki/Default.aspx?Page=Overview&AspxAutoDetectCookieSupport=1

Кстати, проблема еще может быть в некорректных драйверах, установленных на той виртуалке, на которую заходите.

Ну и последняя, самая банальная причина - той же виртуальной машине (на стороне сервера) выдали слишком мало памяти, либо проц не тянет.

 
Понятно, спсб.