如何编码? - 页 279 1...272273274275276277278279280281282283284285286...347 新评论 Avasys 2011.11.18 12:39 #2781 g.pociejewski:[lang=pl]还有一个问题,你的时间是GMT还是非GMT?如果不是格林尼治标准时间,我将对这个EA做一点改变。 我刚刚做完,请检查一下,如果一切正常,请给我发邮件。 距离网的低点和高点止损和TP是我作为外部变量制作的。 谢谢 Grzesiek. [/lang] 亲爱的Grzesiek 我把这个指标粘贴在专家文件夹里,今天我监测了一下,想了解它的工作原理。它的问题是,一旦它做了第一笔交易,并且在止损或T/P上关闭了订单,然后EA立即在它关闭最近订单的价格上再次开始交易。我怎样才能在代码中阻止它呢? Avasys 2011.11.18 19:56 #2782 有谁能帮我解决这个问题? 你好,论坛 这个代码有一个问题,当它执行交易 时,它是正常的,但当它再次关闭订单时,EA在前一个订单关闭的价格和时间上打开新的交易。我在代码中没有看到任何错误。写这篇文章的人非常忙,不在线。谁能建议一下问题出在哪里? extern double stopLoss = 35.0; extern double takeProfit = 50.0; extern string Begin="00:00"; extern string End="08:00"; External double distance = 5; bool isECN = true; bool cond = false; bool cond2 = false; double low; double high; 外置双数lot = 1; int magic = 123; int slippage = 1; string comment = "test"; int ticket; //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { //---- 如果(isGoodTime(Begin,End)) { if(!cond) { low = Bid; high = Ask; } cond = true; if(Bid < low) low = Bid; 如果(Ask > high) high = Ask; } 如果((high - low)*1000>distance) { cond2 = true; } 如果(!isGoodTime(Begin,End)) { cond = false; } 如果(!isGoodTime(Begin,End) && cond2) { 如果(countOrders(magic,OP_SELL) == 0 ) { if(Bid<=(low-0.0010)) { 如果(isECN == false) { OrderSend(Symbol(),OP_SELL,lot,Bid, slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit), comment,magic); } 如果(isECN) { ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,0,0,comment,magic)。 OrderSelect(ticket,SELECT_BY_TICKET)。 OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point, takeProfit),0)。 } } } 如果(countOrders(magic,OP_BUY) == 0) { if((Ask-high)>=0.0010) { 如果(isECN==false) { OrderSend(Symbol(),OP_BUY,lot,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit), comment,magic)。 } 如果(isECN) { ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,comment,magic)。 OrderSelect(ticket,SELECT_BY_TICKET)。 OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point, takeProfit),0)。 } } } } //---- return(0); } //+------------------------------------------------------------------+ bool isGoodTime(string Begin, string End) { 如果(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) { 返回(true)。 } return(false); } int countOrders(int oMagic,int oType) { int count=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)) { 如果(OrderMagicNumber()==oMagic) { 如果(OrderSymbol()==Symbol()) { 如果(OrderType()==oType || oType<0){ count++; } } } } } return(count)。 } double sltpValue(double w1, int w2) { 如果(w2 == 0) 返回(0)。 返回(NormalizeDouble(w1, Digits))。 } 编码帮助 How to code? Simple system: Need very Abdalla Doleh 2011.11.19 01:06 #2783 你好,Avasys。 就我所知,该代码没有任何问题,根据您的描述,它完全按照编程的方式进行(当问价高于高价时买入,当买价低于低价时卖出),它基本上是在高价和低价被打破时分别继续买入和卖出。 干杯。 gpociejewski 2011.11.19 16:48 #2784 Avasys: 谢谢你的评论有什么办法可以让代码在一天中只交易一次,并且只在第一次突破时交易。 这段代码的作者是个大忙人,他不可能贡献很多时间。 感谢帮助 [lang=pl]//+------------------------------------------------------------------+ //|简单的EA.mq4 //| Copyright © 2011, luktom.biz |版权所有。 //|www.luktom.biz/en|/| //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, luktom.biz.". #property link "http://www.luktom.biz" extern double stopLoss = 300.0; extern double takeProfit = 500.0; extern string Begin="2:00"; extern string End="10:00"; 外部双倍距离=60。 bool isECN = true; bool cond = false; bool cond2 = false; double low; double high; 外置双数lot = 0.1; int magic = 1232344524285020; int slippage = 1; string comment = ""; int ticket; int short = 0; int long = 0; //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- Print(countOrders(magic,OP_BUY))。 //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { 打印(AccountCurrency())。 //---- 如果(isGoodTime(Begin,End)) { short = 0; long = 0。 if(!cond) { low = Bid; high = Ask; } cond = true; if(Bid < low) low = Bid; 如果(Ask > high) high = Ask; } 如果((high - low)*1000>distance) { cond2 = true; } 如果(!isGoodTime(Begin,End)) { cond = false; } 如果(!isGoodTime(Begin,End) && cond2) { 如果(countOrders(magic,OP_SELL) == 0 ) { 如果(Bid<=(low-0.0005) && short == 0) { short++; 如果(isECN == false) { OrderSend(Symbol(),OP_SELL,lot,Bid, slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit), comment,magic); } 如果(isECN) { ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,0,0,comment,magic)。 OrderSelect(ticket,SELECT_BY_TICKET)。 OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point, takeProfit),0)。 } } } 如果(countOrders(magic,OP_BUY) == 0) { 如果((Ask-high)>=0.005 && long ==0) { long++。 如果(isECN==false) { OrderSend(Symbol(),OP_BUY,lot,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit), comment,magic)。 } 如果(isECN) { ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,comment,magic)。 OrderSelect(ticket,SELECT_BY_TICKET)。 OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point, takeProfit),0)。 } } } } //---- return(0); } //+------------------------------------------------------------------+ bool isGoodTime(string Begin, string End) { 如果(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) { 返回(true)。 } return(false); } int countOrders(int oMagic,int oType) { int count=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)) { 如果(OrderMagicNumber()==oMagic) { 如果(OrderSymbol()==Symbol()) { 如果(OrderType()==oType || oType<0){ count++; } } } } } return(count)。 } double sltpValue(double w1, int w2) { 如果(w2 == 0) 返回(0)。 返回(NormalizeDouble(w1, Digits))。 } 现在EA每天只开一个仓位。关于你的电子邮件问题,在论坛的某个地方有我的帖子:) 如果找到了,请告诉我。 如果找到了,请告诉我,谢谢。 Grzesiek[/lang] How to code? 编码帮助 Simple system: Need very Avasys 2011.11.19 16:54 #2785 Pip: 嗨,Avasys。就我所知,代码没有任何问题,根据你的描述,它所做的正是它编程要做的(当Ask高于high时买入,当bid低于low时卖出),它基本上是在high和low被打破时分别继续买入和卖出。 谢谢。 谢谢你的评论 有没有办法告诉代码在一天中只交易一次,并且只在第一次突破时交易。 这段代码的作者是个大忙人,他不可能贡献很多时间,因为看起来 我注意到的是,尽管代码中标明的时间间隔超过60点,系统仍然执行交易,它只在特定时间(代码中标明,见开始和结束时间)的间隔小于60点时才交易。 希望得到帮助 Avasys 2011.11.19 18:05 #2786 g.pociejewski:[lang=pl]//+------------------------------------------------------------------+//| simple EA.mq4 | | //| Copyright © 2011, luktom.biz |/| 版权所有。 //|www.luktom.biz/en|/| //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, luktom.biz.". #property link "http://www.luktom.biz" extern double stopLoss = 300.0; extern double takeProfit = 500.0; extern string Begin="2:00"; extern string End="10:00"; 外部双倍距离 = 60; bool isECN = true; bool cond = false; bool cond2 = false; double low; double high; 外置双数lot = 0.1; int magic = 1232344524285020; int slippage = 1; string comment = ""; int ticket; int short = 0; int long = 0; //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- Print(countOrders(magic,OP_BUY))。 //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { 打印(AccountCurrency())。 //---- 如果(isGoodTime(Begin,End)) { short = 0; long = 0。 if(!cond) { low = Bid; high = Ask; } cond = true; if(Bid < low) low = Bid; 如果(Ask > high) high = Ask; } 如果((high - low)*1000>distance) { cond2 = true; } 如果(!isGoodTime(Begin,End)) { cond = false; } 如果(!isGoodTime(Begin,End) && cond2) { 如果(countOrders(magic,OP_SELL) == 0 ) { 如果(Bid<=(low-0.0005) && short == 0) { short++; 如果(isECN == false) { OrderSend(Symbol(),OP_SELL,lot,Bid, slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit), comment,magic); } 如果(isECN) { ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,0,0,comment,magic)。 OrderSelect(ticket,SELECT_BY_TICKET)。 OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point, takeProfit),0)。 } } } 如果(countOrders(magic,OP_BUY) == 0) { 如果((Ask-high)>=0.005 && long ==0) { long++。 如果(isECN==false) { OrderSend(Symbol(),OP_BUY,lot,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit), comment,magic)。 } 如果(isECN) { ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,comment,magic)。 OrderSelect(ticket,SELECT_BY_TICKET)。 OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point, takeProfit),0)。 } } } } //---- return(0); } //+------------------------------------------------------------------+ bool isGoodTime(string Begin, string End) { 如果(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) { 返回(true)。 } return(false); } int countOrders(int oMagic,int oType) { int count=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)) { 如果(OrderMagicNumber()==oMagic) { 如果(OrderSymbol()==Symbol()) { 如果(OrderType()==oType || oType<0){ count++; } } } } } return(count)。 } double sltpValue(double w1, int w2) { 如果(w2 == 0) 返回(0)。 返回(NormalizeDouble(w1, Digits))。 } 现在EA每天只开一个仓位。关于你的电子邮件问题,在论坛的某个地方有我的帖子:) 如果找到了,请告诉我。 谢谢。 Grzesiek[/lang] 谢谢你,伙计。 我复制了整个代码并粘贴在mq4文件中,但当我把它复制到专家文件夹时,它没有工作,它没有创建ex4文件,也没有出现在专家顾问手册中。所以请你上传mq4文件,或者代码中有什么问题,因为我试过几次了 TiffanyLopez 2011.11.20 15:32 #2787 检测鼠标点击在图表上的x,y位置 有没有可能在MT4中检测鼠标点击的位置? 我不是在说WindowOnDrop。 如果我知道x,y屏幕坐标,我可以把它转换成相应的价格/时间吗? 谢谢你的帮助。 最好的问候。 蒂芙尼 Avasys 2011.11.21 07:47 #2788 亲爱的朋友 今天周一,代码(在 周四和周五工作的旧代码)完全不工作了。 我手动输入了交易。 Avasys 2011.11.21 19:41 #2789 简单的系统。需要非常少的EA建议 以下是逻辑 当格林尼治标准时间02:00和10:00之间的范围小于60点时进行交易,如果价格突破最低-5点线则开仓卖出,如果价格突破最高+5点线则买入。每天只执行一次交易,不管交易是否被取消在止损点关闭或获利,每天只执行一次订单。 这里是代码,但它不工作,在MT4的EA MANU中,它有不活动的图标,在专家文件夹中没有ex4文件,我不明白是什么问题 外部双倍止损=300.0。 外设 double takeProfit = 500.0; extern string Begin = "2: 00"; extern string End = "10: 00"; 外部的双倍距离 = 60; bool isECN = true; bool cond = false; bool cond2 = false; double low; double high; 外置双数lot = 0.1; int magic = 1232344524285020; int slippage = 1; string comment = ""; int ticket; int short = 0; long int = 0; //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- (0) 返回。 } //+------------------------------------------------------------------+ //|专家去初始化功能| //+------------------------------------------------------------------+ int deinit () { //---- 打印(countOrders(magic,OP_BUY))。 //---- (0)返回。 } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { 打印 (AccountCurrency ())。 //---- 如果(isGoodTime (Begin, End)) { short = 0; long = 0。 if (! cond) { low = Bid; high = Ask; } cond = true; 如果 (Bid < low) low = Bid; 如果(Ask > high) high = Ask; } 如果((高-低)*1000>距离) { cond2 = true; } 如果(! isGoodTime (Begin, End)) { cond = false; } 如果(! isGoodTime (Begin, End) & & cond2) { 如果(countOrders (magic, OP_SELL) == 0) { 如果(竞价≪=(CRL-0.0005)&&短==0)。 { 空头 + +。 如果(isECN == false) { OrderSend (Symbol (), OP_SELL, lots, Bid, slippage, sltpValue (Ask + stopLoss * Point, stopLoss), sltpValue (Ask-takeProfit * Point, takeProfit), comment, magic) 。 } 如果(isECN) { ticket = OrderSend (Symbol (), OP_SELL, lots, Bid, slippage, 0,0, comment, magic); OrderSelect (ticket, SELECT_BY_TICKET); OrderModify (ticket, OrderOpenPrice (), sltpValue (Ask + stopLoss * Point, stopLoss), sltpValue (Bid-takeProfit * Point, takeProfit), 0); } } } 如果(countOrders (magic, OP_BUY) == 0) { 如果((Ask-high) > = 0.005 & & long = = 0) { long + +。 如果(isECN == false) { OrderSend (Symbol (), OP_BUY, lots, Ask, slippage, sltpValue (Ask-stopLoss * Point, stopLoss), sltpValue (Bid + takeProfit * Point, takeProfit), comment, magic) 。 } 如果(isECN) { ticket = OrderSend (Symbol (), OP_BUY, lots, Ask, slippage, 0,0, comment, magic); OrderSelect (ticket, SELECT_BY_TICKET); OrderModify (ticket, OrderOpenPrice (), sltpValue (Bid-stopLoss * Point, stopLoss), sltpValue (Ask + takeProfit * Point, takeProfit), 0) 。 } } } } //---- (0) 返回。 } //+------------------------------------------------------------------+ bool isGoodTime (string, string, Begin, End) { 如果(TimeCurrent () > Localtime (Begin) & & TimeCurrent < Localtime () (End)){ 返回(true)。 } 返回(false)。 } int countOrders (int, int oMagic oType) { int count = 0; for (int i = 0; i < OrdersTotal (); i ++) { 如果(OrderSelect(i,SELECT_BY_POS)) { 如果(OrderMagicNumber () == oMagic) { 如果(OrderSymbol () = the = Symbol () ) { 如果(OrderType () == oType || oType < 0) { count ++; } } } } } 返回(计数)。 } double sltpValue (double, int w1 w2) { 如果(w2 = = 0) 返回(0)。 返回(NormalizeDouble (w1, Digits))。 } 编码帮助 How to code? Simple system: Need very [删除] 2011.11.21 22:53 #2790 Forex.com EAs 我是个白痴。 我把这篇文章发错了论坛......而且我不知道如何把它移到编程论坛。 我对造成的不便表示歉意;这个错误是无意的。 我已经做了3年的现货外汇交易,开发了2个EA。 这些EA在Glocap、FXCM和Alpari上运行良好(我是美国居民,所以我选择的经纪商有些限制)。 此外,我想要一个佣金内置于点差的MT4账户(个人偏好)。 我最近在Forex.com(Gain Capital)的模拟账户上测试了这些EA。 两个EA都运行良好,并按照编程的规则进行交易。 然而,当我在Forex.com开设真实账户时,EA #1不再正常工作,但EA #2工作正常。 EA #1在Forex.com的策略测试器中工作正常,但我知道这并不重要。 这整件事对我来说非常奇怪,因为两个EA都使用相同的代码来打开交易(EA #1的错误是在试图打开交易时出现的),设置手数大小,监控交易和关闭交易。下面是关于两个EA的一些信息。 EA #1 EUR/JPY 使用一目均衡指标 EA #2 欧元/美元 使用3条移动平均线和MACD 正如我之前所说,EA #2的交易很好;按照编程的规则工作。 当EA #1试图打开一些交易时,我收到以下错误信息。2011.11.21 17:00:02 Ichimoku_1700Eastern EURJPYpro,H1: Ichimoku_Open EA for EURJPYpro:开启买入订单错误。(133)交易被禁用///为103.7210 此外,当EA #2试图进行交易时,专家日志总是显示std.lib在抛出错误的交易之前立即加载(这在EA #1上没有发生):2011.11.21 17:00:02 stdlib EURJPYpro,H1:加载成功 这里是这个谜题的最后一块:EA #2将打开交易,但不是在东部时间17点。 所有的错误都发生在试图在东部时间17点开启的交易上(这可能是一个巧合)。 我已经把EA拆开了;从头开始重新输入代码;把EA #1的代码复制到EA #2中,但似乎都没有解决这个问题。 Forex.com不想帮忙,因为他们认为这是 "EA支持",而他们并不提供。 在互联网上我能找到的关于这个错误的信息中,它意味着要么a)经纪商不允许EA交易(我知道这不是真的),要么b)交易正在发送止损和/或限制,这在即时执行经纪商中是不可行的(交易没有发送止损或限制)。 Forex.com已经说过,他们不会在交易日的任何时候暂停交易。 我对这个小组的问题如下。 1. 有人遇到过这个问题吗? 2. 如果有,你是怎么解决的? 3. 如果你从未见过这个问题,你认为是什么原因造成的? 我相信这是很简单的事情,只是我没有看到。 如果您有任何意见、经验和想法,我们将不胜感激。 1...272273274275276277278279280281282283284285286...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
[lang=pl]还有一个问题,你的时间是GMT还是非GMT?如果不是格林尼治标准时间,我将对这个EA做一点改变。
我刚刚做完,请检查一下,如果一切正常,请给我发邮件。
距离网的低点和高点止损和TP是我作为外部变量制作的。
谢谢 Grzesiek. [/lang]亲爱的Grzesiek
我把这个指标粘贴在专家文件夹里,今天我监测了一下,想了解它的工作原理。它的问题是,一旦它做了第一笔交易,并且在止损或T/P上关闭了订单,然后EA立即在它关闭最近订单的价格上再次开始交易。我怎样才能在代码中阻止它呢?
有谁能帮我解决这个问题?
你好,论坛
这个代码有一个问题,当它执行交易 时,它是正常的,但当它再次关闭订单时,EA在前一个订单关闭的价格和时间上打开新的交易。我在代码中没有看到任何错误。写这篇文章的人非常忙,不在线。谁能建议一下问题出在哪里?
extern double stopLoss = 35.0;
extern double takeProfit = 50.0;
extern string Begin="00:00";
extern string End="08:00";
External double distance = 5;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
double high;
外置双数lot = 1;
int magic = 123;
int slippage = 1;
string comment = "test";
int ticket;
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//----
如果(isGoodTime(Begin,End))
{
if(!cond)
{
low = Bid;
high = Ask;
}
cond = true;
if(Bid < low) low = Bid;
如果(Ask > high) high = Ask;
}
如果((high - low)*1000>distance)
{
cond2 = true;
}
如果(!isGoodTime(Begin,End))
{
cond = false;
}
如果(!isGoodTime(Begin,End) && cond2)
{
如果(countOrders(magic,OP_SELL) == 0 )
{
if(Bid<=(low-0.0010))
{
如果(isECN == false)
{
OrderSend(Symbol(),OP_SELL,lot,Bid, slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit), comment,magic);
}
如果(isECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,0,0,comment,magic)。
OrderSelect(ticket,SELECT_BY_TICKET)。
OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point, takeProfit),0)。
}
}
}
如果(countOrders(magic,OP_BUY) == 0)
{
if((Ask-high)>=0.0010)
{
如果(isECN==false)
{
OrderSend(Symbol(),OP_BUY,lot,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit), comment,magic)。
}
如果(isECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,comment,magic)。
OrderSelect(ticket,SELECT_BY_TICKET)。
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point, takeProfit),0)。
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool isGoodTime(string Begin, string End) {
如果(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) {
返回(true)。
}
return(false);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
如果(OrderMagicNumber()==oMagic) {
如果(OrderSymbol()==Symbol()) {
如果(OrderType()==oType || oType<0){
count++;
}
}
}
}
}
return(count)。
}
double sltpValue(double w1, int w2)
{
如果(w2 == 0)
返回(0)。
返回(NormalizeDouble(w1, Digits))。
}
你好,Avasys。
就我所知,该代码没有任何问题,根据您的描述,它完全按照编程的方式进行(当问价高于高价时买入,当买价低于低价时卖出),它基本上是在高价和低价被打破时分别继续买入和卖出。
干杯。
谢谢你的评论
有什么办法可以让代码在一天中只交易一次,并且只在第一次突破时交易。
这段代码的作者是个大忙人,他不可能贡献很多时间。![](https://c.mql5.com/forextsd/smiles/smile.png)
感谢帮助[lang=pl]//+------------------------------------------------------------------+
//|简单的EA.mq4
//| Copyright © 2011, luktom.biz |版权所有。
//|www.luktom.biz/en|/|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, luktom.biz.".
#property link "http://www.luktom.biz"
extern double stopLoss = 300.0;
extern double takeProfit = 500.0;
extern string Begin="2:00";
extern string End="10:00";
外部双倍距离=60。
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
double high;
外置双数lot = 0.1;
int magic = 1232344524285020;
int slippage = 1;
string comment = "";
int ticket;
int short = 0;
int long = 0;
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
Print(countOrders(magic,OP_BUY))。
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
打印(AccountCurrency())。
//----
如果(isGoodTime(Begin,End))
{
short = 0;
long = 0。
if(!cond)
{
low = Bid;
high = Ask;
}
cond = true;
if(Bid < low) low = Bid;
如果(Ask > high) high = Ask;
}
如果((high - low)*1000>distance)
{
cond2 = true;
}
如果(!isGoodTime(Begin,End))
{
cond = false;
}
如果(!isGoodTime(Begin,End) && cond2)
{
如果(countOrders(magic,OP_SELL) == 0 )
{
如果(Bid<=(low-0.0005) && short == 0)
{
short++;
如果(isECN == false)
{
OrderSend(Symbol(),OP_SELL,lot,Bid, slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit), comment,magic);
}
如果(isECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,0,0,comment,magic)。
OrderSelect(ticket,SELECT_BY_TICKET)。
OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point, takeProfit),0)。
}
}
}
如果(countOrders(magic,OP_BUY) == 0)
{
如果((Ask-high)>=0.005 && long ==0)
{
long++。
如果(isECN==false)
{
OrderSend(Symbol(),OP_BUY,lot,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit), comment,magic)。
}
如果(isECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,comment,magic)。
OrderSelect(ticket,SELECT_BY_TICKET)。
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point, takeProfit),0)。
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool isGoodTime(string Begin, string End) {
如果(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) {
返回(true)。
}
return(false);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
如果(OrderMagicNumber()==oMagic) {
如果(OrderSymbol()==Symbol()) {
如果(OrderType()==oType || oType<0){
count++;
}
}
}
}
}
return(count)。
}
double sltpValue(double w1, int w2)
{
如果(w2 == 0)
返回(0)。
返回(NormalizeDouble(w1, Digits))。
}
现在EA每天只开一个仓位。关于你的电子邮件问题,在论坛的某个地方有我的帖子:)
如果找到了,请告诉我。![](https://c.mql5.com/forextsd/smiles/smile.png)
如果找到了,请告诉我,谢谢。
Grzesiek[/lang]
嗨,Avasys。
就我所知,代码没有任何问题,根据你的描述,它所做的正是它编程要做的(当Ask高于high时买入,当bid低于low时卖出),它基本上是在high和low被打破时分别继续买入和卖出。
谢谢。谢谢你的评论
有没有办法告诉代码在一天中只交易一次,并且只在第一次突破时交易。
这段代码的作者是个大忙人,他不可能贡献很多时间,因为看起来![](https://c.mql5.com/forextsd/smiles/smile.png)
我注意到的是,尽管代码中标明的时间间隔超过60点,系统仍然执行交易,它只在特定时间(代码中标明,见开始和结束时间)的间隔小于60点时才交易。
希望得到帮助
[lang=pl]//+------------------------------------------------------------------+
//| simple EA.mq4 | |
//| Copyright © 2011, luktom.biz |/| 版权所有。
//|www.luktom.biz/en|/|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, luktom.biz.".
#property link "http://www.luktom.biz"
extern double stopLoss = 300.0;
extern double takeProfit = 500.0;
extern string Begin="2:00";
extern string End="10:00";
外部双倍距离 = 60;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
double high;
外置双数lot = 0.1;
int magic = 1232344524285020;
int slippage = 1;
string comment = "";
int ticket;
int short = 0;
int long = 0;
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
Print(countOrders(magic,OP_BUY))。
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
打印(AccountCurrency())。
//----
如果(isGoodTime(Begin,End))
{
short = 0;
long = 0。
if(!cond)
{
low = Bid;
high = Ask;
}
cond = true;
if(Bid < low) low = Bid;
如果(Ask > high) high = Ask;
}
如果((high - low)*1000>distance)
{
cond2 = true;
}
如果(!isGoodTime(Begin,End))
{
cond = false;
}
如果(!isGoodTime(Begin,End) && cond2)
{
如果(countOrders(magic,OP_SELL) == 0 )
{
如果(Bid<=(low-0.0005) && short == 0)
{
short++;
如果(isECN == false)
{
OrderSend(Symbol(),OP_SELL,lot,Bid, slippage,sltpValue(Ask+ stopLoss*Point,stopLoss) ,sltpValue(Ask- takeProfit*Point,takeProfit), comment,magic);
}
如果(isECN)
{
ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,slippage,0,0,comment,magic)。
OrderSelect(ticket,SELECT_BY_TICKET)。
OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +stopLoss*Point, stopLoss),sltpValue(Bid- takeProfit*Point, takeProfit),0)。
}
}
}
如果(countOrders(magic,OP_BUY) == 0)
{
如果((Ask-high)>=0.005 && long ==0)
{
long++。
如果(isECN==false)
{
OrderSend(Symbol(),OP_BUY,lot,Ask, slippage,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit), comment,magic)。
}
如果(isECN)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,comment,magic)。
OrderSelect(ticket,SELECT_BY_TICKET)。
OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - stopLoss*Point, stopLoss),sltpValue(Ask+ takeProfit*Point, takeProfit),0)。
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool isGoodTime(string Begin, string End) {
如果(TimeCurrent()>StrToTime(Begin) && TimeCurrent()<StrToTime(End)) {
返回(true)。
}
return(false);
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
如果(OrderMagicNumber()==oMagic) {
如果(OrderSymbol()==Symbol()) {
如果(OrderType()==oType || oType<0){
count++;
}
}
}
}
}
return(count)。
}
double sltpValue(double w1, int w2)
{
如果(w2 == 0)
返回(0)。
返回(NormalizeDouble(w1, Digits))。
}
现在EA每天只开一个仓位。关于你的电子邮件问题,在论坛的某个地方有我的帖子:)
如果找到了,请告诉我。![](https://c.mql5.com/forextsd/smiles/smile.png)
谢谢。
Grzesiek[/lang]谢谢你,伙计。
我复制了整个代码并粘贴在mq4文件中,但当我把它复制到专家文件夹时,它没有工作,它没有创建ex4文件,也没有出现在专家顾问手册中。所以请你上传mq4文件,或者代码中有什么问题,因为我试过几次了
检测鼠标点击在图表上的x,y位置
有没有可能在MT4中检测鼠标点击的位置? 我不是在说WindowOnDrop。 如果我知道x,y屏幕坐标,我可以把它转换成相应的价格/时间吗?
谢谢你的帮助。
最好的问候。
蒂芙尼
亲爱的朋友
今天周一,代码(在 周四和周五工作的旧代码)完全不工作了。
我手动输入了交易。
简单的系统。需要非常少的EA建议
以下是逻辑
当格林尼治标准时间02:00和10:00之间的范围小于60点时进行交易,如果价格突破最低-5点线则开仓卖出,如果价格突破最高+5点线则买入。每天只执行一次交易,不管交易是否被取消在止损点关闭或获利,每天只执行一次订单。
这里是代码,但它不工作,在MT4的EA MANU中,它有不活动的图标,在专家文件夹中没有ex4文件,我不明白是什么问题
外部双倍止损=300.0。
外设 double takeProfit = 500.0;
extern string Begin = "2: 00";
extern string End = "10: 00";
外部的双倍距离 = 60;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
double high;
外置双数lot = 0.1;
int magic = 1232344524285020;
int slippage = 1;
string comment = "";
int ticket;
int short = 0;
long int = 0;
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
(0) 返回。
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit ()
{
//----
打印(countOrders(magic,OP_BUY))。
//----
(0)返回。
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
打印 (AccountCurrency ())。
//----
如果(isGoodTime (Begin, End))
{
short = 0;
long = 0。
if (! cond)
{
low = Bid;
high = Ask;
}
cond = true;
如果 (Bid < low) low = Bid;
如果(Ask > high) high = Ask;
}
如果((高-低)*1000>距离)
{
cond2 = true;
}
如果(! isGoodTime (Begin, End))
{
cond = false;
}
如果(! isGoodTime (Begin, End) & & cond2)
{
如果(countOrders (magic, OP_SELL) == 0)
{
如果(竞价≪=(CRL-0.0005)&&短==0)。
{
空头 + +。
如果(isECN == false)
{
OrderSend (Symbol (), OP_SELL, lots, Bid, slippage, sltpValue (Ask + stopLoss * Point, stopLoss), sltpValue (Ask-takeProfit * Point, takeProfit), comment, magic) 。
}
如果(isECN)
{
ticket = OrderSend (Symbol (), OP_SELL, lots, Bid, slippage, 0,0, comment, magic);
OrderSelect (ticket, SELECT_BY_TICKET);
OrderModify (ticket, OrderOpenPrice (), sltpValue (Ask + stopLoss * Point, stopLoss), sltpValue (Bid-takeProfit * Point, takeProfit), 0);
}
}
}
如果(countOrders (magic, OP_BUY) == 0)
{
如果((Ask-high) > = 0.005 & & long = = 0)
{
long + +。
如果(isECN == false)
{
OrderSend (Symbol (), OP_BUY, lots, Ask, slippage, sltpValue (Ask-stopLoss * Point, stopLoss), sltpValue (Bid + takeProfit * Point, takeProfit), comment, magic) 。
}
如果(isECN)
{
ticket = OrderSend (Symbol (), OP_BUY, lots, Ask, slippage, 0,0, comment, magic);
OrderSelect (ticket, SELECT_BY_TICKET);
OrderModify (ticket, OrderOpenPrice (), sltpValue (Bid-stopLoss * Point, stopLoss), sltpValue (Ask + takeProfit * Point, takeProfit), 0) 。
}
}
}
}
//----
(0) 返回。
}
//+------------------------------------------------------------------+
bool isGoodTime (string, string, Begin, End) {
如果(TimeCurrent () > Localtime (Begin) & & TimeCurrent < Localtime () (End)){
返回(true)。
}
返回(false)。
}
int countOrders (int, int oMagic oType) {
int count = 0;
for (int i = 0; i < OrdersTotal (); i ++) {
如果(OrderSelect(i,SELECT_BY_POS)) {
如果(OrderMagicNumber () == oMagic) {
如果(OrderSymbol () = the = Symbol () ) {
如果(OrderType () == oType || oType < 0) {
count ++;
}
}
}
}
}
返回(计数)。
}
double sltpValue (double, int w1 w2)
{
如果(w2 = = 0)
返回(0)。
返回(NormalizeDouble (w1, Digits))。
}
Forex.com EAs
我是个白痴。 我把这篇文章发错了论坛......而且我不知道如何把它移到编程论坛。 我对造成的不便表示歉意;这个错误是无意的。
我已经做了3年的现货外汇交易,开发了2个EA。 这些EA在Glocap、FXCM和Alpari上运行良好(我是美国居民,所以我选择的经纪商有些限制)。 此外,我想要一个佣金内置于点差的MT4账户(个人偏好)。
我最近在Forex.com(Gain Capital)的模拟账户上测试了这些EA。 两个EA都运行良好,并按照编程的规则进行交易。 然而,当我在Forex.com开设真实账户时,EA #1不再正常工作,但EA #2工作正常。 EA #1在Forex.com的策略测试器中工作正常,但我知道这并不重要。 这整件事对我来说非常奇怪,因为两个EA都使用相同的代码来打开交易(EA #1的错误是在试图打开交易时出现的),设置手数大小,监控交易和关闭交易。下面是关于两个EA的一些信息。
EA #1 EUR/JPY 使用一目均衡指标
EA #2 欧元/美元 使用3条移动平均线和MACD
正如我之前所说,EA #2的交易很好;按照编程的规则工作。 当EA #1试图打开一些交易时,我收到以下错误信息。2011.11.21 17:00:02 Ichimoku_1700Eastern EURJPYpro,H1: Ichimoku_Open EA for EURJPYpro:开启买入订单错误。(133)交易被禁用///为103.7210
此外,当EA #2试图进行交易时,专家日志总是显示std.lib在抛出错误的交易之前立即加载(这在EA #1上没有发生):2011.11.21 17:00:02 stdlib EURJPYpro,H1:加载成功
这里是这个谜题的最后一块:EA #2将打开交易,但不是在东部时间17点。 所有的错误都发生在试图在东部时间17点开启的交易上(这可能是一个巧合)。
我已经把EA拆开了;从头开始重新输入代码;把EA #1的代码复制到EA #2中,但似乎都没有解决这个问题。 Forex.com不想帮忙,因为他们认为这是 "EA支持",而他们并不提供。 在互联网上我能找到的关于这个错误的信息中,它意味着要么a)经纪商不允许EA交易(我知道这不是真的),要么b)交易正在发送止损和/或限制,这在即时执行经纪商中是不可行的(交易没有发送止损或限制)。 Forex.com已经说过,他们不会在交易日的任何时候暂停交易。
我对这个小组的问题如下。
1. 有人遇到过这个问题吗?
2. 如果有,你是怎么解决的?
3. 如果你从未见过这个问题,你认为是什么原因造成的?
我相信这是很简单的事情,只是我没有看到。 如果您有任何意见、经验和想法,我们将不胜感激。