如何编码? - 页 84 1...777879808182838485868788899091...347 新评论 BigBe 2008.04.19 17:16 #831 在100点上买入和卖出 Zamanib。 我理解你写的内容,但我不明白你是如何盈利收盘的。 在我看来,这像是一个对冲型EA。 forex-tsd里有几个这样的EA。 而且你不必采用马丁格尔法。 大的是 ralphronnquist 2008.04.19 23:16 #832 european: 有谁能分享一下如何以获利值关闭订单的想法/代码。由于某些原因,OrderSend()函数中的 "TakeProfit "在MT4的空头/卖出订单中并不总是有效,尽管它在多头/买入订单中运行良好。 我写了一些代码,将订单的TakeProfit值与当前价格进行比较,但它并没有正确工作。 有什么想法吗? 欧元 多头以 "买入 "价格平仓,而空头则以 "卖出 "价格平仓。 zamanib 2008.04.20 04:45 #833 Big Be: Zamanib,我理解你所写的,但我不明白你是如何盈利收盘的。 在我看来,这像是一个对冲型的EA。 在forex-tsd有几个这样的例子。 而且你不需要使用马丁格尔法。 大贝 我看到市场在一波一波地上升和下降,有些星期你会有两个周期的上升/下降,当它的趋势时,我有一个不同的策略。 请给我指点一下对冲交易的方法。我看到很多,但不是我想要的。 european 2008.04.20 23:46 #834 代码或平台问题? ralph.ronnquist: 多头以 "买入 "价关闭,而空头以 "卖出 "价关闭。 谢谢你的回答。 由于某些原因,我的代码无法工作。 如果(OrderSelect(orderNo, SELECT_BY_TICKET)==true) { 如果(OrderType() == OP_BUY && Close[0] >= OrderTakeProfit() CloseOrder(orderNo)。 如果(OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); } 如果能得到建议,我将不胜感激。 欧元 ralphronnquist 2008.04.21 00:38 #835 european: 谢谢你的回答。由于某些原因,我的代码无法工作。 if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) { if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(orderNo); if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); } [/PHP] I would be grateful for advice. euro 对;"Close[0]"是 "买入 "价格,这不是一个OP_SELL的平仓价格。OP_SELL是针对 "卖出 "价格关闭的,这个价格比 "买入 "价格高出几个点(也就是点差)。 当你的EA运行时,"买入 "价格也可作为变量 "Bid","卖出 "价格作为变量 "Ask"。因此,代码片段最好是这样的。 [PHP]如果(OrderSelect(orderNo, SELECT_BY_TICKET)==true){ 如果(OrderType() == OP_BUY && Bid >= OrderTakeProfit() CloseOrder(orderNo)。 如果(OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); } leialex 2008.04.21 06:54 #836 请用代码帮助,谢谢... 你好。 我是写EA的新手,我正在尝试下面的方法,但得到一个错误 "Invalid ticket for OrderModify function",谁能看一下并提供帮助? 衷心感谢。 void ModifyHedgeSL(int SL) { if (SL<1) return; bool bres; double sl,openadj; if (lastopenbuy==1 && lastopensell==0) {openadj=Ask-Bid;} else {openadj=0;} for (int i = 0; i < OrdersTotal(); i++) { OrderSelect (i, SELECT_BY_POS,MODE_TRADES); 如果 ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_BUY ) { sl = GetLastLongOpenPrice()-openadj-SL*Point; bres = OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, White)。 如果(bres)Print("修改对冲BUY完成")。 if (!bres) Print("Error Modifying Hedge BUY order :",ErrorDescription(GetLastError())。 } 如果( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_SELL ) { sl = GetLastShortOpenPrice()-openadj+SL*Point; bres = OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, Gold)。 如果(bres)Print("修改对冲卖出完成")。 if (!bres) Print("Error Modifying Hedge SELLorder:",ErrorDescription(GetLastError())。 } } 返回。 } double GetLastLongOpenPrice() { int ord; double LastLongOpenPrice=0; //---- for (int i = 0; i <= OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。 如果(OrderSymbol() == Symbol() && OrderMagicNumber() ==expertId && OrderType() == OP_BUY) { LastLongOpenPrice=OrderOpenPrice()。 } } 如果(LastLongOpenPrice>0){return(LastLongOpenPrice);} 否则 {return(-1);} } How to code? 初学者的问题 MQL4 MT4 MetaTrader 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Hiu Yan Li 2008.04.21 08:34 #837 当SL被击中时,如何编码买入/卖出订单 例如,如果我在164.30买入1手欧元/日元,SL在164.00。 如果SL被击中,那么我将在同样的价格,164.30,同样的SL在164,并且有更多的手,例如1.5,下另一个买单。然后,如果SL再次被击中,将放置另一个买单,以相同的价格和相同的SL买入2手。 有什么代码可以实现这一点吗?谢谢! Sergey Golubev 2008.04.21 08:51 #838 boostrade: 例如,如果我在164.30买入1手欧元/日元,SL在164.00。如果SL被击中,那么我将在相同的价格,164.30,以相同的SL在164,并以更多的手,例如1.5,下另一个买单。然后,如果SL再次被击中,就会再下一个买单,以相同的价格和相同的SL买入2手。 有没有这方面的代码?谢谢! 请看这个关于Frank EA的主题https://www.mql5.com/en/forum 我想这就是你所需要的,或者你可以用它作为一个例子。 Hiu Yan Li 2008.04.21 10:41 #839 好的 newdigital: 请看这个关于Frank EA的主题https://www.mql5.com/en/forum,我 想这是你需要的,或者你可以把它作为一个例子。 非常感谢newdigital,任何问题我都会放在这里。 再次感谢。 european 2008.04.21 11:03 #840 TP问题 if (OrderSelect(orderNo, SELECT_BY_TICKET)==true) { if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(orderNo); if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); } 拉尔夫。 正如你所看到的,我调用了一个单独的函数CloseOrder(),我按照你的建议使用了'Ask'和'Bid',但问题仍然存在。 // 函数 CloseOrder ********************************************************** bool CloseOrder(int orderT) { double sA; 如果(OrderSelect(orderT, SELECT_BY_TICKET)==true) { 如果(OrderType() == OP_BUY) sA = Bid; 否则sA = Ask。 bool bClosed = OrderClose(orderT,OrderLots(),sA,0,CLR_NONE) 。 如果(bClosed == 1) { pTrades = 0; return(1); }}否则 return(0); }}。 否则 return(0); }} ********************************************************** 我希望它能保证一旦触及TP,交易就会被关闭,但事实并非如此,见附图,空单在104.03开仓,TP在103.79。尽管价格达到了(TP),但订单并没有关闭。 附加的文件: tp_failed.jpg 32 kb How to code? 关闭所有'/'打开'工具 [警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 1...777879808182838485868788899091...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在100点上买入和卖出
Zamanib。
我理解你写的内容,但我不明白你是如何盈利收盘的。
在我看来,这像是一个对冲型EA。
forex-tsd里有几个这样的EA。
而且你不必采用马丁格尔法。
大的是
有谁能分享一下如何以获利值关闭订单的想法/代码。
由于某些原因,OrderSend()函数中的 "TakeProfit "在MT4的空头/卖出订单中并不总是有效,尽管它在多头/买入订单中运行良好。
我写了一些代码,将订单的TakeProfit值与当前价格进行比较,但它并没有正确工作。 有什么想法吗?
欧元多头以 "买入 "价格平仓,而空头则以 "卖出 "价格平仓。
Zamanib,
我理解你所写的,但我不明白你是如何盈利收盘的。
在我看来,这像是一个对冲型的EA。
在forex-tsd有几个这样的例子。
而且你不需要使用马丁格尔法。
大贝我看到市场在一波一波地上升和下降,有些星期你会有两个周期的上升/下降,当它的趋势时,我有一个不同的策略。
请给我指点一下对冲交易的方法。我看到很多,但不是我想要的。
代码或平台问题?
多头以 "买入 "价关闭,而空头以 "卖出 "价关闭。
谢谢你的回答。
由于某些原因,我的代码无法工作。
如果(OrderSelect(orderNo, SELECT_BY_TICKET)==true) {
如果(OrderType() == OP_BUY && Close[0] >= OrderTakeProfit() CloseOrder(orderNo)。
如果(OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); }
如果能得到建议,我将不胜感激。
欧元
谢谢你的回答。
由于某些原因,我的代码无法工作。
if (OrderType() == OP_BUY && Close[0] >= OrderTakeProfit()) CloseOrder(orderNo);
if (OrderType() == OP_SELL && Close[0] <= OrderTakeProfit()) CloseOrder(orderNo); }
[/PHP]
I would be grateful for advice.
euro对;"Close[0]"是 "买入 "价格,这不是一个OP_SELL的平仓价格。OP_SELL是针对 "卖出 "价格关闭的,这个价格比 "买入 "价格高出几个点(也就是点差)。
当你的EA运行时,"买入 "价格也可作为变量 "Bid","卖出 "价格作为变量 "Ask"。因此,代码片段最好是这样的。
[PHP]如果(OrderSelect(orderNo, SELECT_BY_TICKET)==true){
如果(OrderType() == OP_BUY && Bid >= OrderTakeProfit() CloseOrder(orderNo)。
如果(OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); }
请用代码帮助,谢谢...
你好。
我是写EA的新手,我正在尝试下面的方法,但得到一个错误 "Invalid ticket for OrderModify function",谁能看一下并提供帮助? 衷心感谢。
void ModifyHedgeSL(int SL) {
if (SL<1) return;
bool bres;
double sl,openadj;
if (lastopenbuy==1 && lastopensell==0) {openadj=Ask-Bid;} else {openadj=0;}
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect (i, SELECT_BY_POS,MODE_TRADES);
如果 ( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_BUY )
{
sl = GetLastLongOpenPrice()-openadj-SL*Point;
bres = OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, White)。
如果(bres)Print("修改对冲BUY完成")。
if (!bres) Print("Error Modifying Hedge BUY order :",ErrorDescription(GetLastError())。
}
如果( OrderSymbol() == Symbol() || OrderMagicNumber() == expertId && OrderType() == OP_SELL )
{
sl = GetLastShortOpenPrice()-openadj+SL*Point;
bres = OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, Gold)。
如果(bres)Print("修改对冲卖出完成")。
if (!bres) Print("Error Modifying Hedge SELLorder:",ErrorDescription(GetLastError())。
}
}
返回。
}
double GetLastLongOpenPrice() {
int ord;
double LastLongOpenPrice=0;
//----
for (int i = 0; i <= OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。
如果(OrderSymbol() == Symbol() && OrderMagicNumber() ==expertId && OrderType() == OP_BUY)
{
LastLongOpenPrice=OrderOpenPrice()。
}
}
如果(LastLongOpenPrice>0){return(LastLongOpenPrice);}
否则 {return(-1);}
}
当SL被击中时,如何编码买入/卖出订单
例如,如果我在164.30买入1手欧元/日元,SL在164.00。
如果SL被击中,那么我将在同样的价格,164.30,同样的SL在164,并且有更多的手,例如1.5,下另一个买单。然后,如果SL再次被击中,将放置另一个买单,以相同的价格和相同的SL买入2手。
有什么代码可以实现这一点吗?谢谢!
例如,如果我在164.30买入1手欧元/日元,SL在164.00。
如果SL被击中,那么我将在相同的价格,164.30,以相同的SL在164,并以更多的手,例如1.5,下另一个买单。然后,如果SL再次被击中,就会再下一个买单,以相同的价格和相同的SL买入2手。
有没有这方面的代码?谢谢!请看这个关于Frank EA的主题https://www.mql5.com/en/forum
我想这就是你所需要的,或者你可以用它作为一个例子。
好的
请看这个关于Frank EA的主题https://www.mql5.com/en/forum,我 想这是你需要的,或者你可以把它作为一个例子。
非常感谢newdigital,任何问题我都会放在这里。 再次感谢。
TP问题
if (OrderType() == OP_BUY && Bid >= OrderTakeProfit()) CloseOrder(orderNo);
if (OrderType() == OP_SELL && Ask <= OrderTakeProfit()) CloseOrder(orderNo); }
拉尔夫。
正如你所看到的,我调用了一个单独的函数CloseOrder(),我按照你的建议使用了'Ask'和'Bid',但问题仍然存在。
// 函数 CloseOrder **********************************************************
bool CloseOrder(int orderT) {
double sA;
如果(OrderSelect(orderT, SELECT_BY_TICKET)==true) {
如果(OrderType() == OP_BUY) sA = Bid;
否则sA = Ask。
bool bClosed = OrderClose(orderT,OrderLots(),sA,0,CLR_NONE) 。
如果(bClosed == 1) {
pTrades = 0; return(1); }}否则 return(0); }}。
否则 return(0); }}
**********************************************************
我希望它能保证一旦触及TP,交易就会被关闭,但事实并非如此,见附图,空单在104.03开仓,TP在103.79。尽管价格达到了(TP),但订单并没有关闭。