如何编码? - 页 237

 

请记住,你可能还需要持续存储差价......这取决于你所编写的EA的类型。

 

它是HIGH [0] -- 当前酒吧,刚刚开始

对于低点,我不知道,也许是低点[1]。

 

把OrderSend(),OrderModify()放在正确的顺序上

一天前,我在论坛上看到关于OrderSend()和OrderModify()函数 的话题。

这个话题给了我一个线索,为什么有的EA能工作,有的却不能,我想知道如何检查函数OrderSend()和OrderModify()是否写得正确,有没有例子?

 

大家好...

请告诉我如何在MT4中获得所有货币对列表的代码?

谢谢

查尔斯

 
sunshineh:
你好。

我知道写Ask[1]是不对的,但我怎样才能从最后一个tick中获得Ask-Price呢?

谢谢你

你必须实时保存这些点数,然后从你的EA或指标中获取它们。 如果你有兴趣,我可以试着为你编写一个例子。

 
DooMGuarD:
大家好...

请告诉我如何在MT4中获得所有货币对列表的代码?

谢谢

查尔斯

慢慢来吧,我相信在Mql5中更容易做到,所以只需等待事情的解决。

 

在一个变量中获得神奇的趋势值...

嗨!!

我正在开发一个EA,我想知道如何在一个变量中获得神奇的趋势指标值。显然,没有神奇趋势的本地函数,就像iMA对移动平均线和so....。

目前看来,我必须从头开始编码。但我没有找到任何关于数学的信息!谁能帮帮我?

谁能帮帮我?

非常感谢!!!。

 
atch3000:
你好!!

我正在开发一个EA,我想知道如何在一个变量中获得神奇的趋势指标值。显然,神奇的趋势没有本地函数,就像iMA对移动平均线和so....。

目前看来,我必须从头开始编码。但我没有找到任何关于数学的信息!谁能帮帮我?

谁能帮帮我?

非常感谢!!!。

寻找如何在MQL4中使用ICustom 函数的信息。有了这个函数,您可以在您的EA中调用外部指标。

-guyver

 

机器人 - 关于2个移动平均线MA快速和缓慢的自动化EA

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

外置 int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = True;

外置双数 Lots = 0.2;

extern int Slippage = 3;

外部 bool UseStopLoss = True;

外置 int StopLoss = 15;

外部 bool UseTakeProfit = True;

外置 int TakeProfit = 30;

外部 bool UseTrailingStop = True;

外置 int TrailingStop = 20;

int BarCount;

int Current;

bool TickCheck = False;

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

//| 专家初始化函数 |

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

int init() {

BarCount = Bars;

如果(EachTickMode)Current = 0;否则Current = 1。

return(0);

}

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

//| 专家去初始化功能|

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

int deinit() {

return(0);

}

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

//| 专家启动功能|

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

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

如果(EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

订单 = SIGNAL_NONE;

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

//| 变量开始 |

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

double Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);

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

//|变量结束 |

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

//检查位置

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType() <= OP_SELL && OrderSymbol() == Symbol() ) {

IsTrade = True。

如果(OrderType() == OP_BUY){

//关闭

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

//| 信号开始(退出买入)|

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

if (CloseBuy1_1 > CloseBuy1_2 && False) Order = SIGNAL_CLOSEBUY;

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

//| 信号结束(退出买入) |

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

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

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。

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

if (!EachTickMode) BarCount = Bars;

IsTrade = False。

继续。

}

//拖曳止损

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

如果(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。

if (!EachTickMode) BarCount = Bars;

继续。

}

}

}

} else {

//关闭

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

//| 信号开始(退出卖出)|

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

如果(CloseSell1_1 > CloseSell1_2False) Order = SIGNAL_CLOSESELL;

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

//| 信号结束(退出卖出) |

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

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

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange)。

如果(SignalMail) SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False。

继续。

}

//拖曳止损

if(UseTrailingStop && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

如果((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange) 。

if (!EachTickMode) BarCount = Bars;

继续。

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

如果(Buy1_1 < Buy1_2 && False) Order = SIGNAL_BUY;

如果(Sell1_1 < Sell1_2 && False) 订单 = SIGNAL_SELL;

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

//| 信号结束 |

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

//买入

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

if(!IsTrade) {

//检查自由保证金

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

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

return(0);

}

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

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

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 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 (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

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

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 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);

}

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

//哪里有错误,因为我不知道,请帮助我。

 

你得到什么错误?