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

 
Доброго времени. Нуждаюсь в помощи так как сам не разбираюсь в кодах, написанию или изменению индикаторов. Буду краток.
Можете добавить звуковое уведомление (Alert) когда  показатель 
CrossUp изменяется от 0.00000  к -1.00000 
CrossDown от -1.00000 к 0.00000.
Помогите пожалуйста, буду бесконечно благодарен. Спасибо.

Файлы:
 
S.P.I:
Доброго времени. Нуждаюсь в помощи так как сам не разбираюсь в кодах, написанию или изменению индикаторов. Буду краток.
Можете добавить звуковое уведомление (Alert) когда  показатель 
CrossUp изменяется от 0.00000  к -1.00000 
CrossDown от -1.00000 к 0.00000.
Помогите пожалуйста, буду бесконечно благодарен. Спасибо.

Не тот формат, нужен mq4

 
Alekseu Fedotov:

Не тот формат, нужен mq4

Можно и с ex4 данную задачу сделать - в ресурсы его и читать буферы.

 
Artyom Trishkin:

Можно и с ex4 данную задачу сделать - в ресурсы его и читать буферы.

зачем? стандартный вызов индикатора из индикатора через iCustom(), работы думаю минут на 15-20 там, пусть будет 2 файла индикатора

 
Igor Makanu:

зачем? стандартный вызов индикатора из индикатора через iCustom(), работы думаю минут на 15-20 там, пусть будет 2 файла индикатора

В ресурсах тоже iCustom(), но файл один.

Ну тут кому как нравится - хочется два файла иметь - пусть два, один - значит один. И работы столько же.

 
Alekseu Fedotov:

Так ведь правильно, посчитайте .

Да, но это уже процент профита, какую то конструкцию нужно придумать, чтобы перемененной drawdown присваивалось значение при просадке, а если позиции в плюсе то значение drawdown  = 0 .
 
nalyk:
Да, но это уже процент профита, какую то конструкцию нужно придумать, чтобы перемененной drawdown присваивалось значение при просадке, а если позиции в плюсе то значение drawdown  = 0 .
   double drawdown=(AccountProfit()<0 ? AccountProfit()*100/AccountBalance() : 0);
   Comment("текущая просадка  = ",drawdown);
 

Здравствуйте, подскажите как правильно написать открытие ордеров от последнего фрактала . Я пыталась сделать так, но открывает в тестере не так.

void CheckForOpen()
{
  
   double hai_candle = iHigh(NULL,TimeCandleTrade,0);
   double low_candle = iLow(NULL,TimeCandleTrade,0); 
   fr_down = iFractals (Symbol(), 0, MODE_LOWER,3);
   fr_up = iFractals(Symbol(),0,MODE_UPPER,3);
   double SL, TP;
  
 if (BuyCount()==0 )
   {
  
    if (fr_down>0 && low_candle<Low[fr_down])
   {
     
      SL = NormalizeDouble(Ask - StopLoss*Point,Digits);
      TP = NormalizeDouble(Ask + TakeProfit*Point,Digits);
      ticket = OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP,NULL,magik,0,CLR_NONE);
      if (ticket <0)
       Print ("Не удалось открыть ордер на покупку",GetLastError());
   }
   
   }

int BuyCount()
  {
  int count = 0;
  for (int i=OrdersTotal()-1;i>=0;i--)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES) == true && 
        OrderMagicNumber()== magik &&                        
        OrderType() == OP_BUY )                       
        {
        count ++;
        }
    }
}

 
Artyom Trishkin:
Спасибо.
 
nelenaby:

Здравствуйте, подскажите как правильно написать открытие ордеров от последнего фрактала . Я пыталась сделать так, но открывает в тестере не так.

Вы ищите фрактал на третьем баре, его там может не быть. Ищите в цикле первый фрактал.

 
 for (int s=2; s<100; s++) 
     {
    fr_down=iFractals(Symbol(), 0, MODE_LOWER, s);
    if (f!=0) break;
     }


 

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