编码帮助 - 页 16 1...91011121314151617181920212223...786 新评论 gpociejewski 2012.01.08 13:28 #151 nontan:嗨,天才的程序员和善良的人们:D现在我正在开发一个简单的EA,但是不能理解下面的条件。如果前一个头寸被止盈平仓,那么在下一个开盘价上按s/l和t/p设置20个点的新进场。如果(OrderSelect(1,SELECT_BY_POS, MODE_HISTORY) //最后一个仓位是即时订单 OP_BUY 或 OP_SELL{if(OrderClosePrice() == OrderTakeProfit() ) //如果收盘价与止盈价相同{if(OrderType() == OP_BUY)//该订单的类型是买入{OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,",MAGIC);//Lots和其他变量由我自己定义}else if(OrderType() == OP_SELL){OrderSend(OP_SELL,Lots,Bid,Slipips,Bid-20*Point,",MAGIC);}}我尝试用策略测试仪多次运行,但不能如我所愿。 有人能帮助我解决这个问题 吗? 请注意。 [lang=pl]你好。 你能附上整个EA的代码吗? 谢谢。 Grzesiek[/lang] Mladen Rakic 2012.01.09 11:37 #152 ... 试着用这个进行比较 if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits)) 也许这有帮助 nontan:嗨,天才程序员和好心人:D现在我正在开发一个简单的EA,但是不能理解下面的条件。如果上一个头寸被止盈平仓,那么就在下一个开盘价上设置20点的新进场(在5M图表上),我试着写了一个。if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY) //最后一个仓位是即时订单 OP_BUY 或 OP_SELL{if(OrderClosePrice() == OrderTakeProfit() ) //如果收盘价与止盈价相同{if(OrderType() == OP_BUY)//该订单的类型是买入{OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,",MAGIC);//Lots和其他变量由我自己定义}else if(OrderType() == OP_SELL){OrderSend(OP_SELL,Lots,Bid,Slipips,Bid-20*Point,",MAGIC);}}我尝试用策略测试仪多次运行,但不能如我所愿。 有人能帮助我解决这个问题 吗? 请注意。 nontan 2012.01.09 13:35 #153 谢谢你们。 我试图插入NormarizeDouble,但没有成功。 你能教我为什么不工作吗? --------------------------------------------------- #include #define MAGIC 20120101 #define COMMENT "Riding9" 外置双数 Lots = 0.1; extern int Slippage = 3; extern int SLpips = 20; extern int TPpips = 50; extern int StartTime = 1; extern int FinishTime = 23; Extern int MAPeriod = 48; int EntrySignal(int magic) { double pos = MyCurrentOrders(MY_OPENPOS, magic); double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1); int ret = 0; if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9) ) ret = 1; else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9) ) ret = 1; if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1; // else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9) ) ret = -1; return(ret)。 } bool MyOrderSendSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic) { int mult=1; if(Digits == 3 || Digits == 5) mult=10; slippage *= mult; 如果(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1; double sl=0, tp=0; 如果(slpips > 0) sl = price-slpips*Point*mult; 如果(tppips > 0) tp = price+tppips*Point*mult; 返回(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic))。 } int start() { if(Hour() >= StartTime && Hour() < FinishTime) { int sig_entry = EntrySignal(MAGIC)。 如果(sig_entry > 0) { MyOrderClose(Slippage, MAGIC)。 MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC); } 如果(sig_entry < 0) { MyOrderClose(Slippage, MAGIC); MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips,TPpips, COMMENT, MAGIC)。 } 如果(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) { 如果(NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits) ) { 如果(OrderType() == OP_BUY) { OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,",MAGIC)。 } 否则如果(OrderType() == OP_SELL) { OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC) 。 } } } return(0); } return(0); } ------------------------------------------------------ 如果你发现,请教我的错误。 请注意。 Coding help 错误、漏洞、问题 如何编码? Mladen Rakic 2012.01.09 13:47 #154 ...nontan, 这一行 if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)) [/PHP] 不选择最后一个已关闭的订单,而是选择已关闭订单队列中的第一个(初始余额后)订单。因此,它总是检查 一个固定的订单,而不是检查什么是最后的订单,然后适应它。如果你想测试最后一个关闭的订单(关闭订单队列中的最后一个,但要注意metatrader[人不保证它是最后一个,当按关闭日期时间排序时),你应该使用这种形式的检查[PHP]如果(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) nontan 2012.01.10 21:37 #155 谢谢你,mladen 我还没有使用OrderHistoryTotal函数,它是一个适合这个代码的函数。 最后,我修改后得到了一个理想的代码,结果是EA在得到TakeProfit后进行了新的进入。 谢谢您的帮助和支持。 johnray 2012.01.17 16:26 #156 我需要你的帮助 编码大师 你好,我需要有人帮助我编写我的策略。 gpociejewski 2012.01.17 16:58 #157 johnray: 你好,我需要有人帮助我编写我的策略。 [lang=pl]请给我一个细节 谢谢[/lang] johnray 2012.01.17 17:22 #158 我给你发了一封邮件 g.pociejewski:[lang=pl]请给我一个细节 干杯[/lang] 谢谢主人,我给你发了个邮件,有点复杂。 elbee1 2012.01.17 18:47 #159 自动刷新的代码 我正在使用一个需要不断刷新的指标。我使用的是15分钟的图表,所以它不需要每一次 刷新,尽管如果没有很大的电力消耗,这也是很好的。它至少应该有一个关于每次刷新的时间间隔的选项。现在,我通过使用下拉 "图表 "标签并选择 "刷新",每隔一分钟左右手动刷新一次。 是否有代码或方法可以自动刷新indi和/或图表,可以通过indi中的附加代码或EA中的代码? 谢谢,el bee cloki 2012.01.22 15:35 #160 [langtitle=fr]Wilder的原始指标抛物线SAR[/langtitle] 。 [lang=fr]你好!我正在寻找Wilder的原始抛物线指标quiproquo。我已经为PRT平台编写了这个指标的代码,但我不知道MT4的编码。 如果有人有MT4编码的知识,我可以通过私信 给他代码,以适应MT4的编码。 谢谢[/lang] 1...91011121314151617181920212223...786 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
嗨,天才的程序员和善良的人们:D
现在我正在开发一个简单的EA,但是不能理解下面的条件。
如果前一个头寸被止盈平仓,那么在下一个开盘价上按s/l和t/p设置20个点的新进场
。
如果(OrderSelect(1,SELECT_BY_POS, MODE_HISTORY)
//最后一个仓位是即时订单 OP_BUY 或 OP_SELL
{
if(OrderClosePrice() == OrderTakeProfit() )
//如果收盘价与止盈价相同
{
if(OrderType() == OP_BUY)//该订单的类型是买入
{
OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,",MAGIC);//Lots和其他变量由我自己定义
}
else if(OrderType() == OP_SELL)
{
OrderSend(OP_SELL,Lots,Bid,Slipips,Bid-20*Point,",MAGIC);
}
}
我尝试用策略测试仪多次运行,但不能如我所愿。
有人能帮助我解决这个问题
吗? 请注意。[lang=pl]你好。
你能附上整个EA的代码吗?
谢谢。
Grzesiek[/lang]
...
试着用这个进行比较
也许这有帮助
嗨,天才程序员和好心人:D
现在我正在开发一个简单的EA,但是不能理解下面的条件。
如果上一个头寸被止盈平仓,那么就在下一个开盘价上设置20点的新进场(在5M图表上)
,我试着写了一个。
if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY)
//最后一个仓位是即时订单 OP_BUY 或 OP_SELL
{
if(OrderClosePrice() == OrderTakeProfit() )
//如果收盘价与止盈价相同
{
if(OrderType() == OP_BUY)//该订单的类型是买入
{
OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,",MAGIC);//Lots和其他变量由我自己定义
}
else if(OrderType() == OP_SELL)
{
OrderSend(OP_SELL,Lots,Bid,Slipips,Bid-20*Point,",MAGIC);
}
}
我尝试用策略测试仪多次运行,但不能如我所愿。
有人能帮助我解决这个问题
吗? 请注意。谢谢你们。
我试图插入NormarizeDouble,但没有成功。
你能教我为什么不工作吗?
---------------------------------------------------
#include
#define MAGIC 20120101
#define COMMENT "Riding9"
外置双数 Lots = 0.1;
extern int Slippage = 3;
extern int SLpips = 20;
extern int TPpips = 50;
extern int StartTime = 1;
extern int FinishTime = 23;
Extern int MAPeriod = 48;
int EntrySignal(int magic)
{
double pos = MyCurrentOrders(MY_OPENPOS, magic);
double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
int ret = 0;
if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9) ) ret = 1;
else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9) ) ret = 1;
if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1; //
else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9) ) ret = -1;
return(ret)。
}
bool MyOrderSendSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic)
{
int mult=1;
if(Digits == 3 || Digits == 5) mult=10;
slippage *= mult;
如果(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1;
double sl=0, tp=0;
如果(slpips > 0) sl = price-slpips*Point*mult;
如果(tppips > 0) tp = price+tppips*Point*mult;
返回(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic))。
}
int start()
{
if(Hour() >= StartTime && Hour() < FinishTime)
{
int sig_entry = EntrySignal(MAGIC)。
如果(sig_entry > 0)
{
MyOrderClose(Slippage, MAGIC)。
MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC);
}
如果(sig_entry < 0)
{
MyOrderClose(Slippage, MAGIC);
MyOrderSendSL(OP_SELL, Lots, Bid, Slippage, SLpips,TPpips, COMMENT, MAGIC)。
}
如果(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
{
如果(NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits) )
{
如果(OrderType() == OP_BUY)
{
OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,",MAGIC)。
}
否则如果(OrderType() == OP_SELL)
{
OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC) 。
}
}
}
return(0);
}
return(0);
}
------------------------------------------------------
如果你发现,请教我的错误。
请注意。
...
nontan,
这一行 不选择最后一个已关闭的订单,而是选择已关闭订单队列中的第一个(初始余额后)订单。因此,它总是检查 一个固定的订单,而不是检查什么是最后的订单,然后适应它。如果你想测试最后一个关闭的订单(关闭订单队列中的最后一个,但要注意metatrader[人不保证它是最后一个,当按关闭日期时间排序时),你应该使用这种形式的检查谢谢你,mladen
我还没有使用OrderHistoryTotal函数,它是一个适合这个代码的函数。
最后,我修改后得到了一个理想的代码,结果是EA在得到TakeProfit后进行了新的进入。
谢谢您的帮助和支持。
我需要你的帮助 编码大师
你好,我需要有人帮助我编写我的策略。
你好,我需要有人帮助我编写我的策略。
[lang=pl]请给我一个细节
谢谢[/lang]
我给你发了一封邮件
[lang=pl]请给我一个细节
谢谢主人,我给你发了个邮件,有点复杂。
自动刷新的代码
我正在使用一个需要不断刷新的指标。我使用的是15分钟的图表,所以它不需要每一次 刷新,尽管如果没有很大的电力消耗,这也是很好的。它至少应该有一个关于每次刷新的时间间隔的选项。现在,我通过使用下拉 "图表 "标签并选择 "刷新",每隔一分钟左右手动刷新一次。
是否有代码或方法可以自动刷新indi和/或图表,可以通过indi中的附加代码或EA中的代码?
谢谢,el bee
[langtitle=fr]Wilder的原始指标抛物线SAR[/langtitle] 。
[lang=fr]我正在寻找Wilder的原始抛物线指标quiproquo。我已经为PRT平台编写了这个指标的代码,但我不知道MT4的编码。
如果有人有MT4编码的知识,我可以通过私信 给他代码,以适应MT4的编码。
谢谢