编码帮助 - 页 16

 
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]

 

...

试着用这个进行比较

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);

}

}

我尝试用策略测试仪多次运行,但不能如我所愿。

有人能帮助我解决这个问题

吗? 请注意。
 

谢谢你们。

我试图插入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,

这一行
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

[/PHP]

不选择最后一个已关闭的订单,而是选择已关闭订单队列中的第一个(初始余额后)订单。因此,它总是检查 一个固定的订单,而不是检查什么是最后的订单,然后适应它。如果你想测试最后一个关闭的订单(关闭订单队列中的最后一个,但要注意metatrader[人不保证它是最后一个,当按关闭日期时间排序时),你应该使用这种形式的检查
[PHP]如果(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY)
 

谢谢你,mladen

我还没有使用OrderHistoryTotal函数,它是一个适合这个代码的函数。

最后,我修改后得到了一个理想的代码,结果是EA在得到TakeProfit后进行了新的进入。

谢谢您的帮助和支持。

 

我需要你的帮助 编码大师

你好,我需要有人帮助我编写我的策略。

 
johnray:
你好,我需要有人帮助我编写我的策略。

[lang=pl]请给我一个细节

谢谢[/lang]

 

我给你发了一封邮件

g.pociejewski:
[lang=pl]请给我一个细节 干杯[/lang]

谢谢主人,我给你发了个邮件,有点复杂。

 

自动刷新的代码

我正在使用一个需要不断刷新的指标。我使用的是15分钟的图表,所以它不需要每一次 刷新,尽管如果没有很大的电力消耗,这也是很好的。它至少应该有一个关于每次刷新的时间间隔的选项。现在,我通过使用下拉 "图表 "标签并选择 "刷新",每隔一分钟左右手动刷新一次。

是否有代码或方法可以自动刷新indi和/或图表,可以通过indi中的附加代码或EA中的代码?

谢谢,el bee

 

[langtitle=fr]Wilder的原始指标抛物线SAR[/langtitle] 。

[lang=fr]
你好!

我正在寻找Wilder的原始抛物线指标quiproquo。我已经为PRT平台编写了这个指标的代码,但我不知道MT4的编码。

如果有人有MT4编码的知识,我可以通过私信 给他代码,以适应MT4的编码。

谢谢
[/lang]
原因: