[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 216

 
stalkertula:

谢谢你的回答,但我的算法是用俄语写的,但我不擅长mql,至少要提示一下固定卖/买单数量的函数(我会写在设置里),然后是禁止放置卖/买单挂单的信号。

为什么这个你已经写好的算法没有反映在你的代码中?
你认为仅仅看一下你没有写过的代码就可以指出你的错误吗?

我们仍然需要 "阅读 "它...

下面是一段代码的摘录,我们写在纸上的所有内容也都显示在代码中。

//================================================================================================================   
//------------------------------- Определение тоннеля и его верхней и нижней границ ------------------------------ 
//================================================================================================================   
   if (NormalizeDouble(MathAbs(MA169-MA144),dg)/pt<=sp)           // Если разница МАшек меньше спреда, ... 
      Tonnel=false;                                               // Тоннель меньше спреда - считаем, что он узкий
   if (NormalizeDouble(MathAbs(MA169-MA144),dg)/pt>sp)            // Если разница МАшек больше спреда, ... 
      Tonnel=true;                                                // Тоннель больше спреда - считаем, что он норм.
//-------------------------------------------------------------      
   if (CmpD(MA169,MA144)) {                                       // Если 169-я МАшка выше 144-й, ...
      UP_Limit=MA169+sp*pt;                                       // ... то 169 - верх тоннеля, ...
      DN_Limit=MA144-sp*pt;                                       // ... а 144 - низ тоннеля
      }
   if (CmpD(MA144,MA169)) {                                       // Если 144-я МАшка выше 169-й, ...
      UP_Limit=MA144+sp*pt;                                       // ... 144 - верх тоннеля, ...
      DN_Limit=MA169-sp*pt;                                       // ... 169 - низ тоннеля
      }
   if (NormalizeDouble(MA169-MA144,dg)==0) {                      // Если 169-я МАшка равна 144-й, ...
      UP_Limit=MA169+sp*pt;                                       // ... то 169 - верх тоннеля, ...
      DN_Limit=MA144-sp*pt;                                       // ... а 144 - низ тоннеля
      }
//-------------------------------------------------------------      
      string NameArUP=Prefix+"UP"+TimeToStr(Time[0]);             // Нарисуем тоннель
      string NameArDN=Prefix+"DN"+TimeToStr(Time[0]);
      SetArrow(4, DeepSkyBlue, NameArUP, Time[0], UP_Limit, 0);   // Его верх
      SetArrow(4, Gold,        NameArDN, Time[0], DN_Limit, 0);   // Его низ
//================================================================================================================   
//------------------------------------- Проверка на вхождение цены в тоннель ------------------------------------- 
//================================================================================================================ 
   if (CmpD(UP_Limit, pa) && CmpD(pb, DN_Limit)) {
      if (Above) {                                                // Если цена была выше тоннеля
         LastAbove=true;                                          // Ставим  флаг "прошлого" положения цены "выше"
         LastBottom=false;                                        // Снимаем флаг "прошлого" положения цены "ниже"
         }
      if (Bottom) {                                               // Если цена была ниже тоннеля
         LastBottom=true;                                         // Ставим  флаг "прошлого" положения цены "ниже"
         LastAbove=false;                                         // Снимаем флаг "прошлого" положения цены "выше"
         }
      Inside=true;                                                // Ставим флаг расположения цены внутри тоннеля
      Above=false;                                                // Сброс флага "над"
      Bottom=false;                                               // Сброс флага "под"
      ReadyTradeB=true;                                           // Флаг готовности к торговле Бай
      ReadyTradeS=true;                                           // Флаг готовности к торговле Селл
      }
//================================================================================================================   
//------------------------------- Проверка на расположение цены относительно тоннеля ----------------------------- 
//================================================================================================================ 
   if (CmpD(pa,UP_Limit)) {                                       // Если цена выше тоннеля
      if (Inside) {
         Inside=false;                                            // Сброс флага нахождения цены внутри тоннеля
         LastInside=true;
         }
      Above=true;                                                 // Цена находится над тоннелем
      Bottom=false;
      }
   if (CmpD(DN_Limit,pb)) {                                       // Если цена ниже тоннеля
      if (Inside) {
         Inside=false;                                            // Сброс флага нахождения цены внутри тоннеля
         LastInside=true;
         }
      Bottom=true;                                                // Цена находится под тоннелем
      Above=false;
      }
//================================================================================================================   
//------------------------------------ Проверка на пересечение границ тоннеля ------------------------------------ 
//================================================================================================================ 
// .... пока не отлажу предыдущее, за это не стоит и браться...
//----------------------------------------------------------------

因此,在最简单的事情被解决之前,你不应该进一步...

那你有什么呢?你把所有的东西都堆在一起,你没有评论过任何一行。现在休息一个星期,回到你的代码。我相信你要花两个小时才能记住。100%

 
coronel:
永久地段0.1。


在这种情况下,在我看来,这周是一个很好的结果。我不太记得了,我想大概是800分。在我看来,只有稳定性不是很好:图表不是很平滑......。总之,谢谢你的回答。至少有一些数字正在出现。我离这个目标很远:每年3000-4000分是极限。但我的平衡图更平坦...

我一直在想:0.1的固定手数 - 但用什么杠杆?从余额表上看,不太清楚获得了多少积分?

 

我如何从这样的指标中获得选定的Fiba水平的值?

//+------------------------------------------------------------------+

//| 抛物线_ZZ.mq4|

//| Copyright © 2009, Vic2008 |

//| |

//+------------------------------------------------------------------+

#property copyright "Copyright © 2009, Vic2008"

#属性链接""

#include <stdlib.mqh>.

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 Red

#property indicator_color2品红

//---- 输入参数

extern double SAR_step=0.02; //parparameters parabolic.

外置双SAR_maximum=0.2。

extern int BarsCount = 500; //Distance in bars to draw the indicator.

extern bool Fibo1_off = False; //禁用Fibo级别。

extern bool Fibo2_off = False;

extern bool Fibo_Absolut_Value = False; //包括Fibo水平的绝对价格值。

外部颜色 Label_Color = Gray;

外部颜色 Fibo_Color = Blue;

//---- 缓冲区

双倍ExtMapBuffer1[]。

双倍ExtMapBuffer2[]。

//+------------------------------------------------------------------+

//|自定义指标初始化功能

//+------------------------------------------------------------------+

int init()

{

//---- 指标

SetIndexBuffer(0,ExtMapBuffer1)。

SetIndexStyle(0,DRAW_SECTION)。

SetIndexBuffer(1,ExtMapBuffer2)。

SetIndexStyle(1,DRAW_SECTION,0,2,Magenta)。

//----

return(0);

}

//+------------------------------------------------------------------+

//|自定义指标去初始化功能|

//+------------------------------------------------------------------+

int deinit()

{

//----

ObjectsDeleteAll(0,OBJ_ARROW)。

ObjectDelete("FiboZZLast")。

ObjectDelete("FiboZZPrev")。

//----

return(0);

}

//+------------------------------------------------------------------+

//|自定义指标迭代函数|

//+------------------------------------------------------------------+

int start()

{

//int counted_bars=IndicatorCounted()。

字符串txt。

int w,PosLow,PosHigh;

double LPic=1000000,HPic=0,price;

datetime TimeTmp;

//----

ExtMapBuffer1[0]=Close[0];

ExtMapBuffer2[0]=EMPTY_VALUE。

for( w=0;w<BarsCount;w++){

if( w! =0 ){ ExtMapBuffer1[w]=EMPTY_VALUE; ExtMapBuffer2[w]=EMPTY_VALUE; }

if( iSAR(NULL,0,SAR_step,SAR_maximum,w) > Close[w] && LPic>=Low[w] ){ LPic=Low[w] ; PosLow=w; }

if( iSAR(NULL,0,SAR_step,SAR_maximum,w) < Close[w] && HPic<=High[w] ) { HPic=High[w]; PosHigh=w; }

// H -> L

如果( iSAR(NULL,0,SAR_step,SAR_maximum,(w+1))> Close[w+1] && iSAR(NULL,0,SAR_step,SAR_maximum,w) < Close[w] && HPic!=0)

{

ExtMapBuffer1[PosHigh]=HPic;

ExtMapBuffer2[PosHigh]=HPic;

HPic=0。

}

// L -> H

if( iSAR(NULL,0,SAR_step,SAR_maximum,w) < Close[w] && iSAR(NULL,0,SAR_step,SAR_maximum,w+1) > Close[w+1] && LPic!=1000000 )

{

ExtMapBuffer1[PosLow]=LPic;

ExtMapBuffer2[PosLow]=LPic;

LPic=1000000。

}

}

如果( Fibo1_off ) ObjectDelete("FiboZZLast")。

如果( Fibo2_off ) ObjectDelete("FiboZZPrev")。

//画出价格标记和FIBO水平

int wave_cnt=0。

for( w=0;w<BarsCount;w++){

如果( ExtMapBuffer2[w]!=EMPTY_VALUE ){

如果( wave_cnt<=3 ){

ObjectDelete("PZZ_"+DoubleToStr( wave_cnt, 0))。

ObjectCreate("PZZ_"+DoubleToStr( wave_cnt, 0), OBJ_ARROW, 0, Time[w], ExtMapBuffer2[w], Time[w], 0) 。

ObjectSet("PZZ_"+DoubleToStr( wave_cnt, 0), OBJPROP_ARROWCODE, SYMBOL_LEFTPRICE)。

ObjectSet("PZZ_"+DoubleToStr( wave_cnt, 0), SYMBOL_LEFTPRICE, ExtMapBuffer2[w])。

ObjectSet("PZZ_"+DoubleToStr( wave_cnt, 0), OBJPROP_COLOR, Label_Color )。

如果(wave_cnt==1 && Fibo1_off==False ){

ObjectDelete("FiboZZLast")。

ObjectCreate("FiboZZLast", OBJ_FIBO, 0, TimeTmp, ExtMapBuffer2[w], TimeTmp, price)。

ObjectSet("FiboZZLast", OBJPROP_LEVELCOLOR, Fibo_Color)。

ObjectSet("FiboZZLast", OBJPROP_COLOR, Fibo_Color)。

ObjectSet("FiboZZLast", OBJPROP_RAY, False );//要启用射线,请将False改为True。

ObjectSet("FiboZZLast", OBJPROP_FIBOLEVELS, 14)。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZLast",0, "23.6")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZLast",1, "38.2")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZLast",2, "50.0")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZLast",3, "61.8")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZLast",4, "100.0")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZLast",5, "161.8")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZLast",6, "261.8")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZLast",7, "423.6")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZLast",8, "8.8")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZLast",9, "14.5")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZLast",10, "76.4")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZLast",11, "85.5")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZLast",12, "92.1")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZLast",13, "0.0")。

如果( Fibo_Absolut_Value ){

ObjectSet("FiboZZLast", OBJPROP_FIBOLEVELS, 14);

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZLast",0, "23.6 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZLast",1, "38.2 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZLast",2, "50.0 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZLast",3, "61.8 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZLast",4, "100.0 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZLast",5, "161.8 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZLast",6, "261.8 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZLast",7, "423.6 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZLast",8, "8.8 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZLast",9, "14.5 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZLast",10, "76.4 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZLast",11, "85.5 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZLast",12, "92.1 %$")。

ObjectSet("FiboZZLast",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZLast",13, "0.0")。

}

}

如果( wave_cnt==2 && Fibo2_off==False ){

ObjectDelete("FiboZZPrev")。

ObjectCreate("FiboZZPrev", OBJ_FIBO, 0, TimeTmp, ExtMapBuffer2[w], TimeTmp, price) 。

ObjectSet("FiboZZPrev", OBJPROP_LEVELCOLOR, Fibo_Color)。

ObjectSet("FiboZZPrev", OBJPROP_COLOR, Fibo_Color)。

ObjectSet("FiboZZPrev", OBJPROP_RAY, False );//要启用射线,请将False改为True。

ObjectSet("FiboZZPrev", OBJPROP_FIBOLEVELS, 14);

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZPrev",0, "23.6");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZPrev",1, "38.2")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZPrev",2, "50.0")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZPrev",3, "61.8")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZPrev",4, "100.0")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZPrev",5, "161.8")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZPrev",6, "261.8")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZPrev",7, "423.6")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZPrev",8, "8.8")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZPrev",9, "14.5");

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZPrev",10, "76.4")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZPrev",11, "85.5")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZPrev",12, "92.1")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZPrev",13, "0.0")。

如果( Fibo_Absolut_Value ){

ObjectSet("FiboZZPrev", OBJPROP_FIBOLEVELS, 14);

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+0,0.236); ObjectSetFiboDescription("FiboZZPrev",0, "23.6 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+1,0.382); ObjectSetFiboDescription("FiboZZPrev",1, "38.2 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+2,0.50); ObjectSetFiboDescription("FiboZZPrev",2, "50.0 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+3,0.618); ObjectSetFiboDescription("FiboZZPrev",3, "61.8 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+4,1.0); ObjectSetFiboDescription("FiboZZPrev",4, "100.0 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+5,1.618); ObjectSetFiboDescription("FiboZZPrev",5, "161.8 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+6,2.618); ObjectSetFiboDescription("FiboZZPrev",6, "261.8 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+7,4.236); ObjectSetFiboDescription("FiboZZPrev",7, "423.6 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+8,0.088); ObjectSetFiboDescription("FiboZZPrev",8, "8.8 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+9,0.145); ObjectSetFiboDescription("FiboZZPrev",9, "14.5 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+10,0.764); ObjectSetFiboDescription("FiboZZPrev",10, "76.4 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+11,0.855); ObjectSetFiboDescription("FiboZZPrev",11, "85.5 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+12,0.921); ObjectSetFiboDescription("FiboZZPrev",12, "92.1 %$")。

ObjectSet("FiboZZPrev",OBJPROP_FIRSTLEVEL+13,0.0); ObjectSetFiboDescription("FiboZZPrev",13, "0.0")。

}

}

}

wave_cnt++。

price=ExtMapBuffer2[w];

TimeTmp=Time[w];

}

}



//----

return(0);

}

//+------------------------------------------------------------------+

 
lagriv:

如何从这样一个指标中获得所选纤维水平的值?

什么他妈的?

你可能想把 "战争与和平 "也放在里面。

 

请帮助...我的专家顾问检查开放的订单......一次可以开放一个订单......但是当我在开放订单的时候在一条直线上输入止损点,它就会出现错误130......例如,它是这样的

如果(down>0)

{

ticket=OrderSend(Symbol(),OP_SELL,dLot,Bid,3,0,Bid-TakeProfit*Point,0,16384,0,Red)。

我输入了一个大小为100的止损点

ticket=OrderSend(Symbol(),OP_SELL,dLot,Bid,3,100,Bid-TakeProfit*Point,0,16384,0,Red); ...在测试者中给出错误130

DTz Alpari......也许我应该在,打开 订单并设置止损后修改p?......告诉我大概如何做到这一点,或者给我指出一个可以做到这一点的EA...请

 
ilmur:

请帮助...

100*点
 
ilmur:

请帮助...顾问有一个开放订单检查功能......一个订单可以在同一时间开放......但当在开放时直接输入一个停止尺寸时

一个新的订单可以在它被打开后被修改,并且可以设置一个停止......你能告诉我如何做到这一点,或者给我指出一个可以做到这一点的EA......请


止损点应该是双倍的类型。应指定应设置止损的价格。

extern double   Lot=1;// Лот ордера при ручном управлении.
extern int      StopLoss=100;//СтопЛосс ордера при ручном управлении
extern int      TakeProfit=100;//ТейкПрофит ордера при ручном управлении
extern int      MAGIC=467003; // У ордеров открытых вручную MAGIC=0
extern int      Proskalz=10; //Проскальзывание
..........
double PR,SL,TP;
..............
PR=PR=NormalizeDouble(Ask,Digits);
if(StopLoss==0){
  SL=0;
}
if(StopLoss>0){
  SL=PR-StopLoss*Point;
}
if(TakeProfit==0){
 TP=0;
}
if(TakeProfit>0){
  TP=PR+TakeProfit*Point;
}
SL=NormalizeDouble(SL,Digits);
TP=NormalizeDouble(TP,Digits);
int TicketBuy=OrderSend(Symbol(),OP_BUYSTOP,Lot,PR,Proskalz,SL,TP,NULL,MAGIC,0,CLR_NONE);
if(TicketBuy==(-1)){
  Print("Ошибка № "GetLastError()," при установке Бай-ордера");
}
 
alsu:
100*点
非常感谢每个人的回应
 
artmedia70:

为什么你已经写好的这个算法没有反映在你的代码中?
你认为只要看一下你的未格式化的代码就能立即指出你的错误吗?

你仍然需要 "阅读 "它...

这里是代码的摘录,你在纸上勾画的一切也都在代码中显示出来。

因此,在你把最简单的事情做好之前,你不应该再进一步......

你呢?你把所有的东西都堆在一起,你没有评论过任何一行。现在休息一个星期,回到你的代码。我相信你要花两个小时才能记住。100%


对不起,这段代码不是我的,我在自学,是关于挂单 的一块,其他的都是胡说八道,和往常一样的设置,手数,分形,拖曳。这个EA不工作,即由于堆积的订单,它正在损失,所以我决定放置一些限制,看看会发生什么。我将使用mql语言,但我不知道用它做什么。我不知道如何使用它。
 
stalkertula:
对不起,这段代码不是我的,我自己在研究。 这是关于挂单的部分,其余的是胡说八道,就像我们通常做的设置、手数、分形和拖曳。这个EA不工作,即由于堆积的订单,它正在损失,所以我决定放置一些限制,看看会发生什么。我将使用mql语言,但我不知道用它做什么。谢谢,我会研究的。

这很奇怪。有什么可道歉的呢?嗯...我已经向你展示了你应该如何设计你自己的代码,这样你就不必在以后弄清楚了。

既然你的代码是别人的...但是...你也可以对那些在分析过程中变得清晰的字符串进行评论。之后会更清楚,你最好在分析的基础上写出你自己的文章。所以要充分理解,了解并根据自己的需要进行转换。

恰恰会使你获得一个合乎逻辑的理解。这也会对你有好处。:)
好运!