Помогите с экспертом.

 

Привет всем.

Недавно в сети нашол один советник, поганял его на тестере, всё вродебы хорошо но из-за довольно высокого тейк профита он очень редко открывает ордера.

Просьба ко всем кто может помочь, помогите уменьшыть тейк профит со 100 ну к примеру до 50 пунктов может так будет лутше,

заодно и усебя протестите может и вам понравится.

И ещё один выопрос.

Почему если стандартные советники в навигаторе высвечиваются цветными иконками то этот и Lucky 2.4 черно белые,

и с помощью MQL не открываются и изменить в них я ничего не могу.

Заранее всем спасибо.

favorit96@meta.ua

Файлы:
 
Кнопка в тестере "Свойства эксперта" И вводи что хочешь
 
favorit96:

Почему если стандартные советники в навигаторе высвечиваются цветными иконками то этот и Lucky 2.4 черно белые,

Исходный код программы находится в файле mq4, а исполняемый код в файле ex4.

Если на локальном ПК есть оба файла (т.е. имеется возможность править исходный код), то - цветная иконка,
если на локальном ПК только ех4 (исполняемый файл поправить невозможно), то - серая иконка.

 
//------- Внешние параметры советника --------------------------------
extern string _Parameters_Trade = "----- Параметры торговли";
extern double Lots       = 1;    // Размер торгуемого лота
extern int    StopLoss   = 20;     // Размер фиксированного стопа
extern int    TakeProfit = 40;      // Размер фиксированного тэйка
extern int    Kperiod    = 39;
extern int    Dperiod    = 5;
extern int    slowing    = 5;
extern int    Slippage   = 3;      // Проскальзывание цены
 
extern string _Parameters_Expert = "----- Параметры советника";  
extern color clOpenBuy   = LightBlue;    // Цвет открытия покупки
extern color clOpenSell  = LightCoral;   // Цвет открытия продажи
extern color clCloseBuy  = Blue;         // Цвет закрытия покупки
extern color clCloseSell = Red;          // Цвет закрытия продажи
 
//---- Глобальные переменные советника -------------------------------
int prevTimeBar;
 
void deinit() { Comment(""); }
 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void start() {
  if (prevTimeBar!=Time[0]) OpenPositions();
  prevTimeBar=Time[0];
}
 
//+------------------------------------------------------------------+
//| Открытие позиций                                                 |
//+------------------------------------------------------------------+
void OpenPositions() {
  double ldStop=0, ldTake=0;
  int    bs=GetTradeSignal();
 
  if (!ExistPosition()) {
    if (bs>0) {
      if (StopLoss!=0) ldStop=Ask-StopLoss*Point;
      if (TakeProfit!=0) ldTake=Ask+TakeProfit*Point;
      OpenPosition(OP_BUY, ldStop, ldTake);
    }
    if (bs<0) {
      if (StopLoss!=0) ldStop=Bid+StopLoss*Point;
      if (TakeProfit!=0) ldTake=Bid-TakeProfit*Point;
      OpenPosition(OP_SELL, ldStop, ldTake);
    }
  }
}
 
//+------------------------------------------------------------------+
//| Возвращает торговый сигнал                                       |
//+------------------------------------------------------------------+
int GetTradeSignal() 
{
    double stoch_m_1=iStochastic(NULL,15,Kperiod,Dperiod,slowing,MODE_EMA,0,MODE_MAIN,1);
    double stoch_m_2=iStochastic(NULL,15,Kperiod,Dperiod,slowing,MODE_EMA,0,MODE_MAIN,2);
    double stoch_s_1=iStochastic(NULL,15,Kperiod,Dperiod,slowing,MODE_EMA,0,MODE_SIGNAL,1);
    double stoch_s_2=iStochastic(NULL,15,Kperiod,Dperiod,slowing,MODE_EMA,0,MODE_SIGNAL,2);
 
    if ( NormalizeDouble( stoch_s_1 - stoch_m_1, Digits ) > 0.0 && 
          NormalizeDouble( 20.0 - stoch_m_1, Digits ) > 0.0 && 
          NormalizeDouble( 20.0 - stoch_s_1, Digits ) > 0.0 && 
          NormalizeDouble( stoch_m_2 - stoch_s_2, Digits ) >= 0.0 ) return(1);
 
    return(0);
 
 
    
}
//+------------------------------------------------------------------+
//| Возвращает флаг существования позиции по номеру                  |
//+------------------------------------------------------------------+
bool ExistPosition() {
  for (int i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol()) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) return(True);
      }
    }
  }
  return(False);
}
 
//+------------------------------------------------------------------+
//| Открытие позиции                                                 |
//| Параметры:                                                       |
//|   op     - операция                                              |
//|   ldStop - уровень стоп                                          |
//|   ldTake - уровень тейк                                          |
//+------------------------------------------------------------------+
void OpenPosition(int op, double ldStop, double ldTake) {
  color  clOpen;
  double pp;
 
  if (op==OP_BUY) {
    clOpen=clOpenBuy; pp=Ask;
  } else {
    clOpen=clOpenSell; pp=Bid;
  }
  pp=NormalizeDouble(pp, Digits);
  OrderSend(Symbol(),op,Lots,pp,Slippage,ldStop,ldTake,"",0,0,clOpen);
}

посмотри этот простой и лаконичный советник

зы (с) текст не мой

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