to prusax
А вы не могли бы переделать пост - вставить код через SRC?
Korey:
to prusax
А вы не могли бы переделать пост - вставить код через SRC?
Если бы я это умел, то не обращался бы с этой просьбой
да. его можно значительно ускорить.
prusax:
Если бы я это умел, то не обращался бы с этой просьбой
1. Нажать вот сюда
2. Вставить код индикатора
3. Нажать сюда
4. Дальше Вы знаете
Понял! Выполняю!
//+------------------------------------------------------------------+ //| LSMA in Color | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, FX Sniper " #property link "http://www.metaquotes.net/" //---- indicator settings #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 Yellow #property indicator_color2 Green #property indicator_color3 Red //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; double ExtMapBuffer3[]; int width; //---- extern int Rperiod=34; extern int Draw4HowLongg=1500; int Draw4HowLong; int shift; int i; int loopbegin; double sum[]; int length; double lengthvar; double tmp ; double wt[]; int c; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- 2 additional buffers are used for counting. IndicatorBuffers(5); //---- drawing settings SetIndexBuffer(2,ExtMapBuffer1); SetIndexBuffer(1,ExtMapBuffer2); SetIndexBuffer(0,ExtMapBuffer3); SetIndexBuffer(3,sum); SetIndexBuffer(4,wt); SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2); SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2); SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2); //---- initialization done return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { Draw4HowLong=Bars-Rperiod - 5; length=Rperiod; loopbegin=Draw4HowLong - length - 1; //---- for(shift=loopbegin; shift>=0; shift--) { sum[1]=0; for(i=length; i>=1 ;i--) { lengthvar=length + 1; lengthvar/=3; tmp=0; tmp =(i - lengthvar)*Close[length-i+shift]; sum[1]+=tmp; } wt[shift]=sum[1]*6/(length*(length+1)); //---- COLOR CODING ExtMapBuffer3[shift]=wt[shift]; //red ExtMapBuffer2[shift]=wt[shift]; //green ExtMapBuffer1[shift]=wt[shift]; //yellow // for(c=loopbegin;c==shift;c++) // { if (wt[shift+1] > wt[shift]) { ExtMapBuffer2[shift+1]=EMPTY_VALUE; // ObjectCreate("smiley_face", OBJ_ARROW, 0, Time[shift], Low[shift]-Point*20); // Print("time= ",Time[shift]); // ObjectSet("smiley_face", OBJPROP_ARROWCODE, 242); // ObjectSet("smiley_face", OBJPROP_COLOR, Red); // ObjectSet("smiley_face", OBJPROP_WIDTH, 1); // ObjectsRedraw(); //ExtMapBuffer3[shift+1] = EMPTY_VALUE; //ExtMapBuffer3[shift+1] = EMPTY_VALUE; } else if (wt[shift+1] < wt[shift]) { ExtMapBuffer1[shift+1]=EMPTY_VALUE; //-1 red/greem tight //ExtMapBuffer3[shift+1] = EMPTY_VALUE; } else { ExtMapBuffer1[shift+1]=CLR_NONE;//EMPTY_VALUE; ExtMapBuffer2[shift+1]=CLR_NONE;//EMPTY_VALUE; } } return(0); } //+------------------------------------------------------------------+
Самое простое
было
Draw4HowLong=Bars-Rperiod - 5;
стало
// Draw4HowLong=Bars-Rperiod - 5; Draw4HowLong=Draw4HowLongg;
Ускорит в (число баров истории)/1500=раз
Если этого мало есть еще резервы алгоритма
Korey:
Ускорит в (число баров истории)/1500=раз
Если этого мало есть еще резервы алгоритма
Самое простое
было
Draw4HowLong=Bars-Rperiod - 5;
стало
// Draw4HowLong=Bars-Rperiod - 5; Draw4HowLong=Draw4HowLongg;
Ускорит в (число баров истории)/1500=раз
Если этого мало есть еще резервы алгоритма
Благодарю! Всё получилось как Вы написали!
Все удачи и больших прибылей!
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Добрый день! Скачал на этом форуме хороший индикатор LSMA in Color. Но вот он тормозит программу. Возможно ли его подправить, чтобы не создавал торможение? Вот его исходник:
//+------------------------------------------------------------------+
//| LSMA in Color |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| https://www.metaquotes.net// |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, FX Sniper "
#property link "https://www.metaquotes.net//"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Green
#property indicator_color3 Red
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
int width;
//----
extern int Rperiod=34;
extern int Draw4HowLongg=1500;
int Draw4HowLong;
int shift;
int i;
int loopbegin;
double sum[];
int length;
double lengthvar;
double tmp ;
double wt[];
int c;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(5);
//---- drawing settings
SetIndexBuffer(2,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(0,ExtMapBuffer3);
SetIndexBuffer(3,sum);
SetIndexBuffer(4,wt);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
Draw4HowLong=Bars-Rperiod - 5;
length=Rperiod;
loopbegin=Draw4HowLong - length - 1;
//----
for(shift=loopbegin; shift>=0; shift--)
{
sum[1]=0;
for(i=length; i>=1 ;i--)
{
lengthvar=length + 1;
lengthvar/=3;
tmp=0;
tmp =(i - lengthvar)*Close[length-i+shift];
sum[1]+=tmp;
}
wt[shift]=sum[1]*6/(length*(length+1));
//---- COLOR CODING
ExtMapBuffer3[shift]=wt[shift]; //red
ExtMapBuffer2[shift]=wt[shift]; //green
ExtMapBuffer1[shift]=wt[shift]; //yellow
// for(c=loopbegin;c==shift;c++)
// {
if (wt[shift+1] > wt[shift])
{
ExtMapBuffer2[shift+1]=EMPTY_VALUE;
// ObjectCreate("smiley_face", OBJ_ARROW, 0, Time[shift], Low[shift]-Point*20);
// Print("time= ",Time[shift]);
// ObjectSet("smiley_face", OBJPROP_ARROWCODE, 242);
// ObjectSet("smiley_face", OBJPROP_COLOR, Red);
// ObjectSet("smiley_face", OBJPROP_WIDTH, 1);
// ObjectsRedraw();
//ExtMapBuffer3[shift+1] = EMPTY_VALUE;
//ExtMapBuffer3[shift+1] = EMPTY_VALUE;
}
else if (wt[shift+1] < wt[shift])
{
ExtMapBuffer1[shift+1]=EMPTY_VALUE; //-1 red/greem tight
//ExtMapBuffer3[shift+1] = EMPTY_VALUE;
}
else
{
ExtMapBuffer1[shift+1]=CLR_NONE;//EMPTY_VALUE;
ExtMapBuffer2[shift+1]=CLR_NONE;//EMPTY_VALUE;
}
}
return(0);
}
//+------------------------------------------------------------------+