如何编码? - 页 199 1...192193194195196197198199200201202203204205206...347 新评论 crn 2009.08.15 01:03 #1981 V-Force: 我是mq4的新手,我试图在屏幕上创建一个显示,当MACD出现交叉的时候。以下是我的代码,但每隔几分钟就会弹出警报。 我如何编写代码使其每小时只显示一次警报?或者每个柱子一个警报? int start() { string MACD1=""。 color colt9; double MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0); double MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0); double MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1); double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1); 如果((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND"; colt9=LimeGreen; } 如果((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="下降趋势"; colt9=红色; } 如果(MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) 如果((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="新上升交叉点"; colt9=石灰绿; } 如果((MACDM_S11 MACDS_S10)) { MACD1="新的下跌横盘"; colt9=红色; }. 字符串MACD2=""。 颜色 colt14; double MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0); double MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0); double MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1); double MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1); 如果((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND"; colt14=LimeGreen; } 如果((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="下降趋势"; colt14=红色; } 如果((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="新上升交叉点"; colt14=石灰绿色; } 如果((MACDM_L11 MACDS_L10)) { MACD2="新的下跌横盘"; colt14=红色; } 如果(MACD1=="新上升交叉点"&&MACD2=="上升中") Alert(Symbol()," - ", "H1:"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS))。 如果(MACD1=="新的下降交叉点"&&MACD2=="下降中") Alert(Symbol()," - ", "H1:"," MACD主要下跌走势"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS)); 如果(MACD2=="新上升交叉点"&MACD1=="上升中") Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS) )。 如果(MACD2=="新的下降交叉点"&MACD1=="处于下降趋势") Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS))。 return(0)。 } 尝试在条件中使用Minute()==1;。 drhouse7 2009.08.16 11:20 #1982 趋势Alexcud的修改 if (MaH11v < MaH1pr1v){H11v = " V "; co11v = Red; u1x5v = 0; d1x5v = 1;} if (MaH11v > MaH1pr1v){H11v = " / / / "; co11v = Blue; u1x5v = 1; d1x5v = 1; } if (MaH11v > MaH1pr1v){H11v = " /\\ "; co11v = Blue; u1x5v = 1; d1x5v = 0;}. if (MaH11v == MaH1pr1v){H11v = " 0 "; co11v = Green; u1x5v = 0; d1x5v = 0;}。 大家好,我正在尝试修改Alexcud趋势(附后)。 我希望只有2个向上和向下的信号,而不是3个 "0 "的信号...... 这样计算才会更准确... 有什么想法吗? 附加的文件: trend_alexcud.mq4 22 kb lumanauw 2009.08.16 15:09 #1983 谁能帮助我理解这些编程线?用简单的英语来说 这是关于一个EA在一个条形图结束后开始的事情。 代码是这样的。 datetime timeprev=0; // 每个完成的柱子只运行一次 if(timeprev==Time[0]) return(0); timeprev = Time[0]; 我看了MQ4手册,Time[0]是用来提取bar[0]的开盘时间。它被表述为从1970年1月1日起的秒数。 我不明白它是如何工作的。首先我们有 "timeprev=0"。 然后下一行 "如果(timeprev==Time[0])返回(0)。 这个时候,Time[0]的值是多少?为什么它可以变成0("timeprev "的值)? 下一行是 "timeprev=Time[0]"。 这一行怎么会让EA在一个柱子结束之前什么都不做? Jason 2009.08.16 19:24 #1984 crn: 尝试在条件中使用Minute()==1;。 这仍然会在每个条形图的第一分钟内触发每个刻度。这可能会大大减少数量,但它仍然会多次报警。 最好的办法是设置一个全局变量(或对象),并将其设置为最后一个柱状图的时间[]。 if (Time[0]!=lastTime) { ... alert, whatever... lastTime=Time[0]; } Jason 2009.08.16 19:28 #1985 Jorged23: 你好。 我无法避免OrderModify的错误1:总是出现,即使尝试控制修改前的数据是不同的我也试过doublenormalize......不工作......。这就是代码。如果(Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit){如果(OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint){Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,Green) 。有什么建议吗? 谢谢。 快速检查...确保你没有把盈亏平衡距离设置得太短。根据MarketInfo(Symbol(),MODE_STOPLEVEL)检查,以确保它足够大。 VPoint的目的是什么?如果这个数字是错误的,就会把事情搞乱。"Point "本身将永远是正确的。如果这个数字不对,那肯定会造成问题。如果它不小心为0或小于POINT的实际值。 SPACECHIMP 2009.08.17 19:00 #1986 简单的编码问题 OrderSelect(5555, SELECT_BY_TICKET); RefreshRates()。 如果(Ask >= (OrderOpenPrice()+ (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_BUY)){ OrderClose(5555,1,Ask,10,Red); } 如果(Bid <= (OrderOpenPrice()- (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_SELL)){ OrderClose(5555,1,Bid,10,Blue); } 仍在努力学习... 当价格与开盘价 相差5个点时,这是否可以用来关闭一半的头寸(2手减为1手)? THANKS!!!!!! How to code? [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 10点3.mq4 luxinterior 2009.08.17 23:45 #1987 看起来差不多。不过,这有点乱。你也可以使用OrderProfit,这取决于你实际想要实现的目标。 拉克斯 PS:忘了说了,要注意小数点后5位的经纪商。一切都需要乘以10,所以在你的例子中,5将是50。祝您好运! SPACECHIMP 2009.08.18 04:28 #1988 luxinterior: 看起来差不多了。不过,这有点乱。你也可以使用OrderProfit,这取决于你实际想要实现的目的。 奢侈品 PS: 忘记说了,要注意小数点后5位的经纪商。一切都需要乘以10,所以在你的例子中,5将是50。祝您好运! 谢谢 LUX 问题是,我在温莎直接的1分钟英镑/美元图表 上运行调试,当它达到5点时,它没有关闭1手,所以我不知道是什么情况。 另外。 我试图关闭一个买入并立即打开一个卖出,这也是不顺利的。 它可以工作,然后又不工作...... 我希望这个程序能更简单一些 if (*******************) { RefreshRates()。 OrderSelect(5555,SELECT_BY_TICKET); 如果(OrdersTotal() > 0 && OrderType()==OP_BUY){OrderClose(5555, OrderLots(), Bid, Slippage, MediumSeaGreen); 如果(SignalMail)SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + "关闭买入");} 睡眠(1500)。 RefreshRates()。 如果(OrdersTotal() ==0)Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, 0, 0, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink) 。 if(Ticket<0)Print("OrderSend failed with error #",GetLastError())。 } How to code? QUICK partial closing programming [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. newcoder 2009.08.22 02:02 #1989 调试指标 我是这个语言的新手,我正在尝试写一个指标。由于没有调试器,我遇到了问题。我试着使用Print(),但什么都没有打印出来。使用Alert()我得到的缓冲区[1]的输出为零。谁能给我解释一下这个问题。我怎样才能使用Print()和Alert()来调试而不得到所有的ZERO。 如果有人有任何想法,请告诉我。非常感谢。 tigger.longtail@gmail.com ExtMapBuffer1 = iMA(NULL,0,ExtParam1,0,MODE_EMA,PRICE_CLOSE,i) 。 ExtMapBuffer2 = iMA(NULL,0,ExtParam2,0,MODE_EMA,PRICE_CLOSE,i); CurrentBar = Time; 如果( ExtMapBuffer1 >= ExtMapBuffer2 && CurrentBar == Time && Flag == 0) { Alert("ExtMapBuffer1 =", ExtMapBuffer1," Short is Above.",Hour()," Minute ",Minute())。 Alert("ExtMapBuffer2 =", ExtMapBuffer2," Short is Above.",Hour()," Minute ",Minute())。 Print("ExtMapBuffer1 = ", ExtMapBuffer1); Print("ExtMapBuffer2 = ", ExtMapBuffer2); How to code? Programming Question from a Alerts drhouse7 2009.08.22 11:11 #1990 没办法 1...192193194195196197198199200201202203204205206...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我是mq4的新手,我试图在屏幕上创建一个显示,当MACD出现交叉的时候。以下是我的代码,但每隔几分钟就会弹出警报。
我如何编写代码使其每小时只显示一次警报?或者每个柱子一个警报?
int start()
{
string MACD1=""。
color colt9;
double MACDM_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 0);
double MACDS_S10 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,0);
double MACDM_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_MAIN, 1);
double MACDS_S11 = iCustom(NULL, PERIOD_H1, "MACD", 8,17,9, MODE_SIGNAL,1);
如果((MACDM_S11 < MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="IN UPTREND"; colt9=LimeGreen; }
如果((MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10)) { MACD1="下降趋势"; colt9=红色; } 如果(MACDM_S11 > MACDS_S11 && MACDM_S10 > MACDS_S10))
如果((MACDM_S11 > MACDS_S11 && MACDM_S10 < MACDS_S10)) { MACD1="新上升交叉点"; colt9=石灰绿; }
如果((MACDM_S11 MACDS_S10)) { MACD1="新的下跌横盘"; colt9=红色; }.
字符串MACD2=""。
颜色 colt14;
double MACDM_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 0);
double MACDS_L10 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,0);
double MACDM_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_MAIN, 1);
double MACDS_L11 = iCustom(NULL, PERIOD_H1, "MACD", 12,26,9, MODE_SIGNAL,1);
如果((MACDM_L11 < MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="IN UPTREND"; colt14=LimeGreen; }
如果((MACDM_L11 > MACDS_L11 && MACDM_L10 > MACDS_L10)) { MACD2="下降趋势"; colt14=红色; }
如果((MACDM_L11 > MACDS_L11 && MACDM_L10 < MACDS_L10)) { MACD2="新上升交叉点"; colt14=石灰绿色; }
如果((MACDM_L11 MACDS_L10)) { MACD2="新的下跌横盘"; colt14=红色; }
如果(MACD1=="新上升交叉点"&&MACD2=="上升中")
Alert(Symbol()," - ", "H1:"," MACD MAIN UPTREND MOVEMENT"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS))。
如果(MACD1=="新的下降交叉点"&&MACD2=="下降中")
Alert(Symbol()," - ", "H1:"," MACD主要下跌走势"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS));
如果(MACD2=="新上升交叉点"&MACD1=="上升中")
Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO UPTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS) )。
如果(MACD2=="新的下降交叉点"&MACD1=="处于下降趋势")
Alert(Symbol()," - ", "H1:"," MACD, MAIN TREND CHANGE TO DOWNTREND"," at ", Bid, " - ",TimeToStr(CurTime(),TIME_SECONDS))。
return(0)。
}尝试在条件中使用Minute()==1;。
趋势Alexcud的修改
if (MaH11v < MaH1pr1v){H11v = " V "; co11v = Red; u1x5v = 0; d1x5v = 1;} if (MaH11v > MaH1pr1v){H11v = " / / / "; co11v = Blue; u1x5v = 1; d1x5v = 1; }
if (MaH11v > MaH1pr1v){H11v = " /\\ "; co11v = Blue; u1x5v = 1; d1x5v = 0;}.
if (MaH11v == MaH1pr1v){H11v = " 0 "; co11v = Green; u1x5v = 0; d1x5v = 0;}。
大家好,我正在尝试修改Alexcud趋势(附后)。
我希望只有2个向上和向下的信号,而不是3个 "0 "的信号......
这样计算才会更准确...
有什么想法吗?
谁能帮助我理解这些编程线?用简单的英语来说
这是关于一个EA在一个条形图结束后开始的事情。
代码是这样的。
datetime timeprev=0;
// 每个完成的柱子只运行一次
if(timeprev==Time[0]) return(0);
timeprev = Time[0];
我看了MQ4手册,Time[0]是用来提取bar[0]的开盘时间。它被表述为从1970年1月1日起的秒数。
我不明白它是如何工作的。首先我们有 "timeprev=0"。
然后下一行 "如果(timeprev==Time[0])返回(0)。
这个时候,Time[0]的值是多少?为什么它可以变成0("timeprev "的值)?
下一行是 "timeprev=Time[0]"。
这一行怎么会让EA在一个柱子结束之前什么都不做?
尝试在条件中使用Minute()==1;。
这仍然会在每个条形图的第一分钟内触发每个刻度。这可能会大大减少数量,但它仍然会多次报警。
最好的办法是设置一个全局变量(或对象),并将其设置为最后一个柱状图的时间[]。
if (Time[0]!=lastTime) {
... alert, whatever...
lastTime=Time[0];
}
你好。
我无法避免OrderModify的错误1:总是出现,即使尝试控制修改前的数据是不同的我也试过doublenormalize......不工作......。
这就是代码。
如果(Bid-OrderOpenPrice() >= VPoint*BreakEvenAtProfit)
{
如果(OrderStopLoss() != OrderOpenPrice() + BreakEvenShift*VPoint)
{
Vresult = OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ BreakEvenShift*VPoint,OrderTakeProfit(),0,Green) 。
有什么建议吗?
谢谢。快速检查...确保你没有把盈亏平衡距离设置得太短。根据MarketInfo(Symbol(),MODE_STOPLEVEL)检查,以确保它足够大。
VPoint的目的是什么?如果这个数字是错误的,就会把事情搞乱。"Point "本身将永远是正确的。如果这个数字不对,那肯定会造成问题。如果它不小心为0或小于POINT的实际值。
简单的编码问题
OrderSelect(5555, SELECT_BY_TICKET);
RefreshRates()。
如果(Ask >= (OrderOpenPrice()+ (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_BUY)){
OrderClose(5555,1,Ask,10,Red); }
如果(Bid <= (OrderOpenPrice()- (5 * Point)) && OrderLots() == 2 && (OrderType() == OP_SELL)){
OrderClose(5555,1,Bid,10,Blue); }
仍在努力学习...
当价格与开盘价 相差5个点时,这是否可以用来关闭一半的头寸(2手减为1手)?
THANKS!!!!!!
看起来差不多。不过,这有点乱。你也可以使用OrderProfit,这取决于你实际想要实现的目标。
拉克斯
PS:忘了说了,要注意小数点后5位的经纪商。一切都需要乘以10,所以在你的例子中,5将是50。祝您好运!
看起来差不多了。不过,这有点乱。你也可以使用OrderProfit,这取决于你实际想要实现的目的。
奢侈品
PS: 忘记说了,要注意小数点后5位的经纪商。一切都需要乘以10,所以在你的例子中,5将是50。祝您好运!谢谢 LUX
问题是,我在温莎直接的1分钟英镑/美元图表 上运行调试,当它达到5点时,它没有关闭1手,所以我不知道是什么情况。
另外。
我试图关闭一个买入并立即打开一个卖出,这也是不顺利的。
它可以工作,然后又不工作......
我希望这个程序能更简单一些
if (*******************) {
RefreshRates()。
OrderSelect(5555,SELECT_BY_TICKET);
如果(OrdersTotal() > 0 && OrderType()==OP_BUY){OrderClose(5555, OrderLots(), Bid, Slippage, MediumSeaGreen);
如果(SignalMail)SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + "关闭买入");}
睡眠(1500)。
RefreshRates()。
如果(OrdersTotal() ==0)Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, 0, 0, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink) 。
if(Ticket<0)Print("OrderSend failed with error #",GetLastError())。
}
调试指标
我是这个语言的新手,我正在尝试写一个指标。由于没有调试器,我遇到了问题。我试着使用Print(),但什么都没有打印出来。使用Alert()我得到的缓冲区[1]的输出为零。谁能给我解释一下这个问题。我怎样才能使用Print()和Alert()来调试而不得到所有的ZERO。 如果有人有任何想法,请告诉我。非常感谢。
tigger.longtail@gmail.com
ExtMapBuffer1 = iMA(NULL,0,ExtParam1,0,MODE_EMA,PRICE_CLOSE,i) 。
ExtMapBuffer2 = iMA(NULL,0,ExtParam2,0,MODE_EMA,PRICE_CLOSE,i);
CurrentBar = Time;
如果( ExtMapBuffer1 >= ExtMapBuffer2 && CurrentBar == Time && Flag == 0)
{
Alert("ExtMapBuffer1 =", ExtMapBuffer1," Short is Above.",Hour()," Minute ",Minute())。
Alert("ExtMapBuffer2 =", ExtMapBuffer2," Short is Above.",Hour()," Minute ",Minute())。
Print("ExtMapBuffer1 = ", ExtMapBuffer1);
Print("ExtMapBuffer2 = ", ExtMapBuffer2);
没办法