[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 226

 
doon:

Как сделать, чтобы советник покупал или продавал в определенное время (sleep не использовать)?

Функции даты-времени помогут: https://book.mql4.com/ru/functions/datetime
 
Fam:
Функции даты-времени помогут: https://book.mql4.com/ru/functions/datetime

Спасибо, но там все равно придется слип вставлять.

 
Народ! Пытаюсь сделать,что бы торговал лотом в завимилости от риска....ну что невыходит....пишет
 EURUSD,M15: OrderSend error 4051

подскажите где ошибка....

void OpenBuy() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 
   ldLot = GetSizeLot(); 
   ldStop = GetStopLossBuy(); 
   ldTake = GetTakeProfitBuy(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_BUY,ldLot,Ask,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenBuy); 
   if (UseSound) PlaySound(NameFileSound); 
} 
void OpenSell() { 
   double ldLot, ldStop, ldTake; 
   string lsComm; 

   ldLot = GetSizeLot(); 
   ldStop = GetStopLossSell(); 
   ldTake = GetTakeProfitSell(); 
   lsComm = GetCommentForOrder(); 
   OrderSend(Symbol(),OP_SELL,ldLot,Bid,Slippage,ldStop,ldTake,lsComm,MAGIC,0,clOpenSell); 
   if (UseSound) PlaySound(NameFileSound); 
} 
string GetCommentForOrder() {   return(Name_Expert); } 
double GetSizeLot() { 
   double ldlot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
   ldlot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1) ldlot=NormalizeDouble(ldlot-ldlot*losses/DecreaseFactor,1);
     }
   if(ldlot<0.1) ldlot=0.1;
                         } 
double GetStopLossBuy() {       return (Bid-sStopLoss*Point);} 
double GetStopLossSell() {      return(Ask+sStopLoss*Point); } 
double GetTakeProfitSell() {    return(Bid-sTakeProfit*Point); } 
double GetTakeProfitBuy() {     return(Bid+sTakeProfit*Point); } 

return(0);
 
Vinin:

Посмотри здесь https://www.mql5.com/ru/forum/103774

Всем спасибу, буду пробовать в работе...
 
charter:

Боюсь, что это справедливо только для тайм-серии.

В моем случае ее даже ткнуть некуда.

Идея Ваша правильная, т.е. надо как-то развернуть порядок, но как пока не знаю


не бойся, работает
 
Vovo4ka:
Народ! Пытаюсь сделать,что бы торговал лотом в завимилости от риска....ну что невыходит....пишет

подскажите где ошибка....


забыл строчку вписать в лот
return (ldlot);
 
todem:

забыл строчку вписать в лот

точняк......забыл....спс большое....а то я уже раз 20 проверил, понять не мог что за фигня..))
 

Помогите с вопросом по requote+slippage.

Ситуация следующая - экспертом отправляю заявку на совершение сделки, Slippage=3пт, происходит ошибка 138 Requote. Делаю RefreshRates() и повторяю попытку с новым Ask, но на сервере цена уже лучше чем тот Ask по которому я отослал (второй раз после RefreshRates()), и по логике веще с ней нужно соглашаться, но иза того что отклонение цены на сервере больше размера Slippage в заявке - такая заявка отклоняется. (((

Как можно контролировать такую ситуацию? Т.е. если на сервере цена лучше то раздвигать Slippage чтоли, чтобы заявка принималась сервером. Или это не возможно?

 
ZZZEROXXX:

Помогите с вопросом по requote+slippage.

Ситуация следующая - экспертом отправляю заявку на совершение сделки, Slippage=3пт, происходит ошибка 138 Requote. Делаю RefreshRates() и повторяю попытку с новым Ask, но на сервере цена уже лучше чем тот Ask по которому я отослал (второй раз после RefreshRates()), и по логике веще с ней нужно соглашаться, но иза того что отклонение цены на сервере больше размера Slippage в заявке - такая заявка отклоняется. (((

Как можно контролировать такую ситуацию? Т.е. если на сервере цена лучше то раздвигать Slippage чтоли, чтобы заявка принималась сервером. Или это не возможно?


Увеличьте проскальзывание (Slippage). Видать сделки открывались на быстром рынке. Оно иной раз после важных новостей бывает, что тот же евробакс так выстреливает за 1-2 тика, что просто кошмар. И пока сервер обрабатывает приказ советника цена меняется очень круто.
 
Zhunko:
В МТ4 есть встроенный конвертер. Сервис -> Архив котировок.

Спасибо! Но цель заключается в следующем. Смещенные дневные бары (свечи), обновляются с поступлением котировок, график себя ведет как обычный график: на него можно вешать другие индикаторы, советники, строить каналы, уровни и т.д. Это должно быть что-то типа нестандартных таймфреймов, только нестандартность заключается в смещении баров (свечей) относительно терминального времени: H4 - на -3, -2, -1, 1, 2 или 3 часа; D1 - на -23, -22, ... 1, 2, ... или 23 часа; W1 - на -6, -5, ... или 6 дней и тому подобное. Смещение должно задаваться во входных параметрах индикатора.

Такое есть?

Заранее благодарен.