新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 588 1...581582583584585586587588589590591592593594595...1953 新评论 Ihor Herasko 2018.07.27 07:02 #5871 lil_lil:我一次关闭4个头寸,如何在计算损失的功能中把它们算作一个连续的头寸? 由于滑移,它们可能会以相同的价格收盘,时间也可能不同。 审判。 如果经纪人允许反击平仓,我们应该开一个反击订单,其数量等于累计平仓订单的数量,以确定收盘价。然后收盘价就固定了,你可以悠闲地执行4笔交易,关闭相反的订单。 Sergey Likho 2018.07.27 13:03 #5872 你能告诉我如何确定保证金的计算方式吗? 一些经纪商对每个头寸收取保证金。而有些经纪人,只在买入和卖出的数量上有差异。(即,如果账户是全额锁定,那么保证金为零) 如何以编程方式确定保证金的计算方法? Ghabo 2018.07.30 07:40 #5873 你好。我正在寻找MA之上的分形。 在寻找MA之上的分形时,我记住了一个条形,然后从这个条形中寻找分形,如果它小于我找到的第一个分形,那么就是真的 在评论中不断虚假 Comment(f_ma(Symbol(),0,i)); //+----------------------------------------------------------------------------+ bool f_ma(string sy="0",int tf=0,int nf=0) { if(sy=="" || sy=="0") sy=Symbol(); double f=0,MA=0,fr1,fr2; int d=MarketInfo(sy,MODE_DIGITS),s; if(d==0) if(StringFind(sy,"JPY")<0) d=4; else d=2; int i,k=iBars(sy,tf),kf,num_bar; for(i=nf+2; i<k; i++) { f=iFractals(sy,tf,MODE_UPPER,i); MA=iMA(NULL,0,35,0,MODE_EMA,PRICE_CLOSE,i); if(f!=0) { // kf++; if(f>MA) {num_bar=i; fr1=NormalizeDouble(f, d);continue;} } } // for(i=nf+ num_bar; i<k; i++) { f=iFractals(sy,tf,MODE_UPPER,i); if(f!=0) { fr2=NormalizeDouble(f, d); if(fr2<fr1) return(true); } } return(false); } Alexey Viktorov 2018.07.30 08:12 #5874 Ghabo:你好。我正在寻找MA之上的分形。 在寻找MA之上的分形时,我记住了一个条形,然后从这个条形中寻找分形,如果它小于我找到的第一个分形,那么就是真的 在评论中不断虚假 问题出在这一行 if(f>MA) {num_bar=i; fr1=NormalizeDouble(f, d);continue;} 如果发现一个分形,并且它在MA之上,我们应该中断周期而不是继续它。在找到第一个分形之后,还会有另一个分形和第三个分形,以此类推。 Ghabo 2018.07.30 08:14 #5875 Alexey Viktorov:问题出在这一行 如果发现一个分形,并且它在MA之上,我们应该中断周期而不是继续它。在找到第一个分形之后,还会有另一个分形和第三个分形,以此类推。 谢谢你。替换为break;现在它总是真的。但条件if(fr2<fr1) 不满足。 Alexey Viktorov 2018.07.30 08:50 #5876 Ghabo: 谢谢你。替换为break;现在它总是真的。但条件if(fr2<fr1) 不满足。所以我们必须在显示函数的结果之前添加这个条件。这有什么难的? Ghabo 2018.07.30 15:17 #5877 Alexey Viktorov:所以你必须在函数输出结果之前添加这个条件。这有什么难的?如果不满足条件,该函数不是应该返回false吗? #property strict #property indicator_chart_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- if(rates_total<100) return(0); int limit=rates_total-prev_calculated; if(limit>200)limit=200; for(int i=limit; i>0; i--) { Comment(f_ma(Symbol(),0,i)); } //--- return value of prev_calculated for next call return(rates_total); } //------------------- bool f_ma(string sy="0",int tf=0,int nf=0) { if(sy=="" || sy=="0") sy=Symbol(); double f=0,MA=0,fr1,fr2; int d=MarketInfo(sy,MODE_DIGITS),s; if(d==0) if(StringFind(sy,"JPY")<0) d=4; else d=2; int i,k=iBars(sy,tf),kf,num_bar; for(i=nf+2; i<k; i++) { f=iFractals(sy,tf,MODE_UPPER,i); MA=iMA(NULL,0,35,0,MODE_EMA,PRICE_CLOSE,i); if(f!=0) { // kf++; if(f>MA) {num_bar=i; fr1=NormalizeDouble(f, d);break;} } } // for(i=nf+ num_bar; i<k; i++) { f=iFractals(sy,tf,MODE_UPPER,i); if(f!=0) { fr2=NormalizeDouble(f, d); if(fr2<fr1) return(true); } } return(false); } Alexey Viktorov 2018.07.30 15:25 #5878 Ghabo:如果不满足条件,该函数不是应该返回false吗? 检查iFractals是否返回0或空值。 Ghabo 2018.07.30 17:10 #5879 Alexey Viktorov:检查iFractals是否返回0或空值。数据窗口 里有一个空值。用if(f!=EMPTY_VALUE)替换了if(f!=0),结果没有变化。 Alexey Viktorov 2018.07.30 18:10 #5880 Ghabo: 数据窗口 里有一个空值。用if(f!=EMPTY_VALUE)替换了if(f!=0),结果没有变化。1.我说的是检查,而不是更换。如果没有分形,iFractals返回0。我不经常使用它,自然也不会用这种琐事来堵塞未干的记忆残片。2.这个函数虽然写得很糟糕,但仍能正常工作。3.最后一个值显示在注释中。将其替换为 Print("************ ", f_ma(Symbol(), 0, 0)); 看看它打印了多少次 2018.07.30 21:02:43.656 00 EURUSD.e,H1: ************ true 1...581582583584585586587588589590591592593594595...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我一次关闭4个头寸,如何在计算损失的功能中把它们算作一个连续的头寸?
由于滑移,它们可能会以相同的价格收盘,时间也可能不同。
审判。
如果经纪人允许反击平仓,我们应该开一个反击订单,其数量等于累计平仓订单的数量,以确定收盘价。然后收盘价就固定了,你可以悠闲地执行4笔交易,关闭相反的订单。
你能告诉我如何确定保证金的计算方式吗?
一些经纪商对每个头寸收取保证金。而有些经纪人,只在买入和卖出的数量上有差异。(即,如果账户是全额锁定,那么保证金为零)
如何以编程方式确定保证金的计算方法?
你好。我正在寻找MA之上的分形。
在寻找MA之上的分形时,我记住了一个条形,然后从这个条形中寻找分形,如果它小于我找到的第一个分形,那么就是真的
在评论中不断虚假
你好。我正在寻找MA之上的分形。
在寻找MA之上的分形时,我记住了一个条形,然后从这个条形中寻找分形,如果它小于我找到的第一个分形,那么就是真的
在评论中不断虚假
问题出在这一行
如果发现一个分形,并且它在MA之上,我们应该中断周期而不是继续它。在找到第一个分形之后,还会有另一个分形和第三个分形,以此类推。
问题出在这一行
如果发现一个分形,并且它在MA之上,我们应该中断周期而不是继续它。在找到第一个分形之后,还会有另一个分形和第三个分形,以此类推。
谢谢你。替换为break;现在它总是真的。但条件if(fr2<fr1) 不满足。
所以我们必须在显示函数的结果之前添加这个条件。这有什么难的?
所以你必须在函数输出结果之前添加这个条件。这有什么难的?
如果不满足条件,该函数不是应该返回false吗?
如果不满足条件,该函数不是应该返回false吗?
检查iFractals是否返回0或空值。
检查iFractals是否返回0或空值。
数据窗口 里有一个空值。用if(f!=EMPTY_VALUE)替换了if(f!=0),结果没有变化。
1.我说的是检查,而不是更换。如果没有分形,iFractals返回0。我不经常使用它,自然也不会用这种琐事来堵塞未干的记忆残片。
2.这个函数虽然写得很糟糕,但仍能正常工作。
3.最后一个值显示在注释中。将其替换为
看看它打印了多少次