编码帮助 - 页 19 1...121314151617181920212223242526...786 新评论 vegadigitalco 2012.01.30 16:09 #181 我已经在你的帮助下完成了我的EA 再次感谢你 你好,mLaden。 再次感谢您的巨大帮助 我已经在你的帮助下完成了我的EA,再次感谢。 谢谢 elbee1 2012.02.01 06:32 #182 重绘指标 我几周前在这个 "编码帮助 "的主题上发布了这个问题,但没有得到回应。 大多数MTF指标都会重绘,有些比其他的更多。我有一个重绘的指标,但有一个因素非常好,可以包含在一个方法中。问题是,我需要不断地手动更新/刷新,以便使它有意义。有什么方法可以在每一个刻度 或每一个'x'秒/刻度时自动刷新? 目前,为了刷新,我要么改变图表时间,然后再回去,要么进入图表/刷新选项卡,要么在图表上添加另一个指标,然后删除之前的一个.......,一遍又一遍!非常耗时。非常耗费时间! 如果有一种方法可以做到这种自动刷新,我将分享我的发现............。 谢谢。 el bee Mladen Rakic 2012.02.01 06:41 #183 ... el bee Metatrader在有新的tick出现时,会向窗口中的每一个指标发送自动刷新信号,所以这不是一个刷新的问题。通常情况下,你遇到的这种问题发生在一个指标没有正确找到变化的条数(通常在指标中被命名为 "极限")......所以这是该指标的一个问题。当你改变时间框架时,它会重新计算所有的条数,这就是为什么在这种情况下它会正确显示,而当只有一个条数的值发生变化时却不能正确显示。 总结:检查该指标的代码 - 它有一个错误。 el bee: 我几周前在这个主题 "编码帮助 "上发布了这个问题,但没有得到回应。大多数MTF指标都会重绘,有些比其他的更多。我有一个指标,它的重绘量很小,但有一个因素非常好,可以包含在一个方法中。问题是,我需要不断地手动更新/刷新,以便使它有意义。有没有一种方法可以在每一个刻度或每一个'x'秒/刻度时自动刷新?目前,为了刷新,我要么改变图表时间,然后再回去,要么进入图表/刷新选项卡,要么在图表上添加另一个指标,然后删除之前的一个.......,一遍又一遍!非常耗时。非常耗费时间!如果有一种方法可以做到这种自动刷新,我将分享我的发现............。谢谢。 el bee dolast 2012.02.11 04:52 #184 指标帮助 我可以使用一个指标,在最近的蜡烛上放一条垂直线,可以调整,如果有人有一个,可以分享,或者可以做一个,这将是非常感谢的。 Vincent 2012.02.11 09:32 #185 有什么错误的代码吗? 我想写一个基于开盘和收盘的EA。 但我有一个问题,就是开仓的条件。 我的方法是这样的。 + 当当前条形图的开盘价高于前一条形图的收盘价时卖出。TP是前一栏的收盘价。 + 买入,当当前条形图的开盘价低于前一个条形图的开盘价。TP是上一交易日的开盘价 + CLOSE当当前条形收盘。 这里是代码(我还在努力学习mql4,所以我知道这不是最好的代码) #property link "sando" #define MAGICMA 20050610 //====================parameter===================// extern double solantang =3; 外置双倍数solangiam =3。 外置双倍LotsSize =1。 //==============================================// //+------------------------------------------------------------------+ //| 检查未完成的交易。 //+------------------------------------------------------------------+ 计算当前订单(字符串符号) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { 如果(OrderType()==OP_BUY) buys++; 如果(OrderType()==OP_SELL) sells++; } } //---- 返回订单量 if(buys>0) return(buys); 否则返回(-sells)。 } //+------------------------------------------------------------------+ //|资金管理(类型3)| //+------------------------------------------------------------------+ double moneymanagement3() { double LotsSize = 0.1; 如果(OrdersHistoryTotal()>0) { OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)。 如果(OrderProfit() > 0) { 如果(OrderLots() > LotsSize) { LotsSize = OrderLots()/solangiam; } 否则 { LotsSize = LotsSize。 } } 否则 { LotsSize = OrderLots() * solantang; } } 返回(NormalizeDouble(LotsSize,2))。 } //+------------------------------------------------------------------+ //| CONDITION to open a trade |/+。 //+------------------------------------------------------------------+ 空白的opentrade() { int res; 如果(Close[0]<Open[1]) { res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red)。 返回。 } 如果(Open[0]>Open[1]) { res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],",MAGICMA,0,Blue)。 返回。 } } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ 空白启动() { //---- 检查历史和交易情况 如果(Bars<100 || IsTradeAllowed()==false) 返回。 //---- 按当前符号计算未结订单 如果(CalculateCurrentOrders(Symbol())==0) opentrade()。 //否则donggiaodich()。 //---- } //+------------------------------------------------------------------+ 并请查看 附件中的图片 我认为代码中存在一些问题 有时EA在满足条件的情况下不做交易T_T我不知道为什么 有时EA在不符合条件的情况下也会进行交易! 请帮助我解决代码中的问题。 附加的文件: 1_2.gif 12 kb new_edge.mq4 4 kb gpociejewski 2012.02.11 12:51 #186 7thman: 我想写一个基于开盘和收盘的EA但我有一个问题,关于条件打开一个交易。 我的方法是这样的。 + 卖出,当当前条形图的开盘价高于前一条形图的收盘价。TP是前一栏的收盘价。 + 买入,当当前条形图的开盘价低于前一个条形图的开盘价。TP是上一交易日的开盘价 + CLOSE当当前条形收盘。 这里是代码(我还在努力学习mql4,所以我知道这不是最好的代码)。 并请查看附件中的图片 我认为代码中存在一些问题 有时EA在满足条件的情况下不做交易_T我不知道为什么 有时EA在不满足条件的情况下进行交易!我不知道为什么。 请帮助我修复代码中的错误。 [lang=pl]+ 卖出:当当前条形图的开盘价高于前一条形图的收盘价。TP是前一交易日的收盘价。 + 买入 当当前条形图的开盘价低于前一个条形图的开盘价时。TP是前一栏的开盘价 这里是第一个错误。 如果(Close[0]Close[1]) if(Open[0]>Open[1]) (应该是Open[0]<Open[1]) 第二个是StopLoss。在你的代码中,你设置了StopLose,但在上面的描述中 你说你想在新条形图出现时关闭交易。 这里还有一个问题。假设Open[0]<Open[1]。差异可能非常小 当你的订单被执行时,价格将超过Open[1],TP将 小于订单开盘价。下面我添加了一个条件,可以捕捉这种情况。 如果我很好的理解,你想在交易结束后关闭所有的订单,下面是代码。 #property link "sando" #define MAGICMA 20050610 //====================parameter===================// 外置双倍索朗坦=3。 外置双倍数solangiam =3。 外置双倍LotsSize =1。 //==============================================// //+------------------------------------------------------------------+ //| 检查未完成的交易。 //+------------------------------------------------------------------+ 计算当前订单(字符串符号) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break; 如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { 如果(OrderType()==OP_BUY) buys++; 如果(OrderType()==OP_SELL) sells++; } } //---- 返回订单量 if(buys>0) return(buys); 否则返回(-sells)。 } //+------------------------------------------------------------------+ //|资金管理(类型3)| //+------------------------------------------------------------------+ double moneymanagement3() { double LotsSize = 0.1; 如果(OrdersHistoryTotal()>0) { OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)。 如果(OrderProfit() > 0) { 如果(OrderLots() > LotsSize) { LotsSize = OrderLots()/solangiam; } 否则 { LotsSize = LotsSize。 } } 否则 { LotsSize = OrderLots() * solantang; } } 返回(NormalizeDouble(LotsSize,2))。 } //+------------------------------------------------------------------+ //| CONDITION to open a trade |/+。 //+------------------------------------------------------------------+ 空白的opentrade() { int res; 如果(Close[1] Close[1] ) { res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1]," ",MAGICMA,0,Red)。 返回。 } 如果(Open[0]<Open[1] && Ask < Open[1]) { res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"",MAGICMA,0,Blue)。 返回。 } } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ 空白启动() { 如果(isNewBar()) { closeOrders(MAGICMA,OP_BUY); closeOrders(MAGICMA,OP_SELL)。 } Print(Close[1]-Open[0]); //---- 检查历史和交易情况 if(Bars<100 || IsTradeAllowed()==false) return; //---- 按当前符号计算未结订单 如果(CalculateCurrentOrders(Symbol())==0) opentrade()。 //否则donggiaodich()。 //---- } void closeOrders(int oMagic,int oType) { for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)) { 如果(OrderMagicNumber()==oMagic || oMagic<0){ 如果(OrderSymbol()==Symbol()) { 如果(OrderType()==oType || oType<0){ 如果(OrderType()==OP_BUY){ OrderClose(OrderTicket(),OrderLots(), Bid,0)。 i--; } 如果(OrderType() == OP_BUYSTOP) { OrderDelete(OrderTicket())。 i--; } 如果(OrderType()==OP_SELL) { OrderClose(OrderTicket(),OrderLots(),Ask,0)。 i--; } 如果(OrderType() == OP_SELLSTOP) { OrderDelete(OrderTicket())。 i--; } } } } } } } bool isNewBar() { static int prevTime; bool newBar=false; if(Time[0]!=prevTime) { newBar=true。 prevTime=Time[0]; } return(newBar)。 } //+------------------------------------------------------------------+ 干杯。 Grzesiek[/lang] Coding help 哪位高人可以把这个EA的每一句代表什么意思做个翻译!你会有意想不到的收获! 如何编码? kasio 2012.02.14 00:29 #187 编码帮助。使用ECN经纪商的EA放置止损和止盈 使用ECN经纪商的止损、止盈 朋友们。 我是一个MQL4编程 的新手,需要帮助在ECN经纪商的ORDERSEND中附加一个SL和TP。 最初,我不明白为什么SL和TP会使我的订单出现错误,直到有人指出,必须将ORDERSEND中的StopLoss和TakeProfit字段设置为 "0",否则ECN/STP经纪商将不会执行订单。 因此,我的问题是:我怎样才能在市场上执行一个订单,然后立即(或在一两秒内)给该票据附加一个SL/TP? 下面是与我的问题相关的一段代码。 如果(CurrentPriceBuy>UpperPriceTrigger) { OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE)。 } 谁能帮我在OrderSend命令后插入代码,以便我可以在该特定票据上附加一个任意为25点的TP/SL? 任何帮助都将是非常感激的。谢谢。 请注意。 卡西欧 gpociejewski 2012.02.14 15:50 #188 kasio: 使用ECN经纪商的止损、止盈朋友们。 我是一个MQL4编程的新手,需要帮助将SL和TP附加到ECN经纪商的ORDERSEND中。 最初,我不明白为什么SL和TP会使我的订单出现错误,直到有人指出,必须将ORDERSEND中的StopLoss和TakeProfit字段设置为 "0",否则ECN/STP经纪商将不会执行订单。 因此,我的问题是:我怎样才能在市场上执行一个订单,然后立即(或在一两秒内)给该票据附加一个SL/TP? 下面是与我的问题相关的一段代码。 如果(CurrentPriceBuy>UpperPriceTrigger) { OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE)。 } 谁能帮我在OrderSend命令后插入代码,以便我可以在该特定票据上附加一个任意为25点的TP/SL? 任何帮助都将是非常感激的。谢谢。 请注意。 卡西奥 嗨,卡西奥。 如果你在ECN经纪商交易,你应该发送没有SL/TP的订单并修改它。 下面是一个例子。 extern double StopLoss = 25; extern double TakeProfit = 25; if(isECN=true ) { ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slipage,0,0,comment,magic); OrderSelect(ticket,SELECT_BY_TICKET)。 OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - StopLoss*Point, StopLoss),sltpValue(Ask+ TakeProfit*Point, TakeProfit),0); } double sltpValue(double w1, int w2) { 如果(w2 == 0) 返回(0)。 返回(NormalizeDouble(w1, Digits))。 } 我希望它是清楚的 如果有更多问题,请联系我。 欢呼声。 尊敬的先生 如何编码? Coding help [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. [删除] 2012.02.20 18:15 #189 信息不是每时每刻都在更新 嗨,伙计们。 我写了这个EA,在我的屏幕上显示各种指标的信息。 但是,当我把EA附加到我的图表上时,信息每5分钟才更新一次(在5分钟图表上)。 而不是每隔一段时间。 我的编码有什么问题吗?我希望看到信息每隔一段时间就变化一次。 //+------------------------------------------------------------------+ //| test.mq4 | //| Copyright © 2011, Test Inc.| //|test.net - 测试资源和信息。| //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, Test Inc." #property link "http://www.test.net" //+------------------------------------------------------------------+ //|标签 | //+------------------------------------------------------------------+ #define ccilabel "CCIValue" #define rsilabel "RSIValue" #define stochlabel "StochValue" #define upperbandlabel "UpperBandValue" #define upperbandlabel "UpperBandValue" #define lowerbandlabel "LowerBandValue" #define lowerbandlabel "LowerBandValue" //+------------------------------------------------------------------+ //| 专家初始化功能 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { //---- //=================================================================== //动态相对强弱指数的出现 //=================================================================== 双重RSI。 double UpperBand; double LowerBand; RSI=iCustom(NULL,0, "动态区域RSI",14,0,1)。 UpperBand=iCustom(NULL,0, "动态区域RSI",14,1,1)。 LowerBand=iCustom(NULL,0, "Dynamic Zone RSI",14,2,1); //=================================================================== // CCI的出现 //=================================================================== 双CCI。 CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1)。 //=================================================================== // 随机性的出现 //=================================================================== double Stoch; Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1)。 //=================================================================== // 显示信息 //=================================================================== // CCIValue ObjectDelete(ccilabel)。 ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0); ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20); ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20); ObjectSetText(ccilabel, "CCIValue is " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue)。 // StochValue ObjectDelete(stochlabel); ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0); ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20); ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40); ObjectSetText(stochlabel, "StochValue is " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue)。 // RSIValue ObjectDelete(rsilabel)。 ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0); ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20); ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60); ObjectSetText(rsilabel, "RSIValue is " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue)。 // UpperBandValue ObjectDelete(upperbandlabel)。 ObjectCreate(upperbandlabel, OBJ_LABEL, 0, 0, 0); ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20); ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80); ObjectSetText(upperbandlabel, "UpperbandValue is " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue)。 // LowerBandValue ObjectDelete(lowerbandlabel)。 ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0); ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20); ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100); ObjectSetText(lowerbandlabel, "LowerBandValue is " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue)。 //---- 返回(0)。 } //+------------------------------------------------------------------+ Coding help 任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. 初学者的问题 MQL4 MT4 MetaTrader conf12L 2012.02.21 09:35 #190 幼儿园的支持和阻力模型 你好。 我需要有人修改附件中的一个支撑和阻力指标。第一个指标在出现突破时有一个提示。我需要在新的支撑或阻力条出现时发出警报。这个指标是最好的支撑/阻力指标之一,也非常强大,特别是在较高的时间段。 谢谢 kg_support_and_resistance.mq4 或 kg_support_and_resistance_alert_revision_2.ex4 附加的文件: kg_support_and_resistance.mq4 5 kb kg_support_and_resistance_alert_revision_2.ex4 9 kb 1...121314151617181920212223242526...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我已经在你的帮助下完成了我的EA 再次感谢你
你好,mLaden。
再次感谢您的巨大帮助
我已经在你的帮助下完成了我的EA,再次感谢。
谢谢
重绘指标
我几周前在这个 "编码帮助 "的主题上发布了这个问题,但没有得到回应。
大多数MTF指标都会重绘,有些比其他的更多。我有一个重绘的指标,但有一个因素非常好,可以包含在一个方法中。问题是,我需要不断地手动更新/刷新,以便使它有意义。有什么方法可以在每一个刻度 或每一个'x'秒/刻度时自动刷新?
目前,为了刷新,我要么改变图表时间,然后再回去,要么进入图表/刷新选项卡,要么在图表上添加另一个指标,然后删除之前的一个.......,一遍又一遍!非常耗时。非常耗费时间!
如果有一种方法可以做到这种自动刷新,我将分享我的发现............。
谢谢。
el bee
...
el bee
Metatrader在有新的tick出现时,会向窗口中的每一个指标发送自动刷新信号,所以这不是一个刷新的问题。通常情况下,你遇到的这种问题发生在一个指标没有正确找到变化的条数(通常在指标中被命名为 "极限")......所以这是该指标的一个问题。当你改变时间框架时,它会重新计算所有的条数,这就是为什么在这种情况下它会正确显示,而当只有一个条数的值发生变化时却不能正确显示。
总结:检查该指标的代码 - 它有一个错误。
我几周前在这个主题 "编码帮助 "上发布了这个问题,但没有得到回应。
大多数MTF指标都会重绘,有些比其他的更多。我有一个指标,它的重绘量很小,但有一个因素非常好,可以包含在一个方法中。问题是,我需要不断地手动更新/刷新,以便使它有意义。有没有一种方法可以在每一个刻度或每一个'x'秒/刻度时自动刷新?
目前,为了刷新,我要么改变图表时间,然后再回去,要么进入图表/刷新选项卡,要么在图表上添加另一个指标,然后删除之前的一个.......,一遍又一遍!非常耗时。非常耗费时间!
如果有一种方法可以做到这种自动刷新,我将分享我的发现............。
谢谢。
el bee指标帮助
我可以使用一个指标,在最近的蜡烛上放一条垂直线,可以调整,如果有人有一个,可以分享,或者可以做一个,这将是非常感谢的。
有什么错误的代码吗?
我想写一个基于开盘和收盘的EA。
但我有一个问题,就是开仓的条件。
我的方法是这样的。
+ 当当前条形图的开盘价高于前一条形图的收盘价时卖出。TP是前一栏的收盘价。
+ 买入,当当前条形图的开盘价低于前一个条形图的开盘价。TP是上一交易日的开盘价
+ CLOSE当当前条形收盘。
这里是代码(我还在努力学习mql4,所以我知道这不是最好的代码)
#property link "sando"
#define MAGICMA 20050610
//====================parameter===================//
extern double solantang =3;
外置双倍数solangiam =3。
外置双倍LotsSize =1。
//==============================================//
//+------------------------------------------------------------------+
//| 检查未完成的交易。
//+------------------------------------------------------------------+
计算当前订单(字符串符号)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
如果(OrderType()==OP_BUY) buys++;
如果(OrderType()==OP_SELL) sells++;
}
}
//---- 返回订单量
if(buys>0) return(buys);
否则返回(-sells)。
}
//+------------------------------------------------------------------+
//|资金管理(类型3)|
//+------------------------------------------------------------------+
double moneymanagement3()
{
double LotsSize = 0.1;
如果(OrdersHistoryTotal()>0)
{
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)。
如果(OrderProfit() > 0)
{
如果(OrderLots() > LotsSize)
{
LotsSize = OrderLots()/solangiam;
}
否则
{
LotsSize = LotsSize。
}
}
否则
{
LotsSize = OrderLots() * solantang;
}
}
返回(NormalizeDouble(LotsSize,2))。
}
//+------------------------------------------------------------------+
//| CONDITION to open a trade |/+。
//+------------------------------------------------------------------+
空白的opentrade()
{
int res;
如果(Close[0]<Open[1])
{
res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red)。
返回。
}
如果(Open[0]>Open[1])
{
res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],",MAGICMA,0,Blue)。
返回。
}
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
空白启动()
{
//---- 检查历史和交易情况
如果(Bars<100 || IsTradeAllowed()==false) 返回。
//---- 按当前符号计算未结订单
如果(CalculateCurrentOrders(Symbol())==0) opentrade()。
//否则donggiaodich()。
//----
}
//+------------------------------------------------------------------+
并请查看 附件中的图片
我认为代码中存在一些问题
有时EA在满足条件的情况下不做交易T_T我不知道为什么
有时EA在不符合条件的情况下也会进行交易!
请帮助我解决代码中的问题。
我想写一个基于开盘和收盘的EA
但我有一个问题,关于条件打开一个交易。
我的方法是这样的。
+ 卖出,当当前条形图的开盘价高于前一条形图的收盘价。TP是前一栏的收盘价。
+ 买入,当当前条形图的开盘价低于前一个条形图的开盘价。TP是上一交易日的开盘价
+ CLOSE当当前条形收盘。
这里是代码(我还在努力学习mql4,所以我知道这不是最好的代码)。
并请查看附件中的图片
我认为代码中存在一些问题
有时EA在满足条件的情况下不做交易_T我不知道为什么
有时EA在不满足条件的情况下进行交易!我不知道为什么。
请帮助我修复代码中的错误。[lang=pl]+ 卖出:当当前条形图的开盘价高于前一条形图的收盘价。TP是前一交易日的收盘价。
+ 买入 当当前条形图的开盘价低于前一个条形图的开盘价时。TP是前一栏的开盘价
这里是第一个错误。
如果(Close[0]Close[1])
if(Open[0]>Open[1]) (应该是Open[0]<Open[1])
第二个是StopLoss。在你的代码中,你设置了StopLose,但在上面的描述中
你说你想在新条形图出现时关闭交易。
这里还有一个问题。假设Open[0]<Open[1]。差异可能非常小
当你的订单被执行时,价格将超过Open[1],TP将
小于订单开盘价。下面我添加了一个条件,可以捕捉这种情况。
如果我很好的理解,你想在交易结束后关闭所有的订单,下面是代码。
#property link "sando"
#define MAGICMA 20050610
//====================parameter===================//
外置双倍索朗坦=3。
外置双倍数solangiam =3。
外置双倍LotsSize =1。
//==============================================//
//+------------------------------------------------------------------+
//| 检查未完成的交易。
//+------------------------------------------------------------------+
计算当前订单(字符串符号)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;
如果(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
{
如果(OrderType()==OP_BUY) buys++;
如果(OrderType()==OP_SELL) sells++;
}
}
//---- 返回订单量
if(buys>0) return(buys);
否则返回(-sells)。
}
//+------------------------------------------------------------------+
//|资金管理(类型3)|
//+------------------------------------------------------------------+
double moneymanagement3()
{
double LotsSize = 0.1;
如果(OrdersHistoryTotal()>0)
{
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)。
如果(OrderProfit() > 0)
{
如果(OrderLots() > LotsSize)
{
LotsSize = OrderLots()/solangiam;
}
否则
{
LotsSize = LotsSize。
}
}
否则
{
LotsSize = OrderLots() * solantang;
}
}
返回(NormalizeDouble(LotsSize,2))。
}
//+------------------------------------------------------------------+
//| CONDITION to open a trade |/+。
//+------------------------------------------------------------------+
空白的opentrade()
{
int res;
如果(Close[1] Close[1] )
{
res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1]," ",MAGICMA,0,Red)。
返回。
}
如果(Open[0]<Open[1] && Ask < Open[1])
{
res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"",MAGICMA,0,Blue)。
返回。
}
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
空白启动()
{
如果(isNewBar())
{
closeOrders(MAGICMA,OP_BUY);
closeOrders(MAGICMA,OP_SELL)。
}
Print(Close[1]-Open[0]);
//---- 检查历史和交易情况
if(Bars<100 || IsTradeAllowed()==false) return;
//---- 按当前符号计算未结订单
如果(CalculateCurrentOrders(Symbol())==0) opentrade()。
//否则donggiaodich()。
//----
}
void closeOrders(int oMagic,int oType) {
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
如果(OrderMagicNumber()==oMagic || oMagic<0){
如果(OrderSymbol()==Symbol()) {
如果(OrderType()==oType || oType<0){
如果(OrderType()==OP_BUY){
OrderClose(OrderTicket(),OrderLots(), Bid,0)。
i--;
}
如果(OrderType() == OP_BUYSTOP)
{
OrderDelete(OrderTicket())。
i--;
}
如果(OrderType()==OP_SELL) {
OrderClose(OrderTicket(),OrderLots(),Ask,0)。
i--;
}
如果(OrderType() == OP_SELLSTOP)
{
OrderDelete(OrderTicket())。
i--;
}
}
}
}
}
}
}
bool isNewBar() {
static int prevTime;
bool newBar=false;
if(Time[0]!=prevTime) {
newBar=true。
prevTime=Time[0];
}
return(newBar)。
}
//+------------------------------------------------------------------+
干杯。
Grzesiek[/lang]
编码帮助。使用ECN经纪商的EA放置止损和止盈
使用ECN经纪商的止损、止盈
朋友们。
我是一个MQL4编程 的新手,需要帮助在ECN经纪商的ORDERSEND中附加一个SL和TP。
最初,我不明白为什么SL和TP会使我的订单出现错误,直到有人指出,必须将ORDERSEND中的StopLoss和TakeProfit字段设置为 "0",否则ECN/STP经纪商将不会执行订单。
因此,我的问题是:我怎样才能在市场上执行一个订单,然后立即(或在一两秒内)给该票据附加一个SL/TP?
下面是与我的问题相关的一段代码。
如果(CurrentPriceBuy>UpperPriceTrigger)
{
OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE)。
}
谁能帮我在OrderSend命令后插入代码,以便我可以在该特定票据上附加一个任意为25点的TP/SL?
任何帮助都将是非常感激的。谢谢。
请注意。
卡西欧
使用ECN经纪商的止损、止盈
朋友们。
我是一个MQL4编程的新手,需要帮助将SL和TP附加到ECN经纪商的ORDERSEND中。
最初,我不明白为什么SL和TP会使我的订单出现错误,直到有人指出,必须将ORDERSEND中的StopLoss和TakeProfit字段设置为 "0",否则ECN/STP经纪商将不会执行订单。
因此,我的问题是:我怎样才能在市场上执行一个订单,然后立即(或在一两秒内)给该票据附加一个SL/TP?
下面是与我的问题相关的一段代码。
如果(CurrentPriceBuy>UpperPriceTrigger)
{
OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,Co mm,0,0,CLR_NONE)。
}
谁能帮我在OrderSend命令后插入代码,以便我可以在该特定票据上附加一个任意为25点的TP/SL?
任何帮助都将是非常感激的。谢谢。
请注意。
卡西奥嗨,卡西奥。
如果你在ECN经纪商交易,你应该发送没有SL/TP的订单并修改它。
下面是一个例子。
extern double StopLoss = 25;
extern double TakeProfit = 25;
if(isECN=true )
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slipage,0,0,comment,magic);
OrderSelect(ticket,SELECT_BY_TICKET)。
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - StopLoss*Point, StopLoss),sltpValue(Ask+ TakeProfit*Point, TakeProfit),0);
}
double sltpValue(double w1, int w2)
{
如果(w2 == 0)
返回(0)。
返回(NormalizeDouble(w1, Digits))。
}
我希望它是清楚的
如果有更多问题,请联系我。
欢呼声。
尊敬的先生
信息不是每时每刻都在更新
嗨,伙计们。
我写了这个EA,在我的屏幕上显示各种指标的信息。
但是,当我把EA附加到我的图表上时,信息每5分钟才更新一次(在5分钟图表上)。
而不是每隔一段时间。 我的编码有什么问题吗?我希望看到信息每隔一段时间就变化一次。
//+------------------------------------------------------------------+
//| test.mq4 |
//| Copyright © 2011, Test Inc.|
//|test.net - 测试资源和信息。|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Test Inc."
#property link "http://www.test.net"
//+------------------------------------------------------------------+
//|标签 |
//+------------------------------------------------------------------+
#define ccilabel "CCIValue"
#define rsilabel "RSIValue"
#define stochlabel "StochValue"
#define upperbandlabel "UpperBandValue" #define upperbandlabel "UpperBandValue"
#define lowerbandlabel "LowerBandValue" #define lowerbandlabel "LowerBandValue"
//+------------------------------------------------------------------+
//| 专家初始化功能 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//----
//===================================================================
//动态相对强弱指数的出现
//===================================================================
双重RSI。
double UpperBand;
double LowerBand;
RSI=iCustom(NULL,0, "动态区域RSI",14,0,1)。
UpperBand=iCustom(NULL,0, "动态区域RSI",14,1,1)。
LowerBand=iCustom(NULL,0, "Dynamic Zone RSI",14,2,1);
//===================================================================
// CCI的出现
//===================================================================
双CCI。
CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1)。
//===================================================================
// 随机性的出现
//===================================================================
double Stoch;
Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1)。
//===================================================================
// 显示信息
//===================================================================
// CCIValue
ObjectDelete(ccilabel)。
ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);
ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20);
ObjectSetText(ccilabel, "CCIValue is " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue)。
// StochValue
ObjectDelete(stochlabel);
ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40);
ObjectSetText(stochlabel, "StochValue is " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue)。
// RSIValue
ObjectDelete(rsilabel)。
ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20);
ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);
ObjectSetText(rsilabel, "RSIValue is " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue)。
// UpperBandValue
ObjectDelete(upperbandlabel)。
ObjectCreate(upperbandlabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80);
ObjectSetText(upperbandlabel, "UpperbandValue is " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue)。
// LowerBandValue
ObjectDelete(lowerbandlabel)。
ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0);
ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20);
ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100);
ObjectSetText(lowerbandlabel, "LowerBandValue is " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue)。
//----
返回(0)。
}
//+------------------------------------------------------------------+
幼儿园的支持和阻力模型
你好。
我需要有人修改附件中的一个支撑和阻力指标。第一个指标在出现突破时有一个提示。我需要在新的支撑或阻力条出现时发出警报。这个指标是最好的支撑/阻力指标之一,也非常强大,特别是在较高的时间段。
谢谢
kg_support_and_resistance.mq4 或
kg_support_and_resistance_alert_revision_2.ex4