新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 479 1...472473474475476477478479480481482483484485486...1953 新评论 Aidar Kaliaskar 2018.02.23 13:27 #4781 Vladislav Andruschenko: 展开,如果设置为当前。测试结束日期如果作为当前的账单。 可能还有很多原因。固定价差, 结束日期 01.01.18 Vladislav Andruschenko 2018.02.23 14:25 #4782 Aidar Kaliaskar:固定价差,结束日期为18年1月1日 每点成本..... 等 这个周末试试。 Maxim Khrolenko 2018.02.23 18:12 #4783 我试图在MQL4中制作一个指标,通过 "US.30+"的收盘价在 "US.500+"图表中绘制一条线。一般来说,两个符号的价格线将在一个图表上可见。以下是代码,但它不起作用。在日志信息中 "自定义缓冲区的指标还不支持"。教教我为什么它不起作用。反对。 #property version "1.00" #property strict #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_color1 clrRed #property indicator_style1 STYLE_DOT #property indicator_type1 DRAW_LINE //--- input string symbolName="US.30+"; // Symbol name input double difference=-22387.0; // Difference from other symbol //--- price buffer for other symbol double otherSymbol[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,otherSymbol,INDICATOR_DATA); //--- return INIT_SUCCEEDED; } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- for(int i=prev_calculated;i<rates_total;i++) otherSymbol[i+1]=iClose(symbolName,PERIOD_CURRENT,i)+difference; ArraySetAsSeries(otherSymbol,true); //--- return value of prev_calculated for next call return(rates_total); } Artyom Trishkin 2018.02.23 18:42 #4784 Maxim Khrolenko:我试图在MQL4中制作一个指标,通过 "US.30+"的收盘价在 "US.500+"图表中绘制一条线。一般来说,两个符号的价格线将在一个图表上可见。以下是代码,但它不起作用。在日志信息中 "自定义缓冲区的指标还不支持"。教教我为什么它不起作用。反对。 因为你必须使用第一种形式的调用。 Maxim Khrolenko 2018.02.23 19:06 #4785 Artyom Trishkin: 因为你必须使用第一种形式的调用。 改变了它,并...成功了!非常感谢你。 lil_lil 2018.02.23 19:10 #4786 STARIJ:我找到了原因--60秒应该从一个循环中计算出来 谢谢你,谢谢你的澄清。 如果不是60秒,而是300秒。 开仓时间 不同,你需要写上与开仓时间相隔300秒。 我应该如何做呢? Konstantin Erin 2018.02.23 19:27 #4787 lil_lil: 如果是300秒而不是60秒......。你需要从开仓时起每隔300秒写一次。 你怎么做呢?你试过我的方案吗?我真的不明白300...如果你设置300而不是60,是真的吗?如果你告诉我如何从中获利,我将尝试更好地理解它! Roman Sharanov 2018.02.24 04:34 #4788 对EA的帮助,像往常一样,问题可能是微不足道的,但我还没有解决这个难题如果从ema>smma 或者没有达到它的点,就应该开仓买入(卖出也一样)。应该在收盘时结束交易--开一个新的酒吧。下一次开盘的方式相同,但条件是高于前一次的开盘价,也就是last_order_price。但最终,它在它想打开的地方打开,在它想关闭的地方关闭。(在测试开始时,它打开并立即关闭) #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict input int MA_period=10; input int take=200, stop=200, Magic=1104; input double lot=0.05; input int slippage=30; input int point=5; double last_order_price,fast_MA,slow_MA; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- fast_MA=iMA(Symbol(),PERIOD_CURRENT,MA_period,0,MODE_EMA,PRICE_CLOSE,0); slow_MA=iMA(Symbol(),PERIOD_CURRENT,MA_period,0,MODE_SMMA,PRICE_CLOSE,0); if(fast_MA>slow_MA) last_order_price=0; else last_order_price=Ask+stop*_Point; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- fast_MA=iMA(Symbol(),PERIOD_CURRENT,MA_period,0,MODE_EMA,PRICE_CLOSE,0); slow_MA=iMA(Symbol(),PERIOD_CURRENT,MA_period,0,MODE_SMMA,PRICE_CLOSE,0); if(Bid<=fast_MA+point*_Point && Bid>=fast_MA && fast_MA>slow_MA && SymOrder() && Bid>last_order_price) { OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,Ask-stop*_Point,Ask+take*_Point,NULL,Magic,0,clrBlue); last_order_price=Bid; } if(Bid>=fast_MA-point*_Point && Bid<=fast_MA && fast_MA<slow_MA && SymOrder() && Bid<last_order_price) { OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,Bid+stop*_Point,Bid-take*_Point,NULL,Magic,0,clrRed); last_order_price=Bid; } if(!SymOrder() && Volume[0]<2 && OrderType()==OP_BUY) { OrderClose(OrderTicket(),lot,Bid,slippage,clrWhite); } if(!SymOrder() && Volume[0]<2 && OrderType()==OP_SELL) { OrderClose(OrderTicket(),lot,Ask,slippage,clrWhite); } } //+------------------------------------------------------------------+ bool SymOrder() { for(int i=0; i<OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) return false; } return true; } Konstantin Erin 2018.02.24 07:53 #4789 Roman Sharanov:帮助EA,像往常一样,问题可能是微不足道的,但我还没有解决这个难题如果从ema>smma 或者没有达到它的点,就应该开仓买入(卖出也一样)。应该在收盘时结束交易--开一个新的酒吧。下一次开盘的方式相同,但条件是高于前一次的开盘价,也就是last_order_price。但最终,它在它想打开的地方打开,在它想关闭的地方关闭。(在测试开始时,它打开并立即关闭) 我可以如何建议?把你的代码保存在剪贴板上,写在专家顾问中,然后在策略测试器中 运行它?好吧,我将看到它打开和关闭。那又怎样?我可能会在演示中运行它--今天是星期六,明天是星期天,市场关闭。你必须用眼睛去看他们吗?那么,你必须牢记所有变量的值。早前有一种用纸笔调试的方法--试试吧。你也可以在所有OrderSelect 和OrderClose之前放一个Alert("Bid=", Bid, Fast+P=",Fast_Ema+point*_Point," ....),并在测试器中设置一天,例如从2月19日到20日,然后在测试后打开日志,做一个拷贝,删除不必要的行,进行分析。MetaEditor还有一个调试功能。当你学会如何调试...它将是伟大的。 Photic 2018.02.24 13:17 #4790 它在哪里有一个按钮? 你能告诉我如何从#include <Controls\SpinEdit.mqh>(带增量的文本字段)中对齐CSpinEdit 控件中的文本。 默认情况下,它是向左边缘对齐的,但我想让它向右对齐。 1...472473474475476477478479480481482483484485486...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
展开,如果设置为当前。测试结束日期如果作为当前的账单。 可能还有很多原因。
固定价差, 结束日期 01.01.18
固定价差,结束日期为18年1月1日
每点成本..... 等
这个周末试试。
我试图在MQL4中制作一个指标,通过 "US.30+"的收盘价在 "US.500+"图表中绘制一条线。一般来说,两个符号的价格线将在一个图表上可见。以下是代码,但它不起作用。在日志信息中 "自定义缓冲区的指标还不支持"。教教我为什么它不起作用。反对。
我试图在MQL4中制作一个指标,通过 "US.30+"的收盘价在 "US.500+"图表中绘制一条线。一般来说,两个符号的价格线将在一个图表上可见。以下是代码,但它不起作用。在日志信息中 "自定义缓冲区的指标还不支持"。教教我为什么它不起作用。反对。
因为你必须使用第一种形式的调用。
我找到了原因--60秒应该从一个循环中计算出来
谢谢你,谢谢你的澄清。
如果不是60秒,而是300秒。
开仓时间 不同,你需要写上与开仓时间相隔300秒。
我应该如何做呢?
你试过我的方案吗?我真的不明白300...如果你设置300而不是60,是真的吗?如果你告诉我如何从中获利,我将尝试更好地理解它!
对EA的帮助,像往常一样,问题可能是微不足道的,但我还没有解决这个难题
如果从ema>smma 或者没有达到它的点,就应该开仓买入(卖出也一样)。应该在收盘时结束交易--开一个新的酒吧。下一次开盘的方式相同,但条件是高于前一次的开盘价,也就是last_order_price。
但最终,它在它想打开的地方打开,在它想关闭的地方关闭。(在测试开始时,它打开并立即关闭)
帮助EA,像往常一样,问题可能是微不足道的,但我还没有解决这个难题
如果从ema>smma 或者没有达到它的点,就应该开仓买入(卖出也一样)。应该在收盘时结束交易--开一个新的酒吧。下一次开盘的方式相同,但条件是高于前一次的开盘价,也就是last_order_price。
但最终,它在它想打开的地方打开,在它想关闭的地方关闭。(在测试开始时,它打开并立即关闭)
它在哪里有一个按钮?
你能告诉我如何从#include <Controls\SpinEdit.mqh>(带增量的文本字段)中对齐CSpinEdit 控件中的文本。
默认情况下,它是向左边缘对齐的,但我想让它向右对齐。