将颜色分解为阴影的功能。 - 页 12 1...5678910111213141516171819...23 新评论 Nikolai Semko 2018.10.11 14:53 #111 Реter Konow:以下是我在MT5上的算法结果。没有任何不必要的和多余的噱头。 代码呢? Реter Konow 2018.10.11 14:56 #112 Nikolai Semko:我已经在上面 证明了你的方法的缺陷,如果它与你所比较的调色板相匹配,那么它也是如此,使用白线的例子。 再换句话说。 如果你从黑色(0,0,0)到白色(255,255,255)平滑地改变颜色,经过一个特定的颜色(R1,G1,B1),那么R、G和B三种颜色的总和就是重要指标。这里最好远离术语,因为它可能会引起混淆(亮度、亮度、色调....)。 绝对明显的是,理想情况下,它应该从0到3*255=765线性变化。你在中间严格调整你的颜色,我首先计算原始颜色的总和,然后根据这个RGB总和粘贴到梯度阵列中。这就是为什么我的白线没有断点,与你的不同。尼古拉,虽然你没有解释你的算法是如何工作的,而且你说的是一些白线,应该是这样的,但不是不同... 很明显,你自己并不了解你的算法是如何分解成阴影的。你没有连贯的概念。只是从别的地方借来的术语和代码的混淆...... Реter Konow 2018.10.11 14:58 #113 Nikolai Semko:代码呢?还没有全部准备好。我承认我低估了平台差异的程度。MT5上的算法在某些地方存在缺陷。但问题只出在代码上,而不是概念上。 Nikolai Semko 2018.10.11 15:03 #114 Реter Konow:尼古拉,虽然你没有解释你的算法是如何工作的,而且你说的是一些白线,应该是这样的,但不是这样的... 很明显,你自己并不了解你的算法是如何分解成阴影的。你没有连贯的概念。只有从其他地方借来的术语和代码的混乱......。彼得,你在说什么?如果我不了解它,我怎么能做呢。用代码编写算法比用文字描述算法要容易得多。 告诉我,你明白这个代码的含义吗?毕竟,一切都那么基本和明显,我甚至不明白在这里可以插入什么评论。 void Gradient(uint clr1,uint clr2,uint &arr[],uint size) { if(size==0) return; ArrayResize(arr,size); rgb c1,c2; c1.clr=clr1; c2.clr=clr2; double R1=c1.c[2],G1=c1.c[1],B1=c1.c[0]; double R2=c2.c[2],G2=c2.c[1],B2=c2.c[0]; double deltaR=(R2-R1)/(size-1); double deltaG=(G2-G1)/(size-1); double deltaB=(B2-B1)/(size-1); for(uint i=0;i<size;i++) { R1+=deltaR; c1.c[2]=uchar (R1+0.4999); G1+=deltaG; c1.c[1]=uchar (G1+0.4999); B1+=deltaB; c1.c[0]=uchar (B1+0.4999); arr[i]=c1.clr; } } Nikolai Semko 2018.10.11 15:08 #115 Nikolai Semko:彼得,你在说什么。如果我不了解它,我怎么能做呢。用代码编写算法比用文字描述算法要容易得多。 告诉我,你明白这个代码的含义吗?毕竟,一切都那么基本和明显,我甚至不明白在这里可以插入什么评论。 下面是你的算法如何工作,以这个函数为例。 #include <Canvas\iCanvas.mqh> //https://www.mql5.com/ru/code/22164 union rgb {uint clr; uchar c[4];}; void OnStart() { rgb c,C; uint CLR[]; color clr=clrViolet; Gradient(clrWhite, clr, CLR,W.Height/2); // получаем массив градиента от белого цвета до цвета clr for(int y=0; y<W.Height/2; y++) Canvas.LineHorizontal(0,W.Width-1,y,ColorToARGB(CLR[y],240)); // выводим на экран Gradient(clr, clrBlack, CLR,W.Height-W.Height/2); // получаем массив градиента от цвета clr до черног цвета for(int y=W.Height/2; y<W.Height; y++) Canvas.LineHorizontal(0,W.Width-1,y,ColorToARGB(CLR[y-W.Height/2],240)); // выводим на экран в продолжение предыдущего Canvas.Update(); Sleep(30000); } //+------------------------------------------------------------------+ void Gradient(uint clr1,uint clr2,uint &arr[],uint size) { if(size==0) return; ArrayResize(arr,size); rgb c1,c2; c1.clr=clr1; c2.clr=clr2; double R1=c1.c[2],G1=c1.c[1],B1=c1.c[0]; double R2=c2.c[2],G2=c2.c[1],B2=c2.c[0]; double deltaR=(R2-R1)/(size-1); double deltaG=(G2-G1)/(size-1); double deltaB=(B2-B1)/(size-1); for(uint i=0;i<size;i++) { R1+=deltaR; c1.c[2]=uchar (R1+0.4999); G1+=deltaG; c1.c[1]=uchar (G1+0.4999); B1+=deltaB; c1.c[0]=uchar (B1+0.4999); arr[i]=c1.clr; } } Реter Konow 2018.10.11 15:09 #116 Nikolai Semko:彼得,你在说什么。如果我不了解它,我怎么能做呢。用代码编写算法比用文字描述算法要容易得多。 告诉我,你明白这个代码的含义吗?毕竟,一切都那么基本和明显,我甚至不明白在这里可以插入什么评论。 说明你对颜色分解的概念。如果这个算法是你的,你就很了解它。 Yury Kulikov 2018.10.11 15:22 #117 Реter Konow:你似乎在说服自己的东西。同样,还没有时间做一个可视化。你 有没有对照调色板检查过算法? 你对颜色207,255,65的脚本结果。 Реter Konow 2018.10.11 15:24 #118 Yury Kulikov: 你对颜色207,255,65的脚本结果。谢谢你的观察。我也发现了一些错误。我现在要做一个mt4的gif。它运行良好,但在几个颜色上有问题。 Реter Konow 2018.10.11 15:47 #119 我无法获得高质量的 GIF。这是脚本。穿上 MT4 并按原样查看一切。 //+------------------------------------------------------------------+ //| Gradient test 1.mq4 | //| Peter Konow | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Peter Konow" #property link "https://www.mql5.com" #property version "1.00" #include <Canvas\Canvas.mqh> //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ union rgb { uint clr; uchar c[ 4 ];}; rgb C,cc; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void OnStart () { CCanvas canvas; if (!canvas.CreateBitmapLabel( "Gradient" , 200 , 200 , 768 , 256 , COLOR_FORMAT_ARGB_NORMALIZE )) { Print ( "Error creating canvas: " , GetLastError ()); } string Main_color = C'190,215,160' ; double d= 5 ; string Gradient[ 256 ]; while (! IsStopped ()) { C.c[ 2 ]= uchar ( 127.5 *( 1 + sin (d* 1.2 ))+ 0.4999 ); C.c[ 1 ]= uchar ( 127.5 *( 1 + sin (d* 1.9 ))+ 0.4999 ); C.c[ 0 ]= uchar ( 127.5 *( 1 + sin (d* 2.8 ))+ 0.4999 ); // генерируем новый цвет cc.clr=C.clr; ulong t= GetMicrosecondCount (); Диапазон_оттенков(C.clr,Gradient); //Диапазон_оттенков(Main_color,Gradient); t= GetMicrosecondCount ()-t; for ( int y= 0 ; y< 256 ; y++) { //Alert(__FUNCTION__," Gradient[",y,"] ",Gradient[y]); canvas.LineHorizontal( 0 , 767 ,y, ColorToARGB ( StringToColor (Gradient[y]), 255 )); C.clr=Gradient[y]; canvas.PixelSet(( int )C.c[ 2 ]+( int )C.c[ 1 ]+( int )C.c[ 0 ],y, ColorToARGB ( clrWhite )); if (C.c[ 1 ]> 0 ) canvas.PixelSet( int ( 50.0 *( int )C.c[ 2 ]/( double )C.c[ 1 ]+ 50.0 *( int )C.c[ 0 ]/( double )C.c[ 1 ]),y, ColorToARGB ( clrGreen )); if (C.c[ 2 ]> 0 ) canvas.PixelSet( int ( 50.0 *( int )C.c[ 1 ]/( double )C.c[ 2 ]+ 50.0 *( int )C.c[ 0 ]/( double )C.c[ 2 ]),y, ColorToARGB ( clrRed )); if (C.c[ 0 ]> 0 ) canvas.PixelSet( int ( 50.0 *( int )C.c[ 2 ]/( double )C.c[ 0 ]+ 50.0 *( int )C.c[ 1 ]/( double )C.c[ 0 ]),y, ColorToARGB ( clrBlue )); } canvas.FillRectangle( 500 , 75 , 660 , 150 , ColorToARGB (cc.clr, 240 )); canvas.FontSet( "Tahoma" , 20 ); canvas. TextOut ( 510 , 85 , "R = " + string (cc.c[ 2 ]), ColorToARGB (~cc.clr)); canvas. TextOut ( 510 , 107 , "G = " + string (cc.c[ 1 ]), ColorToARGB (~cc.clr)); canvas. TextOut ( 510 , 129 , "B = " + string (cc.c[ 0 ]), ColorToARGB (~cc.clr)); canvas.FontSet( "Times New Roman" , 15 ); canvas. TextOut ( 300 , 10 , "Время формирования градиентного массива из 256 элементов = " + string (t)+ " микросекунд" , ColorToARGB ( clrWhite )); canvas.Update(); d+= 0.01 ; Sleep ( 30 ); } canvas.Destroy(); //------------------------ // for(int a1 = 0; a1 < 256; a1++)Alert(__FUNCTION__," Gradient[",a1,"] ",Gradient[a1]); } //+------------------------------------------------------------------+ //================================================================================================================================================================ void Диапазон_оттенков( color _Цвет, string &Все_оттенки[ 256 ]) { color R,G,B,q; //------------------------------------------------------ string Этот_цвет; double Тангенс_угла_старшего_треугольника_1, Тангенс_угла_среднего_треугольника_1, Тангенс_угла_младшего_треугольника_1, Значение_в_точке_преломления_старшей_компоненты, Значение_в_точке_преломления_средней_компоненты, Значение_в_точке_преломления_младшей_компоненты, Тангенс_угла_старшего_треугольника_2, Тангенс_угла_среднего_треугольника_2, Тангенс_угла_младшего_треугольника_2; //------------------------------------------------------ double pi = 3.1415926536 , Comp_1,Comp_2,Comp_3, //----------------------------------------------- Первая_компонента, Вторая_компонента, Третья_компонента, //----------------------------------------------- Исходный_R = GetR(_Цвет), Исходный_G = GetG(_Цвет), Исходный_B = GetB(_Цвет), //----------------------------------------------- Старшая_компонента = Нужная_компонента(Исходный_R,Исходный_G,Исходный_B, 0 ), Средняя_компонента = Нужная_компонента(Исходный_R,Исходный_G,Исходный_B, 1 ), Младшая_компонента = Нужная_компонента(Исходный_R,Исходный_G,Исходный_B, 2 ), //----------------------------------------------- Координата_исходного_цвета = Старшая_компонента/ tan (( 63.43989 *pi)/ 180 ) + Младшая_компонента/ 2 ; //----------------------------------------------- //----------------------------------------------- if (Старшая_компонента == Исходный_R)R = Старшая_компонента; if (Старшая_компонента == Исходный_G)G = Старшая_компонента; if (Старшая_компонента == Исходный_B)B = Старшая_компонента; //------------------------ if (Средняя_компонента == Исходный_R)R = Средняя_компонента; if (Средняя_компонента == Исходный_G)G = Средняя_компонента; if (Средняя_компонента == Исходный_B)B = Средняя_компонента; //------------------------ if (Младшая_компонента == Исходный_R)R = Младшая_компонента; if (Младшая_компонента == Исходный_G)G = Младшая_компонента; if (Младшая_компонента == Исходный_B)B = Младшая_компонента; //========================================================================================== if (Координата_исходного_цвета <= 127 ) { Тангенс_угла_старшего_треугольника_1 = Старшая_компонента/Координата_исходного_цвета; Тангенс_угла_среднего_треугольника_1 = Средняя_компонента/Координата_исходного_цвета; Тангенс_угла_младшего_треугольника_1 = Младшая_компонента/Координата_исходного_цвета; //----------------------------------------------- Значение_в_точке_преломления_старшей_компоненты = Тангенс_угла_старшего_треугольника_1* 128 ; Значение_в_точке_преломления_средней_компоненты = Тангенс_угла_среднего_треугольника_1* 128 ; Значение_в_точке_преломления_младшей_компоненты = Тангенс_угла_младшего_треугольника_1* 128 ; //----------------------------------------------- Тангенс_угла_старшего_треугольника_2 = ( 255 - Значение_в_точке_преломления_старшей_компоненты)/ 128 ; Тангенс_угла_среднего_треугольника_2 = ( 255 - Значение_в_точке_преломления_средней_компоненты)/ 128 ; Тангенс_угла_младшего_треугольника_2 = ( 255 - Значение_в_точке_преломления_младшей_компоненты)/ 128 ; //----------------------------------------------- for ( int a1 = 0 ; a1 < 128 ; a1++) { Comp_1 = Тангенс_угла_старшего_треугольника_1*a1; Comp_2 = Тангенс_угла_среднего_треугольника_1*a1; Comp_3 = Тангенс_угла_младшего_треугольника_1*a1; //--------------------------------------------------- if (Comp_1 > 255 )Comp_1 = 255 ; if (Comp_1 > 255 )Comp_2 = 255 ; if (Comp_1 > 255 )Comp_3 = 255 ; //--------------------------------------------------- if (R == Старшая_компонента)Первая_компонента = Comp_1; if (R == Средняя_компонента)Первая_компонента = Comp_2; if (R == Младшая_компонента)Первая_компонента = Comp_3; //--------------------------------------------------- if (G == Старшая_компонента)Вторая_компонента = Comp_1; if (G == Средняя_компонента)Вторая_компонента = Comp_2; if (G == Младшая_компонента)Вторая_компонента = Comp_3; //--------------------------------------------------- if (B == Старшая_компонента)Третья_компонента = Comp_1; if (B == Средняя_компонента)Третья_компонента = Comp_2; if (B == Младшая_компонента)Третья_компонента = Comp_3; //--------------------------------------------------- Этот_цвет = ( string ) MathRound (Первая_компонента) + "," + ( string ) MathRound (Вторая_компонента) + "," + ( string ) MathRound (Третья_компонента); //--------------------------------------------------------------------------- Все_оттенки[a1] = Этот_цвет; //--------------------------------------------------------------------------- } //------------------------------------------------------------------------------ for ( int a2 = 255 ; a2 >= a1; a2--) { Comp_1 = 255 - Тангенс_угла_старшего_треугольника_2*q; Comp_2 = 255 - Тангенс_угла_среднего_треугольника_2*q; Comp_3 = 255 - Тангенс_угла_младшего_треугольника_2*q; //--------------------------------------------------- if (Comp_1 > 255 )Comp_1 = 255 ; if (Comp_1 > 255 )Comp_2 = 255 ; if (Comp_1 > 255 )Comp_3 = 255 ; //--------------------------------------------------- if (R == Старшая_компонента)Первая_компонента = Comp_1; if (R == Средняя_компонента)Первая_компонента = Comp_2; if (R == Младшая_компонента)Первая_компонента = Comp_3; //--------------------------------------------------- if (G == Старшая_компонента)Вторая_компонента = Comp_1; if (G == Средняя_компонента)Вторая_компонента = Comp_2; if (G == Младшая_компонента)Вторая_компонента = Comp_3; //--------------------------------------------------- if (B == Старшая_компонента)Третья_компонента = Comp_1; if (B == Средняя_компонента)Третья_компонента = Comp_2; if (B == Младшая_компонента)Третья_компонента = Comp_3; //--------------------------------------------------- Этот_цвет = ( string ) MathRound (Первая_компонента) + "," + ( string ) MathRound (Вторая_компонента) + "," + ( string ) MathRound (Третья_компонента); //--------------------------------------------------------------------------- Все_оттенки[a2] = Этот_цвет; //--------------------------------------------------------------------------- q++; } } //------------------------------------------------------------------------------ if (Координата_исходного_цвета > 127 ) { Тангенс_угла_старшего_треугольника_1 = ( 255 - Старшая_компонента)/( 255 - Координата_исходного_цвета); Тангенс_угла_среднего_треугольника_1 = ( 255 - Средняя_компонента)/( 255 - Координата_исходного_цвета); Тангенс_угла_младшего_треугольника_1 = ( 255 - Младшая_компонента)/( 255 - Координата_исходного_цвета); //----------------------------------------------- Значение_в_точке_преломления_старшей_компоненты = 255 - (Тангенс_угла_старшего_треугольника_1* 128 ); Значение_в_точке_преломления_средней_компоненты = 255 - (Тангенс_угла_среднего_треугольника_1* 128 ); Значение_в_точке_преломления_младшей_компоненты = 255 - (Тангенс_угла_младшего_треугольника_1* 128 ); //----------------------------------------------- Тангенс_угла_старшего_треугольника_2 = Значение_в_точке_преломления_старшей_компоненты/ 128 ; Тангенс_угла_среднего_треугольника_2 = Значение_в_точке_преломления_средней_компоненты/ 128 ; Тангенс_угла_младшего_треугольника_2 = Значение_в_точке_преломления_младшей_компоненты/ 128 ; //----------------------------------------------- for ( int b1 = 0 ; b1 < 128 ; b1++) { Comp_1 = Тангенс_угла_старшего_треугольника_2*b1; Comp_2 = Тангенс_угла_среднего_треугольника_2*b1; Comp_3 = Тангенс_угла_младшего_треугольника_2*b1; //--------------------------------------------------- if (Comp_1 > 255 )Comp_1 = 255 ; if (Comp_1 > 255 )Comp_2 = 255 ; if (Comp_1 > 255 )Comp_3 = 255 ; //--------------------------------------------------- if (R == Старшая_компонента)Первая_компонента = Comp_1; if (R == Средняя_компонента)Первая_компонента = Comp_2; if (R == Младшая_компонента)Первая_компонента = Comp_3; //--------------------------------------------------- if (G == Старшая_компонента)Вторая_компонента = Comp_1; if (G == Средняя_компонента)Вторая_компонента = Comp_2; if (G == Младшая_компонента)Вторая_компонента = Comp_3; //--------------------------------------------------- if (B == Старшая_компонента)Третья_компонента = Comp_1; if (B == Средняя_компонента)Третья_компонента = Comp_2; if (B == Младшая_компонента)Третья_компонента = Comp_3; //--------------------------------------------------- Этот_цвет = ( string ) MathRound (Первая_компонента) + "," + ( string ) MathRound (Вторая_компонента) + "," + ( string ) MathRound (Третья_компонента); //--------------------------------------------------------------------------- Все_оттенки[b1] = Этот_цвет; //--------------------------------------------------------------------------- } //------------------------------------------------------------------------------ for ( int b2 = 255 ; b2 >= b1; b2--) { Comp_1 = 255 - Тангенс_угла_старшего_треугольника_1*q; Comp_2 = 255 - Тангенс_угла_среднего_треугольника_1*q; Comp_3 = 255 - Тангенс_угла_младшего_треугольника_1*q; //--------------------------------------------------- if (Comp_1 > 255 )Comp_1 = 255 ; if (Comp_1 > 255 )Comp_2 = 255 ; if (Comp_1 > 255 )Comp_3 = 255 ; //--------------------------------------------------- if (R == Старшая_компонента)Первая_компонента = Comp_1; if (R == Средняя_компонента)Первая_компонента = Comp_2; if (R == Младшая_компонента)Первая_компонента = Comp_3; //--------------------------------------------------- if (G == Старшая_компонента)Вторая_компонента = Comp_1; if (G == Средняя_компонента)Вторая_компонента = Comp_2; if (G == Младшая_компонента)Вторая_компонента = Comp_3; //--------------------------------------------------- if (B == Старшая_компонента)Третья_компонента = Comp_1; if (B == Средняя_компонента)Третья_компонента = Comp_2; if (B == Младшая_компонента)Третья_компонента = Comp_3; //--------------------------------------------------- Этот_цвет = ( string ) MathRound (Первая_компонента) + "," + ( string ) MathRound (Вторая_компонента) + "," + ( string ) MathRound (Третья_компонента); //--------------------------------------------------------------------------- Все_оттенки[b2] = Этот_цвет; //--------------------------------------------------------------------------- q++; } } //------------------------------------------------------------------------------ } //+------------------------------------------------------------------+ //| Получение значения компонента R | //+------------------------------------------------------------------+ double GetR( const color aColor) { return (aColor& 0xff ); } //+------------------------------------------------------------------+ //| Получение значения компонента G | //+------------------------------------------------------------------+ double GetG( const color aColor) { return ((aColor>> 8 )& 0xff ); } //+------------------------------------------------------------------+ //| Получение значения компонента B | //+------------------------------------------------------------------+ double GetB( const color aColor) { return ((aColor>> 16 )& 0xff ); } //-------------------------------------------------------------------- double Нужная_компонента( double C1, double C2, double C3, int Index) { double Components[ 3 ]; //---------------------------------------------- Components[ 0 ] = C1; Components[ 1 ] = C2; Components[ 2 ] = C3; //---------------------------------------------- ArraySort (Components, WHOLE_ARRAY , 0 , MODE_DESCEND ); //---------------------------------------------- return (Components[Index]); } Реter Konow 2018.10.11 15:52 #120 找到了第一个错误。纠正了它。 我应该加上: if(Comp_1 < 0 )Comp_1 = 0; if(Comp_2 < 0 )Comp_2 = 0; if(Comp_3 < 0 )Comp_3 = 0; 在每个循环中。 1...5678910111213141516171819...23 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
以下是我在MT5上的算法结果。没有任何不必要的和多余的噱头。
代码呢?
我已经在上面 证明了你的方法的缺陷,如果它与你所比较的调色板相匹配,那么它也是如此,使用白线的例子。
再换句话说。
如果你从黑色(0,0,0)到白色(255,255,255)平滑地改变颜色,经过一个特定的颜色(R1,G1,B1),那么R、G和B三种颜色的总和就是重要指标。这里最好远离术语,因为它可能会引起混淆(亮度、亮度、色调....)。
绝对明显的是,理想情况下,它应该从0到3*255=765线性变化。你在中间严格调整你的颜色,我首先计算原始颜色的总和,然后根据这个RGB总和粘贴到梯度阵列中。这就是为什么我的白线没有断点,与你的不同。
尼古拉,虽然你没有解释你的算法是如何工作的,而且你说的是一些白线,应该是这样的,但不是不同...
很明显,你自己并不了解你的算法是如何分解成阴影的。你没有连贯的概念。只是从别的地方借来的术语和代码的混淆......
代码呢?
还没有全部准备好。我承认我低估了平台差异的程度。MT5上的算法在某些地方存在缺陷。但问题只出在代码上,而不是概念上。
尼古拉,虽然你没有解释你的算法是如何工作的,而且你说的是一些白线,应该是这样的,但不是这样的...
很明显,你自己并不了解你的算法是如何分解成阴影的。你没有连贯的概念。只有从其他地方借来的术语和代码的混乱......。
彼得,你在说什么?如果我不了解它,我怎么能做呢。用代码编写算法比用文字描述算法要容易得多。
告诉我,你明白这个代码的含义吗?毕竟,一切都那么基本和明显,我甚至不明白在这里可以插入什么评论。
彼得,你在说什么。如果我不了解它,我怎么能做呢。用代码编写算法比用文字描述算法要容易得多。
告诉我,你明白这个代码的含义吗?毕竟,一切都那么基本和明显,我甚至不明白在这里可以插入什么评论。
下面是你的算法如何工作,以这个函数为例。
彼得,你在说什么。如果我不了解它,我怎么能做呢。用代码编写算法比用文字描述算法要容易得多。
告诉我,你明白这个代码的含义吗?毕竟,一切都那么基本和明显,我甚至不明白在这里可以插入什么评论。
说明你对颜色分解的概念。如果这个算法是你的,你就很了解它。
你似乎在说服自己的东西。同样,还没有时间做一个可视化。你 有没有对照调色板检查过算法?
你对颜色207,255,65的脚本结果。
你对颜色207,255,65的脚本结果。
谢谢你的观察。我也发现了一些错误。我现在要做一个mt4的gif。它运行良好,但在几个颜色上有问题。
我无法获得高质量的 GIF。这是脚本。穿上 MT4 并按原样查看一切。
找到了第一个错误。纠正了它。
我应该加上:
在每个循环中。