[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 143

 

Вот так:

//+------------------------------------------------------------------+
extern string   _____= "Параметры Длинных позиций"; 
extern int     RSI_period  =20;
extern int     MA_period          =21;
extern int     TP=200;
extern int     SL=61;

extern string   ____= "Параметры Коротких позиций";
extern int     RSI_period_SELL  =20;          
extern int     MA_period_SELL          =21;
extern int     TP_=200;
extern int     SL_=61;

//------------------------------
extern string     ______= "Общие Параметры ";
extern double  Lot=0.1;
extern int     Slippage=3;
extern int    Low_lim=8;
extern int   Up_lim=8;

int ExpertBars;
int ticket;

//*********************************************************************
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
ExpertBars = Bars;
//----
   return(0);
  }

Далее:





int start()
  {
bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
if (isNewBar) { //если есть новый бар
 
//===== Ищем возможность войти в рынок =========================================
if (Long)                   {     //если "выключатель" включен
if (!ExpertOrder( MagicLong ))//если  нет открытых длинных позиций 
  {
 //------заполняем массив значениями RSI для длинных позиций --------
double RSI_array_buy[50];
int    j=0;
while (j<50)
 {
RSI_array_buy[j]= iRSI(NULL, 0, RSI_period, MODE_SMA, j);
j++;
 }
ArraySetAsSeries(RSI_array_buy,true);
double MA_low =iMAOnArray(RSI_array_buy,0,MA_period,1,MODE_SMA,0);
double RSI_0=iRSI(NULL, 0, RSI_period,MODE_SMA, 1);
double RSI_1=iRSI(NULL, 0, RSI_period,MODE_SMA, 2);   
//---------проверяем условие на покупку----------------------------
  if   (           (RSI_1<MA_low)  &&
          (RSI_0>MA_low)  )
   {
  ticket=OrderSend(Symbol(),0,Lot,Ask,Slippage,Bid-SL*Point,Ask+TP*Point,NULL,MagicLong,0,CLR_NONE);
  if (ticket<0) { Print("Ошибка открытия ордера BUY #", GetLastError()); return (0);   }          
   }
   }}
   //--------------------------------------------------------------
if (Short)                   {     //если "выключатель" включен 
if (!ExpertOrder( MagicShort ))//если  нет открытых длинных позиций 
  {  
 // ---заполняем массив значениями рси  для коротких  позиций
double RSI_array_sell[50];
int    k=0;
while (k<50)
 {
RSI_array_sell[k]= iRSI(NULL, 0,RSI_period_SELL, MODE_SMA, k);
k++;
 }
ArraySetAsSeries(RSI_array_sell,true);
double MA_up =iMAOnArray(RSI_array_sell,0, MA_period_SELL ,1,MODE_SMA,0);
double RSI_0s=iRSI(NULL, 0, RSI_period_SELL,MODE_SMA, 1);
double RSI_1s=iRSI(NULL, 0, RSI_period_SELL,MODE_SMA,2);
    
//--------проверяем условие на продажу------------------------------
  if  (           (RSI_1s > MA_up )  &&
          (RSI_0s < MA_up )) 
   {       
  ticket=OrderSend(Symbol(),1,Lot,Bid,Slippage,Bid+SL_*Point,Bid-TP_*Point,NULL,MagicShort,0,CLR_NONE);
  if (ticket<0) { Print("Ошибка открытия ордера SELL #", GetLastError()); return (0);  }     
   } 
   }} 
 

Спасибо!

 
Здравствуйте! Попытался ZZ сделать в виде гистограммы с отображением на рабочем ТФ его сигналов как с младшего, так и старшего ТФ,но выдал 5 ошибок" 'ExtMapBuffer2' - variable not defined ", в чём косяк?.....Подсобите если не сложно!!Спасибо
Файлы:
dinap_zzg.mq4  4 kb
 

Господа (Товарищи :)))

Помогите кто чем может совсем начинающему...

Пытаюсь реализовать индикатор MAMy (лежит в кодобазе) в стрелочной форме.

Вроде как даже и получилось, но стрелки отрисовуются по несформированному бару, и если к моменту его формирования условия изменились - стрелка не убирается, а убирается только при перезапуске индикатора.

Хотелось чтобы стрелки отрисовывались только на сформированных барах. Если у кого будет время - преподайте практический урок - поправте сей корявенький код...

(Вполне возможно найдете что то лишнее - извините (написать индюк с нуля - руки не оттуда растут - хотя и золотые) пользуюсь пока чужими заготовками).

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

Файлы:
 

Большое спасибо rid !   

Это именно то, что доктор прописал!

А то из истории счета, на графике

получается как то не очень.



 

подскажите плз, как в mql можно имитировать отладчик (чтобы пошагово смотреть работу алгоритма с текущими значениями переменных), если отладчика нет, может есть ф-ия ожидания нажатия клавиши и ф-ия вывода диалога или что-нибудь подобное?

 

нашел ф-ию Print, но теперь возник другой вопрос: как работает вывод индикаторов?

На графике 512 баров. Теоретически код должен принтить start и номер бара на 1х 14 барах, затем main и номер бара на остальных, но почему-то выводится только start до самого конца и с 295 бара. Подскажите плз в чем дело?

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Yellow

extern int Param=14;
extern double Razmah=0.9;

double VH[],VL[],Rang=0, z=0,z1=0,num=0, num1=0;
int init()
  {
   SetIndexBuffer(0, VH);
   SetIndexBuffer(1, VL);
   return(0);
  }
int start()
  {
   int i, counted_bars=IndicatorCounted();
   if (counted_bars<=Param+1) 
   { 
      for(i=0;i<=Bars-counted_bars-1;i++)
      {
         VH[i]=High[i];
         VL[i]=Low[i];
         num++;
         Print("Start     ", num);
      }
      return(0);
   }
   
   i=-5;
   if(counted_bars>Param+1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      num1++;
      Print("Main     ",num1 );
      VH[i]=High[i]*1.01;
      VL[i]=Low[i]*0.99;
      i--;
     }
   return(0);
  }
 
Andrej78 писал(а) >>

нашел ф-ию Print, но теперь возник другой вопрос: как работает вывод индикаторов?

На графике 512 баров. Теоретически код должен принтить start и номер бара на 1х 14 барах, затем main и номер бара на остальных, но почему-то выводится только start до самого конца и с 295 бара. Подскажите плз в чем дело?

В логах смотреть надо

 
Vinin писал(а) >>

В логах смотреть надо

а как логи посмотреть?

 
Помогите, пожалуйста зациклить, а то что-то не получается. Может просто достаточно будет свежего взгляда? Заранее благодарю за помощь. Описание в коде.
Файлы:
proba9.mq4  3 kb