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

 
Mihail Matkovskij #:

Выше я всё написал. Внимательно перечитай сообщения. Твоя задача не является чем-то сложным. Если сосредоточишься на задаче, а не будешь пререкаться на форуме, что всё у тебя получится. Удачи.

"пререкаться" - училка вошла в чат. Прости, но ты больше выпячиваешь своё ЧСВ чем пишешь по делу. Ничего, пройдёт, в 13 я тоже был таким.
 
Выше я всё написал

Написал что? Про массив? Я это сделал первым, а или ты про определение индикатора? Или может про способ открывать два ордера и во второй помещать ТФ первого? Вот так изящное решение приводящее к куче побочных проблем.

 
Nerd Trader #:
"пререкаться" - училка вошла в чат. Прости, но ты больше выпячиваешь своё ЧСВ чем пишешь по делу. Ничего, пройдёт, в 13 я тоже был таким.

Дело не в моей важности или чем-то еще, а в важности знания программирования, коим ты не владеешь. Если бы ты учился допустим в универе и вёл себя так на парах, то преподаватель, как минимум, сделал бы тебе замечание или выгнал бы тебя. Вот тут бы ты ему и рассказал про ЧСВ?... :)

Ты не владеешь  знаниями не потому, что новичок, а по причине своего невежества... Когда тебе в очередной раз скажут, что советник отличается от индикатора, то ты и дальше будешь твердить своё "какая разница". :)

Написал: "Индикатор открывает сделки" и "Боту нужен таймфрем сделки". На такое никто и отвечать не стал бы, поскольку вопрос лишен всякой логики. Но я попытался ответить. За что получил кучу претензий и оскорблений. Это что вместо "Спасибо"?...
 
Nerd Trader #:
Кроме как создать массив где хранить ТФ ордеров предварительно считав их из комента ордера, может быть есть другой легкий способ передать ТФ в другой бот? Причем этот бот работает на удаленном сервере. Можно по сокету но для меня это пока сложно.

Шифруйте в магик. Всю процедуру шифрации и дешифрации я описывал в статьях.

 
Artyom Trishkin #:

Шифруйте в магик. Всю процедуру шифрации и дешифрации я описывал в статьях.

Дайте ссылку, каждый раз ищу минут 30) Хороший подход к кодировке.

 
Valeriy Yastremskiy #:

Дайте ссылку, каждый раз ищу минут 30) Хороший подход к кодировке.

Я сам не помню :)

Тоже буду искать минут 30 ...

 
Nerd Trader #:

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

Делайте индивидуальный магик-номер для ордеров на разных таймфреймах. При частичном закрытии этот номер не меняется.

//+-----------------------------------------------------------------------------+
//|  Описание : Автоматическая генерация магического номера                     |
//|             Generate Magic Number                                           |
//|             Магический номер генерируется в зависимости от инструмента      |
//|             и таймфрейма                                                    |
//+-----------------------------------------------------------------------------+
int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      SymNumber = 0;
   int      PMinuts = _Period;
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946
   if(StringFind(_Symbol,"BTC",0)>=0)  //1
      SymNumber = 5;
   if(StringFind(_Symbol,"ETH",0)>=0)  //2
      SymNumber = 8;
   if(StringFind(_Symbol,"BCH",0)>=0)  //3
      SymNumber = 13;
   if(StringFind(_Symbol,"LTC",0)>=0)  //4
      SymNumber = 21;
   if(StringFind(_Symbol,"XRP",0)>=0)  //5
      SymNumber = 34;
   if(StringFind(_Symbol,"SOL",0)>=0)  //6
      SymNumber = 55;
   if(StringFind(_Symbol,"LINK",0)>=0) //7
      SymNumber = 89;
   if(StringFind(_Symbol,"XLM",0)>=0)  //8
      SymNumber = 144;
   if(StringFind(_Symbol,"TRX",0)>=0)  //9
      SymNumber = 233;
   if(StringFind(_Symbol,"ATOM",0)>=0) //10
      SymNumber = 377;
   if(StringFind(_Symbol,"XMR",0)>=0)  //11
      SymNumber = 610;
   if(StringFind(_Symbol,"ADA",0)>=0)  //12
      SymNumber = 987;
   if(StringFind(_Symbol,"DOT",0)>=0)  //13
      SymNumber = 1597;
   if(StringFind(_Symbol,"DOGE",0)>=0) //14
      SymNumber = 2584;

   GenerateMN = (int)(SymNumber+PMinuts+mn);

   return (int)(GenerateMN);
  }
//--- End ---
 
Volodymyr Zubov #:

Делайте индивидуальный магик-номер для ордеров на разных таймфреймах. При частичном закрытии этот номер не меняется.

А зачем символ в мейджик шифровать, если он и так читается из ордера/позиции? И почему такие значения для SymNumber?

 
Volodymyr Zubov #:

Делайте индивидуальный магик-номер для ордеров на разных таймфреймах. При частичном закрытии этот номер не меняется.

За StringFind спасибо. Но я бы всё проще сделал.

int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      PMinuts = _Period;

   GenerateMN = (int)(PMinuts+mn);

   return (int)(GenerateMN);
  }

А инструмент ордера потом получил бы уже через OrderSymbol()

 

здравствуйте!

имеется необходимость при получении сигнала (например Бай) открыть противоположный ордер (Селл), после исполнения условия по лотности.

собрал код:

// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();
         
         if((bSignalBuy() == true)&&(GetLotSize()>LotControl))
         vOrderOpenSell();
// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
  
         if((bSignalSell() == true)&&(GetLotSize()>LotControl))
         vOrderOpenBuy();
     }

но при наступлении условия 

(GetLotSize()>LotControl)

открываются одновременно два разнонаправленных ордера. как "вылечить"?

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