Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1938

 
Valeriy Yastremskiy #:
Функции появления нового бара, если iTime != OldTime то Алерт и OldTime =iTime на нулевом сдвиге/баре.

а в OldTime  какое значение надо записать? О_о

сама стрелка рисуется в момент открытия нулевого бара.

сделала такое условие

 if(iTime(NULL,0,0)!=iTime(NULL,0,1))
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
      }

не правильно работает- даже в тестере куча алертов в журнале. поменял местами сдвиг вот так

if(iTime(NULL,0,1)!=iTime(NULL,0,0))
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
      }

 тоже вылетает куча  алертов- не понимаю как эту штуку написать(((

 
DanilaMactep #:

а в OldTime  какое значение надо записать? О_о

сама стрелка рисуется в момент открытия нулевого бара.

сделала такое условие

не правильно работает- даже в тестере куча алертов в журнале. поменял местами сдвиг вот так

 тоже вылетает куча  алертов- не понимаю как эту штуку написать(((

 
static datetime OldTime=0;
if(iTime(NULL,0,0)!=OldTime)
      {
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol()); OldTime=iTime(NULL,0,0);
      }

Так при загрузке тоже будет алерт. При появлении нового бара  iTime(NULL,0,0) будет изменен и равенства не будет один раз, потом будет равенство и иф будет ложным. 

Можно так еще.

static bool FlagNewBar=false;
   if(BarTime!=Time[0])
     {
      BarTime=Time[0];
      FlagNewBar=true;
     }

или так, что бы получать новый бар на любом таймфрейме.

bool FlagNewBarF(int prd, datetime &ArgBarTime,bool &FlagNbar)
  {
   FlagNbar=false;
   if(ArgBarTime!=iTime(NULL,prd,0))
     {
      ArgBarTime=iTime(NULL,prd,0);
      FlagNbar=true;
     }

   return(FlagNbar);
  }

Вызов такой будет

 if(FlagNewBarF(1, BarTime1,FlagNewBar1))
     {
      Alert("FlagNbar1 ",FlagNewBar1,"BarTime1 ",TimeToStr(BarTime1,TIME_DATE|TIME_SECONDS));
      
     }

   if(FlagNewBarF(5, BarTime5,FlagNewBar5))
     {
      Alert("FlagNbar5 ",FlagNewBar5,"BarTime5 ",TimeToStr(BarTime5,TIME_DATE|TIME_SECONDS));
     
     }
 
Valeriy Yastremskiy #:

Так при загрузке тоже будет алерт. При появлении нового бара  iTime(NULL,0,0) будет изменен и равенства не будет один раз, потом будет равенство и иф будет ложным.

Большое спасибо за помощь- прикрутил- при компиляции выдался 1 алерт- посмотрим что будет дальше:-)
 

"Новый бар" - зло, при этом событии можно получать данные с индикатора "прошлого бара" т.е. newbar-1.

запустите 3 терминала на одном сервере и в зависимости от частоты торговли начнут в некоторых пропуски сигнала, именно сигнала, т.е. перед отправкой ордера ставим print(сигнал Buy например), ну и принт значения индикатора покажет значение прошлого бара.

можно конечно проверки понавешать...

 
Valeriy Yastremskiy #:
Общая метаквотов это папка терминал, в ней папки папки цыфры, это общие папки терминалов, там логи терминалов, данные и папка тестер, у нее свои логи и файлы папки. Папка мкл содержит логи работы советников, скриптов, индикаторов, окон, подокон.
все. Спс. Вчера чистил. Сегодня ещу проверю. Чистканул 30 Гб. Примерно с 10 терминалов и история в основном по инструментам и логи...
 
Artyom Trishkin:

В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти на MQL5 - языки очень похожи.

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

Надеюсь, что к решению вопросов подтянутся другие опытные участники нашего форума, и ветка будет интересна всем.

Здравствуйте, не кто не может помочь мне с функцией закрытия ордера, пробую так,

for (int i=1; i<=OrdersTotal(); i++)       

     {                                       

      if(OrderSelect(i-1,SELECT_BY_POS)==true)

        {

       if( Ask<= OrderOpenPrice())CloseBay();

       }

       }   

Когда Ask выше ордера Bay,всё в поряде, как только Bid становится выше ордера Bay ордер удаляется,  а должен удалятся когда аск ниже цены открытия . Помогите с этим разобраться, буду очень презнатилет. С уважением Александр.                            

 
Alexandr Spravchikov #:

Здравствуйте, не кто не может помочь мне с функцией закрытия ордера, пробую так,                        

Так не пробовали?

void CloseBuy()
{
   for(int i= OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if((OrderSymbol()==_Symbol) && (OrderMagicNumber()==Magic) && (OrderType()==OP_BUY))
         {
            if( Ask<= OrderOpenPrice())
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Green))
            {
               Print("Error closing a buy order!"+  IntegerToString(_Period,0) +" Error code = " + IntegerToString(GetLastError(),0));
            }
         }
      }
   }
   return;
}
 

Приветствую. Подскажите, пожалста, как на бинанс сделать чтоб  при торговом api запросе, к примеру по паре "BTCUSDT", количество лотов указывать не в BTC а в USDT ?

 

Привет всем! Подскажите, пожалуйста.


Идея простая. Написать советника, который будет при пробое одной из границ глобального канала открывать позицию, закрывать противоположную предыдущую. Канал строит индикатор. 

Я по гайдам из интернета накидал вариант. Бот открывает/закрывает позиции в тестере стратегий, но если посмотреть график, то совсем не по моим условиям. Я перебрал уже все переменные из буфера, проверил ошибки. Безрезультатно.  


Если кто-то может, подскажите, пожалуйста, чего не так, в какую сторону копать. :3


Прикрепил файл с переменными из буфера, демонстрацию индикатора, его исходные переменные, мой вариант советника. 

Файлы:
9.png  14 kb
f2.png  26 kb
second.mq4  15 kb
 
E1Macho1 #:

Привет всем! Подскажите, пожалуйста.

в какую сторону копать. :3

Копайте в сторону использования отладчика

Причина обращения: