需要一些帮助 - 页 3

 
Jimdandy:

我想,对于那个#属性严格,你将不得不把i,j,k初始化为一个值......


琵琶网......吉姆丹迪

你的箭头 很可爱
 
 
int init() 
{
   int i=0,j=0,k=0;//initialize the variables to zero (now required with #property strict line that is at top of file.
   string ls;      //strings are initialized implicitly by compiler.
   while (true) {  //this loop will run until it breaks out of it at the break;.
        j=StringFind(LotsProgression,";",i);
        //Look in the LotsProgression string for a semicolon (LotsProgression="0.1;0.2;0.3")
        //Start looking from position i (which we initialized to 0 above)and 0 is the first position of the string. 
        //So it starts at the beginning of the string looking for ; and as you can see in the string above position 0=0,.=1,1=2,;=3... semicolon at position 3
        // now j=3; 
	if (j>0) {    //true.. j is 3 now.
        ls=StringSubstr(LotsProgression,i,j-i);//Get the piece of the string from i(which is 0)to j-1(3-1) which is 2. 0-2 position string is "0.1"
        //ls is now "0.1"
        i=j+1;//now i changes from 0 to 4.
        k++;//k gets incremented up from 0 to 1.
        ArrayResize(lots,k);// lots[] array gets made to the size of k which is 1.
        lots[k-1]=StrToDouble(ls);//the lots[]array is of the double type(remember arrays start at index 0)
	 Here we are inserting "0.1" string but using StrToDouble() to make it a double (floating decimal number)into index [0].
	//now lots[0]=0.1;
        } else {    //otherwise if j was not greater than zero..until we can not find any more semicolons in the string
                    //the following lines will not run and it will never break out of the while loop. So let's say it jumps to the top again.
		    //now remember i=4,j=3 and k=1 now. So it starts looking in the string at position 4(i)for a semicolon and finds one at position 7
		    //ls now become the string from i to j-1 or from 4 to 6 which is again "0.2". now j=7,i=8,k = 2.
		    //lots array gets re-sized to 2 so now it can hold index 0 and 1. and then index position k-1(2-1)=1 gets
		    //populated with the substring "0.2" turned into a double 0.2 lots[1]=0.2;
      		    //Now on the third search of the string it finds no more semicolons and the else statement kicks in.. 	
		    //Now i=8,j=7 and k is 2
        ls=StringSubstr(LotsProgression,i);//it starts at i (position 8 and reads to the end. getting "0.3"
        k++;//k is now 3
        ArrayResize(lots,k);//array now holds 3 indexes(indices)
        lots[k-1]=StrToDouble(ls);lots[2]=0.3.
        break;we are done with this while loop and our lots array is populated like we want!
	//the question is ... why not just declare an array double lots[] = {0.1,0.2,0.3};
        }
   }
   plen=ArraySize(lots);//in this case plen is now 3..which is not used.
}
我可以做箭头......但我不知道如何做一个笑脸.....:-(......or a tongue sticker outer face....:-%
PipPip....Jimdandy...
 
Jimdandy: 我认为在#属性严格的情况下,你必须将i、j、k初始化为一个值。
  1. 请不要张贴代码或文档的图片。对于代码,请使用SRC。对于文档,请使用链接按钮。
  2. int init()
    {
       int i,j, k;
       string ls;
       while (true) {
          j=stringFind(LotsProgression,";",i);
          if (j>0) {
             ls=StrngSubstr(..._
             i=j+1;
             k++;
       :
    
    Ij 在使用前已被初始化。K 错误地假定初始值为零,必须正确地初始化。
 
WHRoeder:
  1. 请不要张贴代码或文档的图片。对于代码,请使用SRC。对于文档,请使用链接按钮。
  2. Ij 在使用前已被初始化。K 错误地假定初始值为零,必须正确地初始化。

请原谅我跳上这个肥皂盒......我提前道歉....

1.我很抱歉,我当然不是想破坏你的一个发帖规则。
我想的更多的是如何帮助别人更好地理解mql4。
我有时会花几个小时来决定回复某人的问题的最佳方式。
我选择我所知道的最好的方式来表达我的观点。在这个过程中,我
可能确实不是以你认为最好的方式做的,你认为是最好的方式
在这个网站上做这件事。然而,我确实认为,人们确实从我能够学到的东西中
跌跌撞撞地放在这里。你必须认识到,不是每个人都像你一样知道
如何像你一样使用这个网站。

2.2.建议。
你做一个关于如何正确使用这个网站的功能的视频如何?
,以及在留帖时如何正确使用这个编辑器?或者至少给我
该视频的一个链接

3.如 果我想和别人分享文档中的一句话或一段话,我不会
我不会简单地粘贴一整页文档的链接,让人们在那一页中搜索,并试图找出哪一部分。
试图找出我想让他们阅读的部分。

4.一行像....
"2.I和j 在使用前被初始化。K 错误地假定初始值为零,必须正确地初始化。"

5.这是一个典型的例子,一个看起来非常聪明、有才华、精通代码的人,却没有
掌握的事实是,他们是在对没有受过教育的大众说话。要么就是你确实 认为你是在
和那些智力不如你的人说话,你喜欢向他们展示你是多么的聪明。
知道自己在做什么的程序员是不会看你的帖子的。他们已经知道任何事情
你可能要分享的东西。那些不了解情况的人正在阅读这些文章,并试图改善自己。

6.我不知道你的情况是什么。你是否真的担心这个网站会以某种方式
你是否真的担心这个网站开始看起来像一个facebook页面,以及你真的想促进对mql4的更好理解。
和帮助别人,同时保持网站的安排,或者,你是在某种自我的旅行中到处奔波
或者,你是在进行某种自负的旅行,在网站上到处乱跑,就像一个警察在监视某人把箭放在错误的地方。我当然希望这不是后者。

7.7.我从交易员和程序员的电子邮件和反馈中了解到,许多人已经停止了
我从交易员和程序员的电子邮件和反馈中得知,许多人已经不再来这里询问或回答问题,也不再为这个网站贡献他们的知识,因为他们自己或其他人在询问或回答问题时受到了粗鲁和令人厌恶的对待。
自己或他人在提问或回答问题时受到的粗暴对待。他们因为没有按照正确的格式发帖而被骚扰。
不管他们的问题是否合法,也不管他们的教学贡献是否有价值,他们都被骚扰。
只有那些真正绝望的人才能留下来。

8.8. 在这个网站上有这样的例子:人们问了一个简单的问题,可以在更短的时间内得到回答。
谴责他们没有搜索网站或在正确的地方发帖或包括错误的图片。
当他们问问题时,你实际上可以听到他们问题中的恐惧。害怕做一些事情让mql4的上帝不高兴

9.相反,他们感到不受欢迎,他们的问题被忽略了。为什么不建议采用正确的方式来发布
回答他们的问题?这绝对是一种耻辱。没有人赢。每个人都输了。学生仍然迷茫,那些
有能力帮助的人保持沉默,而mql4.com成为一个越来越不受欢迎的访问场所。

10. "给予比接受更快乐。"我们被告知。
Mql4.com这里,帮助别人给我带来了快乐,但这种快乐正在迅速消退。
如果我们必须经常担心因为向有需要的人伸出手而被打掉,那么就不会有
欢乐了,只有恐惧了。

11.有没有其他人有这种感觉,或者是我的想法有偏差?我能得到一个阿门吗?
好了,我已经从我的肥皂盒上下来了。
我仍然喜欢你的头像....
皮皮...吉姆丹迪

 
这很好,你们都做了很好的工作。我真的很感谢你们所有人,你们在这里 与我们分享这些内容。这真的很值得赞赏,我想说,感谢你在这里与我们分享这个帖子。
 
Jimdandy:

7.我从交易员和程序员的电子邮件和反馈中了解到,许多人已经停止了
许多人不再来这里询问、回答或贡献他们的知识,因为他们自己或其他人在询问或回答时受到了粗鲁和令人厌恶的对待。
自己或他人在提问或回答问题时受到的粗暴对待。他们因为没有按照正确的格式发帖而被骚扰。
不管他们的问题是否合法,也不管他们的教学贡献是否有价值,他们都被骚扰。
只有那些真正绝望的人才会留下来。


琵琶网......吉姆丹迪


我已经决定减少对这些论坛的参与,因为我发现这些论坛普遍是负面的。似乎有一种假设,即除了少数人之外,没有人知道他们在谈论什么。某些人显然不尊重大多数人的意见,而在其他地方自由地发表他们自己的意见,而且他们的措辞是如此的一贯和不必要的无礼,我经常想知道他们在现实生活中是如何与人互动的。像你一样,我怀疑他们不鼓励别人去打扰。当他们是正确的时候(他们经常是正确的),他们会非常大声,而当他们是错误的时候--沉默。

在这个论坛上的第一个帖子(强调了一个以前没有报告的错误)甚至没有被承认为对其他开发者有帮助的提示,而是被反复驳回,只有当我坚持我的立场时,这个错误才被承认(被更有理智的人承认),但却没有什么感谢的方式这应该是我的第一个警告!这几乎奠定了这里的基调,之后不久又发生了 类似的情况 。最近我自己的一条评论,由于某种原因,引起了IMO,一个不必要的强烈反应,对我来说几乎是封死了。


我将为MQL社区和代码库 做出贡献 (现在MQL4使代码重用更加实用),当我对特定的问题有具体的答案时,我可能会偶尔在这里发帖,这是我特别感兴趣的,但对于一般的疑问,大多数人都能得到主要贡献者的帮助,无论如何,从技术角度来说。

我认为这里的一些人把 "授人以鱼 "的崇高理念作为借口,经常粗暴对待。这有点像去伦敦唐人街的一家叫Wong Kei 的餐厅,食物和价值都很好,但如果你想有一个好的氛围,就不要去,工作人员故意不礼貌,上帝保佑你有一个合理的投诉!但它仍然有很多顾客!。

PS 这条线并不是正在讨论的最好的说明,可以说是相当合理的,可以找到很多 "更好 "的例子!

哦,还有 "阿门",BTW!

 
qjol:

你能解释一下你的问题吗?


我认为这叫循环函数,这让我很困惑。但感谢Jimdandy 的详细解释。

我想要什么?当我在图表上执行EA时,我想在其设置中定义两件事。

input string=LotsProgression "0.1;0.1;0.2;0.3;0.4;0.6;0.8;1.1;1.5;2.0;2.7;3.6;4.7;6.2;8.0;10.2;13.0;16.5;20.8;26.3;33.1" //Change able values.
我正在尝试写代码,我认为这很 "复杂"?
 
qgmql:

[...]我认为这很 "复杂"?


好运
 
Jimdandy:
//the question is ... why not just declare an array double lots[] = {0.1,0.2,0.3};
我在https://www.mql5.com/en/forum/129933,但它在那里被禁用,而且使用了不同的计算代码....。
//double aLots[]={1,3,6,12,24,48,96,192,384,768}; declared, but i think its not used.

//--- or maybe someone has changed it with below code.

if(MaxLots==0) llots=Lots; else       //in paulo costa hedge
if(MaxLots==Lots) llots=3*Lots; else  //llots=3+Lots also works
llots=MaxLots*2;                      //llots=MaxLots+2 also works

如果我采用您的建议,那么用户可以在图表上放置EA时在GUI设置中改变手数的值吗?

PS:我看到您的2ma cross EA,它在十字架上开仓交易(但一次只能开仓一次),是否有可能EA只在每个十字架上开仓交易,但不应该在反面关闭?

 
qgmql:


我认为这被称为循环函数,这让我很困惑。但感谢Jimdandy 的详细解释。

我想要什么?当我在图表上执行EA时,我想在其设置中定义两件事:交易数量和每个交易的大小。

我正在尝试写代码,我认为这很 "复杂"?

在使用新的MQL4++函数StringSplit 创建的数组上进行循环 在循环中调用StringToDouble。(见该页的例子开始)。