[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 27

 
volshebnik:
Да, большое спасибо за подробнейшее разъяснение. Поставил на оптимизацию по всем ТФ. По результатам после оптимизации+тестировании на разных участках отпишусь.


Вы спрашивали о возможности программно проводить перебор и оптимизацию возможных ТФ для получения с них значений индикаторов в эксперте. Это возможно следующим образом - для примера -

кускочки кода, в файле - эксперт из журнала, где подобная операция проведена - там все подробно расписано с комментариями

......
extern int t_trend_period=7;
......

int trend_period=GetPeriod(t_trend_period); // это ф-ия для определения ТФ согласно заданному значению t_trend_period - заданному во внешней переменной (диапазон от 0 до 7)

double t_stoch_main=iStochastic(NULL,trend_period,t_Kperiod,t_Dperiod,t_slowing,MODE_SMA,0,MODE_MAIN,0);
......

// сама ф-ия выбота ТФ для оптимизации по всем периодам 
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;
   case 2: periodres=5;break;
   case 3: periodres=15;break;
   case 4: periodres=30;break;
   case 5: periodres=60;break;
   case 6: periodres=240;break;
   case 7: periodres=1440;break;
   default: periodres=1;break;
  }
return(periodres);
}

Может кому еще подобная инфа пригодится.

Файлы:
 

Подскажите пожалуста! Как сделать, допустим открылся новый бар в часовом таймфреме (H1) и чтобы время отчитывал ну где-то на 50-минут в этом баре, после 50-мин. даст сигнал. Я слышал про Sleep.

 
anton777:

Подскажите пожалуста! Как сделать, допустим открылся новый бар в часовом таймфреме (H1) и чтобы время отчитывал ну где-то на 50-минут в этом баре, после 50-мин. даст сигнал. Я слышал про Sleep.

int minutes=50; 

if(TimeCurrent()>=iTime(NULL,PERIOD_H1,0)+minutes*60){

   /// 

}
 

У меня получается странная вещь - пользовательский индикатор на графике и внутри советника выдаёт совсем разные цифры. Индикатор - MQL-аналог LinearReg из MetaStock. Написан он так

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Magenta

extern int  RPeriod = 20;

int shift = 0, cnt = 0,loopbegin = 0;
bool first = True;
int prevbars = 0;
double sum =0, WT = 0;
int i = 0;

double val1[];

int init()
{
SetIndexBuffer(0,val1);
   return(0);
}

int start()
{
   if (RPeriod<1) 
   {
   return(0);
   }
   loopbegin=Bars-RPeriod-1;
   for (shift=loopbegin; shift>=0; shift--)
   {
      sum=0;
      for (i=RPeriod; i>=1; i--)
      {
         sum=sum+(i-(RPeriod+1)/3)*Close[RPeriod-i+shift];
      }
      WT = sum*6/(RPeriod*(RPeriod+1));

           val1[shift] = WT;
        }
   return(0);
}
При нанесении его на график он показывает ровно то же, что и в MetaStock'е. Но стоит его вставить в торговый советник, так на участке EURUSD, где котировки в районе 1,29 его значение оказывается больше 1,4 (при его свойстве indicator_chart_window). Естественно, воспроизведённые торговые системы для MetaStock работать не могут, получается, что они всегда держат одну позицию. Если я нажимаю результаты работы советника, то линия этого индикатора остаётся далеко, но если его просто перекомпилировать, тут же график становится правильным, как в MetaStock. Никак не могу понять, от чего такая разница.
 

Здравствуйте многоуважаемые спецы!

Хочу попросить у вас помощи! А именно:Хочу попробовать состряпать свой первый советник,с задачами...
1-Пипсовщик
2-М5
3-С возможностью задавать параметры стопов и тейков
4-Что бы в место тейков можно было (по желанию) включать разворот позы каждый раз по достижении заданного уровня
до остановки в ручную.Ну скажем по горячим клавишам.
5-Абсолютно без индюков.
Кажись всё.Надеюсь не загрузил
Собственно мне нужен хотя бы какой нить исходник,ну или макет,ну что бы не очень сложный Я так-то акромя скриптов ничего не делал, да и то, токмо готовые переделывал в основном, под себя.
Надеюсь на вашу помощь

 
Mr.Ross:

Здравствуйте многоуважаемые спецы!

Хочу попросить у вас помощи! А именно:Хочу попробовать состряпать свой первый советник,с задачами...
1-Пипсовщик
2-М5
3-С возможностью задавать параметры стопов и тейков
4-Что бы в место тейков можно было (по желанию) включать разворот позы каждый раз по достижении заданного уровня
до остановки в ручную.Ну скажем по горячим клавишам.
5-Абсолютно без индюков.
Кажись всё.Надеюсь не загрузил
Собственно мне нужен хотя бы какой нить исходник,ну или макет,ну что бы не очень сложный Я так-то акромя скриптов ничего не делал, да и то, токмо готовые переделывал в основном, под себя.
Надеюсь на вашу помощь

https://www.mql5.com/ru/articles/1413
 
Mr.Ross:

Хочу попросить у вас помощи!

спрашивайте поможем если есть непонятные моменты в части программирования, но не забывайте: "спасение утопающих - дело рук самих утопающих" = Вы показываете часть кода где есть непонятные моменты, код на 1,5 тыщи строк - увольте сами там разбирайтесь ;)
 
Ilya81:

У меня получается странная вещь

попробуйте визуально сравнить некий простой индикатор и данные которые получает советник через iCustom() из этого индикатора, думаю MovingAverage подходящий для экспериментов индикатор

наверно Вы неправильно пользуетесь ф-цией iCustom()

 
Integer:

Огромное тебе Спасибо!
 

Если кто работает на instaforex мт4, может сталкивались с проблемой:

у них на демо четырехзнак, на реале пятизнак, но очень странный - bid и ask округляют до четырехзнака.


вот такой код:

   if (Poz_Up)
      {
         ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,NormalizeDouble(Bid-300*Point,Digits),NormalizeDouble(Ask+300*Point,Digits),Komment,0,Green);
      }
   if (Poz_Dn)
      {
         ticket=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,NormalizeDouble(Ask+300*Point,Digits),NormalizeDouble(Bid-300*Point,Digits),Komment,0,Green);
      }

выдает SL&TP при открытии позиции то 300пп, то 3000пп, как будто определяет чему же равен Digits каждый раз по новому.

Может кто предложит как побороть это дело, и сталкивался ли кто с подобным, или это только у меня?