я бы вам порекомендовал :
1) создать тему в соответствующем разделе
2) выложить всю вашу стратегию и коды в открытую а не замыливать глаза остальным.
3) Не пытаться даже делать то же самое что вы делаете (делали) на четвертом форуме. особенно ваш последний опус.
4) если эти условия вас не устраивают то сервис "Работа" вас ждет.
я бы вам порекомендовал :
1) создать тему в соответствующем разделе
2) выложить всю вашу стратегию и коды в открытую а не замыливать глаза остальным.
3) Не пытаться даже делать то же самое что вы делаете (делали) на четвертом форуме. особенно ваш последний опус.
4) если эти условия вас не устраивают то сервис "Работа" вас ждет.
1. В каком разделе советуете разместить?;
2. Расскажу стратегию, если будет интерес в необходимом, для создания работоспособного советника, объеме, а коды индикатора - в кодобазе;
3. Прошу простить за оплошность, пагубность которой понял;
4. По обстоятельствам.
2. Расскажу стратегию, если будет интерес в необходимом, для создания работоспособного советника, объеме, а коды индикатора - в кодобазе;
Выкладывайте ТехЗадание и полное описание стратегии.
Хорошо, рекомендацию о переносе в соответствующий раздел, думаю, смогут осуществить модераторы, в случае необходимости.
1. Для начала, прошу Вас, привести скрин индикатора https://www.mql5.com/ru/forum/13504 для МТ5, чтобы я посмотрел, как он выглядит на самом деле на этой платформе, если не затруднит;
2. Привести его код здесь, поскольку Вы сделаете более грамотно, чем я;
3. Привести шаблон требований для составления ТЗ на советник;
А стратегия, вкратце, будет заключаться следованию показаниям и сигналам индикатора как по трендовой, так и по противотрендовой политике входа в рынок. Она будет дополнена мной по мере поступления возникающих специфических вопросов.
повторю еще раз.
или идёте в раздел работа и парите моск тамошним прогерам
или выкладывайте полное ТЗ на эксперт и забываете про эту ветку пока кто-либо не удосужится прочитать и задать вопросы.
Если вы чего-то не в состоянии делать - см. п. 1.
играться с вами в руководителя и команду никто не будет. коллективных разумов и исполнителей здесь тоже нет. хватит.
В свете призыва https://www.mql5.com/ru/forum/13504 , попробую создать тему, в надежде, что она, возможно, будет привлекательной и "горячей".
Необходимо создать советник для МТ5 по готовому индикатору для МТ5, написанным одним из участников (озвучу по согласованию с ним) по мотивам моих идей и приведенного в кодобазе https://www.mql5.com/ru/code/10339 . Задавайте вопросы по логике индикатора и будущего советника, отвечу. Будьте уверены, от полученного советника все останутся довольны - порвет рынок (не посчитайте за рекламу), гарантирую, лишь-бы программисты следовали моим рекомендациям и сами помогали мне в формулировке тонкостей изложения мысли, понятным программистам. Если есть интерес, то вперед, к созданию советника коллективным разумом! Сам индикатором не пользовался, поскольку МТ5 меня до сих пор мало интересовал, но по отзывам - работоспособный. Если тема непривлекательная выйдет, готов удалить по первому требованию участников, модераторов или руководства. Почему не в разделе "работа", потому, что подобный советник меня пока мало интересует, поскольку не умею работать на МТ5. Если выйдет стоящий советник, попробую научиться торговле на платформе МТ5.
Юсуф, вы просите создать советник, цитирую: "по готовому индикатору для МТ5", но зачем тогда приводите ссылку на кодбейс из MT4?
Выкладывайте здесь код готового индикатора для MT5 или в кодбейс для MT5, чтобы потенциально заинтересованные программисты могли хотя бы определиться с задачей.
Ведь если индикатор для MT5 уже готов, то любой программист может прогнать его в визуальном режиме в тестере MetaTrader5 и убедиться в том, стоит ли овчинка выделки или плюнуть на это дело.
в кодебазе вроде есть что-то
\https://www.mql5.com/en/charts/660698/eurusd-h1-metaquotes-software-corp-temp-file-screenshot-64629
- www.mql5.com
Юсуф, вы просите создать советник, цитирую: "по готовому индикатору для МТ5", но зачем тогда приводите ссылку на кодбейс из MT4?
Выкладывайте здесь код готового индикатора для MT5 или в кодбейс для MT5, чтобы потенциально заинтересованные программисты могли хотя бы определиться с задачей.
Ведь если индикатор для MT5 уже готов, то любой программист может прогнать его в визуальном режиме в тестере MetaTrader5 и убедиться в том, стоит ли овчинка выделки или плюнуть на это дело.
Пожалуйста:
#property copyright "(c) 2011.02.09, Vladimir Gomonov" #property link "MetaDriver@rambler.ru" #property version "1.04" #property indicator_chart_window #property indicator_buffers 8 #property indicator_plots 4 //--- plot P1 #property indicator_label1 "P1" #property indicator_type1 DRAW_COLOR_LINE #property indicator_color1 LightBlue, CLR_NONE #property indicator_style1 STYLE_SOLID #property indicator_width1 5 //--- plot P2 #property indicator_label2 "P2" #property indicator_type2 DRAW_COLOR_LINE #property indicator_color2 Pink, CLR_NONE #property indicator_style2 STYLE_SOLID // STYLE_DOT #property indicator_width2 3 //--- plot P3 #property indicator_label3 "P3" #property indicator_type3 DRAW_COLOR_LINE #property indicator_color3 Purple, CLR_NONE #property indicator_style3 STYLE_DASH #property indicator_width3 1 //--- plot Pf #property indicator_label4 "Pf" #property indicator_type4 DRAW_COLOR_LINE #property indicator_color4 DodgerBlue, CLR_NONE #property indicator_style4 STYLE_SOLID #property indicator_width4 2 #include <Math\gammaDF.mqh> //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ enum eiModes { eGammaMode, // Использовать Гамма-распределение eExpMode, // Использовать экспоненту }; //--- input parameters input int HistoryShift=1; // Сдвиг назад по истории (в барах) input int HistoryLen=20; // Глубина используемой истории (в барах) input int FutureLen=64; // Длина прогноза (в барах) input eiModes Mode=eGammaMode; // Режим расчёта //--- indicator buffers double P1Buffer[]; double P1Colors[]; double P2Buffer[]; double P2Colors[]; double P3Buffer[]; double P3Colors[]; double PfBuffer[]; double PfColors[]; int k; // = HistoryLen-1; int FullLen; // = HistoryLen + FutureLen int Sk; // Сумма первых k натуральных int Sk2; // Сумма первых k^2 натуральных int ControlShift=0; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,P1Buffer,INDICATOR_DATA); SetIndexBuffer(1,P1Colors,INDICATOR_COLOR_INDEX); SetIndexBuffer(2,P2Buffer,INDICATOR_DATA); SetIndexBuffer(3,P2Colors,INDICATOR_COLOR_INDEX); SetIndexBuffer(4,P3Buffer,INDICATOR_DATA); SetIndexBuffer(5,P3Colors,INDICATOR_COLOR_INDEX); SetIndexBuffer(6,PfBuffer,INDICATOR_DATA); SetIndexBuffer(7,PfColors,INDICATOR_COLOR_INDEX); PlotIndexSetInteger(0,PLOT_SHIFT,FutureLen); PlotIndexSetInteger(1,PLOT_SHIFT,FutureLen); PlotIndexSetInteger(2,PLOT_SHIFT,FutureLen); ArraySetAsSeries(P1Buffer,true); ArraySetAsSeries(P1Colors,true); ArraySetAsSeries(P2Buffer,true); ArraySetAsSeries(P2Colors,true); ArraySetAsSeries(P3Buffer,true); ArraySetAsSeries(P3Colors,true); ArraySetAsSeries(PfBuffer,true); ArraySetAsSeries(PfColors,true); //--- Константы, известные при инициализации k=HistoryLen-1; FullLen = HistoryLen + FutureLen; // Общая длина длинных буферов Sk=k*(k+1)/2; Sk2=k*(k+1)*(k*2+1)/6; if(HistoryShift<0) CreatControlLine(); //--- return(0); } // OnInit(); //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { ObjectDelete(0,"iS2_tControl"); } //+------------------------------------------------------------------+ //| Расчёт индикатора | //+------------------------------------------------------------------+ void ReCalculate() { ArrayInitialize(P1Colors,1); // обнуление цвета ArrayInitialize(P2Colors,1); // обнуление цвета ArrayInitialize(P3Colors,1); // обнуление цвета ArrayInitialize(PfColors,1); // обнуление цвета int shift= iShift(); for(int i=0;i<k;i++) { PfColors[i+shift]=0; // делает видимыми соответствующие точки } for(int i=0;i<k+FutureLen-1;i++) { P1Colors[i+shift]=0; // делает видимыми соответствующие точки P2Colors[i+shift]=0; // делает видимыми соответствующие точки P3Colors[i+shift]=0; // делает видимыми соответствующие точки } double Pf0=PfBuffer[k+shift]+0.0000001; VerivicationPfBuffer(shift); double Returns[]; // = PfBuffer[i] - PfBuffer[i+1]; ArrayResize(Returns,k); double SYr=0; for(int i=0;i<k;i++) { double R=PfBuffer[i+shift]-PfBuffer[i+shift+1]; Returns[i]=R; SYr+=R*(k-i); } double RET=PfBuffer[shift]-PfBuffer[k+shift]; double b=(k*SYr-Sk*RET)/(k*Sk2-Sk*Sk); double Yr[]; ArrayResize(Yr,FullLen); for(int i=0; i<FullLen; i++) Yr[i]=(RET*Sk2-Sk*SYr)/(Sk2-Sk*Sk)+b*(FullLen-i-1); double Trend1 = (SYr>0 ? 1 : -1); double Trend2 = (b>0 ? 1 : -1); double Trend3[]; ArrayResize(Trend3,FullLen); for(int i=0; i<FullLen; i++) Trend3[i]=(Yr[i]>0 ? 1 : -1); double L[],LT[],SL=0,SLT=0; ArrayResize(L,k); ArrayResize(LT,k); for(int i=0;i<k;i++) { L[i]=MathLog(MathAbs(Returns[i])/(1.0*(k-i)-0.5)); SL+=L[i]; LT[i]=(1.0*k-i-0.5)*L[i]; SLT+=LT[i]; } double T=(1.0*k*(Sk2-(1.0*k/2+0.25)*k)-1.0*k*k*k*k/4)/((1.0*k*k/2)*SL-k*SLT); double D=T*T/MathExp((SL*(Sk2-(k/2+0.25)*k)-(k*k/2)*SLT)/(k*(Sk2-(k/2+0.25)*k)-k*k*k*k/4)); double SumKK=0; for(int i=0; i<HistoryLen; i++) SumKK+=PfBuffer[i+shift]; double SPr=0,Pr[]; ArrayResize(Pr,k); for(int i=0;i<k;i++) { Pr[i]=Trend1*ExcelGammaDistr(k-i,2,T)*D; SPr+=Pr[i]; } double Dcorr= fabs((SumKK-(k+1)*Pf0)/SPr)*T*T/MathExp((SL*(Sk2-(1.0*k/2+0.25)*k)-(1.0*k*k/2)*SLT)/(k*(Sk2-(1.0*k/2+0.25)*k)-1.0*k*k*k*k/4)); switch(Mode) { case eGammaMode: { for(int i=0;i<k+FutureLen;i++) { P1Buffer[i+shift]=(SumKK-Pf0-fabs(SumKK-(k+1)*Pf0)*Trend1 )/k+ExcelGammaDistr(k+FutureLen-i,2,T)*Dcorr*Trend1; P2Buffer[i+shift]=(SumKK-Pf0-fabs(SumKK-(k+1)*Pf0)*Trend2 )/k+ExcelGammaDistr(k+FutureLen-i,2,T)*Dcorr*Trend2; P3Buffer[i+shift]=(SumKK-Pf0-fabs(SumKK-(k+1)*Pf0)*Trend3[i] )/k+ExcelGammaDistr(k+FutureLen-i,2,T)*Dcorr*Trend3[i]; } break; } case eExpMode: { for(int i=0;i<k+FutureLen;i++) { P1Buffer[i+shift]=(SumKK-Pf0-fabs(SumKK-(k+1)*Pf0)*Trend1 )/k+(1-(1+(k+FutureLen-i)/T)*MathExp(-(k+FutureLen-i)/T))*Dcorr*Trend1; P2Buffer[i+shift]=(SumKK-Pf0-fabs(SumKK-(k+1)*Pf0)*Trend2 )/k+(1-(1+(k+FutureLen-i)/T)*MathExp(-(k+FutureLen-i)/T))*Dcorr*Trend2; P3Buffer[i+shift]=(SumKK-Pf0-fabs(SumKK-(k+1)*Pf0)*Trend3[i] )/k+(1-(1+(k+FutureLen-i)/T)*MathExp(-(k+FutureLen-i)/T))*Dcorr*Trend3[i]; } break; } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void VerivicationPfBuffer(int shift) { for (int i=shift; i<shift+k; i++) if (fabs(PfBuffer[i]-PfBuffer[i+1])<0.00000001) PfBuffer[i+1]+=0.000001; } //+------------------------------------------------------------------+ //| Расчёт сдвига точки прогноза | //+------------------------------------------------------------------+ int iShift() { if(HistoryShift>=0) return HistoryShift; else { return ControlShift; } } void CreatControlLine() { ObjectCreate(0,"iS2_tControl",OBJ_VLINE,0,TimeCurrent(),0); ObjectSetInteger(0,"iS2_tControl",OBJPROP_COLOR,DodgerBlue); ObjectSetInteger(0,"iS2_tControl",OBJPROP_SELECTABLE,true); ObjectSetInteger(0,"iS2_tControl",OBJPROP_WIDTH,1); } void OnChartEvent(const int id, // идентификатор события const long& lparam, // параметр события типа long const double& dparam, // параметр события типа double const string& sparam // параметр события типа string ) { if (id==2 && sparam=="iS4_tControl") { datetime T= datetime(ObjectGetInteger(0,"iS2_tControl",OBJPROP_TIME)); datetime dT=TimeCurrent()-T; if (dT<0) dT=0; datetime TA[]; ArrayResize(TA,10000); int res=CopyTime(NULL,0,0,10000,TA); ArraySetAsSeries(TA,true); for (ControlShift=0;TA[ControlShift]>=T;ControlShift++){;} ReCalculate(); } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- ArraySetAsSeries(price,true); // Подкачка и синхронизация буфера индикатора с текущими рыночными ценами int limit=rates_total-prev_calculated; if(prev_calculated>0) limit++; for(int i=0;i<limit;i++) { PfBuffer[i]=price[i]; } ReCalculate(); //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Пожалуйста:
это тот что в кодебазе лежит?
как по нему торговать?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В свете призыва https://www.mql5.com/ru/forum/13504 , попробую создать тему, в надежде, что она, возможно, будет привлекательной и "горячей".
Необходимо создать советник для МТ5 по готовому индикатору для МТ5, написанным одним из участников (озвучу по согласованию с ним) по мотивам моих идей и приведенного в кодобазе https://www.mql5.com/ru/code/10339 . Задавайте вопросы по логике индикатора и будущего советника, отвечу. Будьте уверены, от полученного советника все останутся довольны - порвет рынок (не посчитайте за рекламу), гарантирую, лишь-бы программисты следовали моим рекомендациям и сами помогали мне в формулировке тонкостей изложения мысли, понятным программистам. Если есть интерес, то вперед, к созданию советника коллективным разумом! Сам индикатором не пользовался, поскольку МТ5 меня до сих пор мало интересовал, но по отзывам - работоспособный. Если тема непривлекательная выйдет, готов удалить по первому требованию участников, модераторов или руководства. Почему не в разделе "работа", потому, что подобный советник меня пока мало интересует, поскольку не умею работать на МТ5. Если выйдет стоящий советник, попробую научиться торговле на платформе МТ5.