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

 
ax00071:  в журнале появляется запись попытка закрыть buy2, unknown ticket for orderclose function. Код прикладываю по памяти поскольку на работе

Ах. Пишу по памяти поскольку тоже на работе. Попробуйте:      и Тикет сравните с тем, что в отчете у ордера. В тестере кажется это 0, 1, 2, 3, ....

RefreshRates(); // Это обязательно ДО OrderSelect() и лучше в таком виде: while (! RefreshRates()) ;
for(int i=OrdersTotal()-1; i>=0; i--)
  if (! OrderSelect(i,SELECT_BY_POS)) continue;
  Ticket=OrderTicket(); 
  Lot   =OrderLots();

  // Сообщение о попытке следует выдавать ДО ее осуществления, т.к. попытка может что-то изменить
  Alert ("Попытка закрыть Buy Ticket=",Ticket, "  Lot=",Lot);  // Кажется Alert в тестере бестолкова, попробуйте Print
  Ans=OrderClose(Ticket,Lot,OrderClosePrice() ... );
}

 
novikov433:

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

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

что то вобще мозг не варит что даже в конструкторе надо сделать 1,2,3 и т.д и почему самое главное именно в таком порядке нужно всё соединить стрелочками, кто вобще проводит обучение mql 4 от и до, а не как интернет бойцы создают курсы в которых вобще нечего не объясняют почему именно так происходит , то есть в  словах, сам потом нечего нового не сделаешь, а будешь вынужден просто копировать их код .... они же ведь знают за какой порядок что отвечает и не тыкали наугад....ну пусть профи делают пирамидинг, динамический лот, стоп грамотный; моя задача кроется в другом - скачать нужные фильтры и понять суть образования тренда. Спасибо за помощь!

Чтобы самому научиться достаточно иметь документацию, а она есть, уметь читать и понимать прочитанное. Если с первого раза не получилось понять, прочесть ещё несколько раз и желательно помедленней, чтобы мозг успел распознать смысл прочитанного.

А дальше уже полёт фантазии.

Хочу открыть ордер при условии... открываешь раздел документации "Торговые функции" находишь функцию открытия ордера и согласно синтаксиса пишешь...

Ах, да... надо-же соблюсти условие... открываешь раздел "Операторы", читаешь "Условный оператор if-else" и пишешь необходимое условие.

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

Торговые функции - Справочник MQL4
Торговые функции - Справочник MQL4
  • docs.mql4.com
Торговые функции - Справочник MQL4
 
и опять я:)
Написал функцию, которая позволяет открыть не более n ордеров за 1 день.
сейчас функция сливает депозит - т. е. ордера открываются на каждом тике.

Где я опять налажал?)

int OrderMax = 3; // максимальное количество ордеров, которые можно открыть в течении 1 дня. 
void OpenOrders()
{
      for (int i = 1; i <= 5; i++)
      {
         if (DayOfWeek() == i)
         {
            int count_max = 0;
            if (count_max <= OrderMax)
            {  
               for(int cn = OrdersTotal()-1; cn>=0; cn--)
               {
                     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
                     count_max++; 
               }
            }
         }
      }
}
 
Ребята, можно ли с помощью одного советника открывать ордера на других парах? Например Советник только стоит на паре EURAUD и при условии открытии открывается сделка на парах EURAUD и GBPUSD. Какое должно быть условие если будет возможность?
 
ivan-baaton:
и опять я:)
Написал функцию, которая позволяет открыть не более n ордеров за 1 день.
сейчас функция сливает депозит - т. е. ордера открываются на каждом тике.

Где я опять налажал?)

int OrderMax = 3; // максимальное количество ордеров, которые можно открыть в течении 1 дня. 
void OpenOrders()
{
      for (int i = 1; i <= 5; i++)
      {
         if (DayOfWeek() == i)
         {
            int count_max = 0;
            if (count_max <= OrderMax)
            {  
               for(int cn = OrdersTotal()-1; cn>=0; cn--)
               {
                     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
                     count_max++; 
               }
            }
         }
      }
}

На мой взгляд вообще подход не логичный. Зачем определять день недели? Какая разница какой сегодня день, если в условии должно быть "сегодня не открывать больше xxx ордеров"?

С моей точки зрения логичней пересчитать открытые сегодня ордера и поставить соответствующее условие. соответственно в условии

                     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderType() == OP_BUY)
                     count_max++; 
не хватает определения даты открытия ордера.
 

Rustam Bikbulatov:
Ребята, можно ли с помощью одного советника открывать ордера на других парах? Например Советник только стоит на паре EURAUD и при условии открытии открывается сделка на парах EURAUD и GBPUSD. Какое должно быть условие если будет возможность?

Можно.

Только в тестере не работает.

int  OrderSend(
   string   symbol,              // символ
   int      cmd,                 // торговая операция
   double   volume,              // количество лотов
   double   price,               // цена
   int      slippage,            // проскальзывание
   double   stoploss,            // stop loss
   double   takeprofit,          // take profit
   string   comment=NULL,        // комментарий
   int      magic=0,             // идентификатор
   datetime expiration=0,        // срок истечения ордера
   color    arrow_color=clrNONE  // цвет
   );
 
Alexey Viktorov:
Можно.

Только в тестере не работает.


А их как перечислять? через запятую или &&?
 
Rustam Bikbulatov:

А их как перечислять? через запятую или &&?

Их это что? перечислять символы? или что?

В каждом OrderSend свой один символ. Никаких запятых и прочих штучек...

 
Alexey Viktorov:

Их это что? перечислять символы? или что?

В каждом OrderSend свой один символ. Никаких запятых и прочих штучек...


перечислять пары 
 
LRA:

Ах. Пишу по памяти поскольку тоже на работе. Попробуйте:      и Тикет сравните с тем, что в отчете у ордера. В тестере кажется это 0, 1, 2, 3, ....

Благодарю за внимание )) Вот я лопух . . . . . . на закрытии у меня стояло условие в пятницу в 22:00 закрывать сделку, без доп условий на проверку типа сделки. А сама сделка закрылась на пару часов раньше. Ну и когда стукнуло 22:00 советник начал отправлять ордера на закрытие уже закрытого ордера . . . . .
Причина обращения: