问吧! - 页 98

 

再次提供帮助

大家好。

我一直在研究一个EA,似乎已经很久了。感谢这个主题上所有的人给我的所有帮助。

我现在又陷入了困境,希望得到更多的帮助。我们都知道,大多数从MA到Stoch的交叉型信号效果都不是很好,因为很多时候它是在移动的末端交叉的。

我想做的是,当Stochastic RSI越过50线时,但只有在价格超过高点或低点一定数量(MinPips)的情况下,才能在接下来的交易中使用。我的主要问题是,当我跟踪交叉时,如果价格只在交叉后的后续条上达到MinPips,但交叉保持在同一方向。

我试图附上一张图片,以显示我所要做的事情。

1号点是卖出交叉点,但由于价格从未超过该条的低点,所以没有交易(实际上,我希望任何先前的交易保持活跃)。

2号点位于买入交叉点,但价格只在交叉点后的第4个柱子上超过柱子的高点,应该在那时进行交易。任何之前的卖出订单 都应该在这个时候被关闭。

我希望这有用,因为这是我第一次附上图片。如果我搞砸了,我提前表示歉意。

普茨

附加的文件:
 

更多信息

以下是我的编程,CurrDir是当前方向,PrevDir是前一个方向,所以如果它不相等,那么就有一个交叉。

问题是,如果它没有在当前条形上交叉,那么CurrDir和PrevDir就会相等,而且它永远不会越过该条形去看它是否达到ValHigh或ValLow。

希望能得到任何帮助。

朴茨

if(CurrDir != PrevDir)

{

if(CurrDir == 1)

{

ValHigh = iHigh(Symbol(),Timeframe2,1) + MinPips*Point;

if(Bid >= ValHigh)

{

return(1); //up

}

return (2);

}

if(CurrDir == 2)

{

ValLow = iLow(Symbol(),Timeframe2,1) - MinPips*Point;

if(Ask <= ValLow)

{

return(2);//down

}

return (1);

}

 

想通了......我想

我想我终于找到了我的问题。现在快到凌晨2点半了,我已经很累了,所以我明天再去看看......

普茨

 

有没有办法改变MT4导出文件的数据格式?

我正在寻找ASCII.csv,但需要数据为以下格式。

1)独立的栏目(只需要:时间、最高点、最低点和收盘点)。

2)只需要过去1000个柱子的数据

3)颠倒顺序(最后一个在上)。

4)将其保存在我桌面上已有的一个文件夹中(也许可以用浏览功能 来选择哪个文件夹?)

感谢任何能够帮助我的人。

 

添加和删除指标

能否在EA中写一段代码来添加或删除交易平台 上的指标?

戴夫

 

我在订单管理方面遇到了很大的麻烦....。

我的简单的EA在X:59进入......,但我在同一个十字路口有多次进入。我的问题是。是否可以检查 订单的输入时间并与新订单进行比较?

我想在X:59进入,只有一个十字架的订单....。

谁能帮助我?

 
metastock:
我在管理订单方面遇到了很大的麻烦....

我的简单EA在X:59进入......,但我在同一个十字路口有多个入口。我的问题是。是否有可能检查订单的进入时间并与新订单进行比较?

我想在X:59进入,只有一个十字架的订单....。

谁能帮助我?

这是我的解决方案,我希望这能帮助别人......

//+------------------------------------------------------------------+

//| 信号开始(进入) |

//+------------------------------------------------------------------+

如果(Buy1_1 58 &&check_buy==0) Order = SIGNAL_BUY;

如果(Sell1_1 > Sell1_2 && Minute()>58 &&check_sell==0)订单=SIGNAL_SELL。

如果(Minute()==00) {check_buy=0;}

如果(Minute()==00) {check_sell=0;}

//+------------------------------------------------------------------+

//| 信号结束 |

//+------------------------------------------------------------------+

//买入

如果(Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){

//if(!IsTrade) {

//检查自由保证金

如果(AccountFreeMargin() < (1000 * Lots)) {

Print("我们没有钱。Free Margin = ", AccountFreeMargin())。

return(0);

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

check_buy=1;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy %W(#" + Magic_Number + ")", Magic_Number, 0, DodgerBlue) 。

如果(Ticket > 0) {

如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY订单打开:", OrderOpenPrice())。

if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + "Open Buy");

} else {

Print("打开买入订单出错。", GetLastError())。

}

}

if (EachTickMode) TickCheck = True;

如果(!EachTickMode) BarCount = Bars;

return(0);

// }

}

//卖出

如果(Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){

//if(!IsTrade) {

//检查自由保证金

如果(AccountFreeMargin() < (1000 * Lots)) {

Print("我们没有钱。Free Margin = ", AccountFreeMargin())。

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0。

check_sell=1;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell %W(#" + Magic_Number + ")", Magic_Number, 0, DeepPink) 。

如果(Ticket > 0) {

如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Sell order opened : " , OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("错误打开卖出订单。", GetLastError())。

}

}

if (EachTickMode) TickCheck = True;

如果(!EachTickMode) BarCount = Bars;

return(0);

//}

}

如果(!EachTickMode) BarCount = Bars;

return(0);

}

//+------------------------------------------------------------------+

 

致Metastock

我不知道是什么原因导致check_buy 为True。

为了限制一个订单的开启,你可以在进入前使用。

如果(OrdersTotal()==0)

大的是

 

编码知识问题

什么时候你想使用STATIC变量--它能解决什么问题?

什么时候你想在INIT()部分放点东西--它能解决什么问题?

大的是

 

不知道以前是否有人问过这个问题,但是否有办法在EA中的当前时间+1小时之前和之后的某个价格处画一条线?