Как заставить советника не выставлять более 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); }
Как заставить советника не выставлять более 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++;
}
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 с одним советником на каждой).
От чего это зависит? От небольшой оперативной памяти моего компа - либо от параметров удаленного сервера?
От чего это зависит? От небольшой оперативной памяти моего компа - либо от параметров удаленного сервера?
Это стандартный клиент RDP, встроенный в Виндоус, тормозит (если он используется). Есть сторонние решения, работающие гораздо шустрее, например вот бесплатный http://www.mremote.org/wiki/Default.aspx?Page=Overview&AspxAutoDetectCookieSupport=1
Кстати, проблема еще может быть в некорректных драйверах, установленных на той виртуалке, на которую заходите.
Ну и последняя, самая банальная причина - той же виртуальной машине (на стороне сервера) выдали слишком мало памяти, либо проц не тянет.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как заставить советника не выставлять более 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);
}