Советники: DVD Level - страница 10

 
igrex-rul:

Мне тоже пошлите вариант для 4-х значного дц... Плиз... У самого мозгов не хватило с этим /10...


Когда сделаю, выложу в общем доступе.
 
denisdenisov:

Конечно, не возражаю - приветствую.

//+------------------------------------------------------------------+
//| Get number of lots for this trade                                |
//+------------------------------------------------------------------+
double GetLots()
  {
   double lot, loss;
   if(MoneyManagement)
     {
      RefreshRates();                              // Обновление данных
      double
      Min_Lot=MarketInfo(Symbol(),MODE_MINLOT),        // Миним. колич. лотов 
      Max_Lot=MarketInfo(Symbol(),MODE_MAXLOT),        // Миним. колич. лотов 
      Free   =AccountFreeMargin(),                     // Свободн средства
      One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED),// Стоимость 1 лота
      Step   =MarketInfo(Symbol(),MODE_LOTSTEP);       // Шаг изменен размера
 
      loss = GetProfitLastClosePos();
      if (loss < 0) {
         lot = MathFloor(-2*loss/One_Lot/Step)*Step;
         if (lot > Max_Lot) lot = Max_Lot;
         if (lot*One_Lot > Free) lot = MathFloor(Free/One_Lot/Step)*Step;
         if (lot < Min_Lot) lot = Min_Lot;
         return(lot);
      }
      lot=MathFloor(Free*TradeSizePercent*0.01/One_Lot/Step)*Step; // Для открытия
 
      if(lot < Min_Lot) lot=Min_Lot;               // Не меньше минимальн
   
      if (lot*One_Lot > Free)                      // Лот дороже свободн.
        {
         lot = MathFloor(Free/One_Lot/Step)*Step;
        }
      //lot=LotsOptimized();
     }
     else 
     {
      lot=Lots;
      //if(AccountIsMini)
      //  {
      //   if (lot > 1.0) lot=lot/10;
      //   if (lot < 0.1) lot=0.1;
      //  }
     }
     //----
   return(lot);
  }
//+------------------------------------------------------------------+
int GetProfitLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=0;
  
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderProfit();
          }
        }
      }
    }
  }
  return(r);
}
 
denisdenisov:
igrex-rul:

Мне тоже пошлите вариант для 4-х значного дц... Плиз... У самого мозгов не хватило с этим /10...


Когда сделаю, выложу в общем доступе.

Спасибо, буду ждать...
 

Подскажите, кто пробовал - где и как разместить советника на внешнем сервере (надежно, недорого, и т.п.) И желательно с возможностью получать сигнал, если там все же сбой произошел....

Денис, а вы рассматриваете возможность открытия ПАММ счета в Альпари (или если уже есть, то какой? ;-)

 
mql4dar:

Подскажите, кто пробовал - где и как разместить советника на внешнем сервере (надежно, недорого, и т.п.) И желательно с возможностью получать сигнал, если там все же сбой произошел....

Денис, а вы рассматриваете возможность открытия ПАММ счета в Альпари (или если уже есть, то какой? ;-)


Уже есть, скоро капитал дотяну и документы предоставлю.
 
ikatsko:
denisdenisov:

Конечно, не возражаю - приветствую.

//+------------------------------------------------------------------+
//| Get number of lots for this trade                                |
//+------------------------------------------------------------------+
double GetLots()
  {
   double lot, loss;
   if(MoneyManagement)
     {
      RefreshRates();                              // Обновление данных
      double
      Min_Lot=MarketInfo(Symbol(),MODE_MINLOT),        // Миним. колич. лотов 
      Max_Lot=MarketInfo(Symbol(),MODE_MAXLOT),        // Миним. колич. лотов 
      Free   =AccountFreeMargin(),                     // Свободн средства
      One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED),// Стоимость 1 лота
      Step   =MarketInfo(Symbol(),MODE_LOTSTEP);       // Шаг изменен размера
 
      loss = GetProfitLastClosePos();
      if (loss < 0) {
         lot = MathFloor(-2*loss/One_Lot/Step)*Step;
         if (lot > Max_Lot) lot = Max_Lot;
         if (lot*One_Lot > Free) lot = MathFloor(Free/One_Lot/Step)*Step;
         if (lot < Min_Lot) lot = Min_Lot;
         return(lot);
      }
      lot=MathFloor(Free*TradeSizePercent*0.01/One_Lot/Step)*Step; // Для открытия
 
      if(lot < Min_Lot) lot=Min_Lot;               // Не меньше минимальн
   
      if (lot*One_Lot > Free)                      // Лот дороже свободн.
        {
         lot = MathFloor(Free/One_Lot/Step)*Step;
        }
      //lot=LotsOptimized();
     }
     else 
     {
      lot=Lots;
      //if(AccountIsMini)
      //  {
      //   if (lot > 1.0) lot=lot/10;
      //   if (lot < 0.1) lot=0.1;
      //  }
     }
     //----
   return(lot);
  }
//+------------------------------------------------------------------+
int GetProfitLastClosePos(string sy="", int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal(), r=0;
  
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if ((OrderSymbol()==sy || sy=="") && (mn<0 || OrderMagicNumber()==mn)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            r=OrderProfit();
          }
        }
      }
    }
  }
  return(r);
}


При компиляции этих изменений кода, выдаёт наличие пяти ошибок. У Вас также?
 
Grigras: 

При компиляции этих изменений кода, выдаёт наличие пяти ошибок. У Вас также?

ошибок нет, есть 1 предупреждение:


Компиляция 'DVD 100-50 cent.mq4'... 
Function "LotsOptimized" is not referenced and will be removed from exp-file
0 ошибок, 1 предупреждений

 
Осваиваю MT4 c этой системой. Не удается прогнать тест. А именно, хотя дата указана с начала 2009 года, тестирует только последнюю неделю. Видимо история не загрузилась. А в инструкции написано типа "при текстировании загрузится автоматически". Что делать?
 
mql4dar:
Осваиваю MT4 c этой системой. Не удается прогнать тест. А именно, хотя дата указана с начала 2009 года, тестирует только последнюю неделю. Видимо история не загрузилась. А в инструкции написано типа "при текстировании загрузится автоматически". Что делать?

Грузите вручную Сервис -> Архив котировок -> выбираете символ и период жмете Загрузить.
 
Tiburond:

Grigras: 

При компиляции этих изменений кода, выдаёт наличие пяти ошибок. У Вас также?

ошибок нет, есть 1 предупреждение:


Компиляция 'DVD 100-50 cent.mq4'... 
Function "LotsOptimized" is not referenced and will be removed from exp-file
0 ошибок, 1 предупреждений


Получилось! Аналогично! Запустил тестер. Результат не совсем тот, что хотелось бы. Сейчас всё-таки лот между СЛ наращивается (видимо из-за привязки его к средствам), это может привести к тому, что очередной СЛ придется на макс. лот. Я предлагаю после СЛ жёстко уменьшать лот от макс. к мин. до следующего СЛ. Так можно?
Причина обращения: