问吧! - 页 76

 

EA问题

嗨,Codersguru。

我正在尝试学习编程,并正在使用您的材料,让我说它非常好!一步一步,简单易懂,谢谢。

我有个问题,既然你用ema交叉作为EA的例子,我想用stepMA_7.2指标代替ema。你认为stepMA_7.2能行吗?还是需要重新安排代码,或者可能需要更多的额外代码

我在想,只要在代码中交换指标就可以了。

谢谢

祝贺你。

 
Michel:
这是错的:以前的条形图是正数,
MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,-1);[/PHP] Use this instead:[PHP]MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,0,MODE_LWMA,PRICE_WEIGHTED,1);

谢谢你。

 
 

我仍然有一些问题。买入订单被正确打开,但所有的订单都在止损处关闭,忽略了退出条件。

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

//| EA Stripped Down.mq4 |

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

#property copyright ""

#property link ""

extern double StopLoss =13.0;

extern double MA_Open =12.0;

extern double MA_Close =12.0;

extern double MA_Exit =6.0;

extern double Lots =50.0;

#define MAGICMA 20050610

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

int init()

{

return(0);

}

int deinit()

{

return(0);

}

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

int start()

{

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

double MA_CLOSE;

double MA_OPEN;

double MA_EXIT_0;

double MA_EXIT_1;

int res;

if(Volume[0]>1) return;

MA_CLOSE=iMA(NULL,0,MA_Close,1,MODE_SMA,PRICE_CLOSE,0);

MA_OPEN=iMA(NULL,0,MA_Open,1,MODE_SMA,PRICE_OPEN,0);

MA_EXIT_0=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,0,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if((MA_CLOSE-MA_OPEN>=1*Point) && MA_EXIT_0>MA_EXIT_1)

{

res=OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue);

return;

}

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

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

if(Volume[0]>1) return;

MA_EXIT_0=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,0);

MA_EXIT_1=iMA(NULL,PERIOD_H1,MA_Exit,1,MODE_LWMA,PRICE_WEIGHTED,1);

if(OrderType()==OP_BUY)

{

if(MA_EXIT_0<=MA_EXIT_1) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

return;

}

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

}
 
 

另一个指标的移动 平均线

弄明白了。

 

检查 一个范围内的未平仓头寸

我试图检查x点内的未平仓头寸,如果没有头寸,就会开一个。它不起作用,只是连续开仓,谁能帮帮我?

如果(buyingPosition)

{

weBeBuying = true;

totalorders = OrdersTotal();

for(i=0;i<totalorders;i++)

{

OrderSelect(i,SELECT_BY_POS)。

如果((OrderSymbol()==Symbol()) && (OrderMagicNumber()==magicNumber)

{

type = OrderType()。

如果((type == OP_BUY) || (type == OP_BUYLIMIT))

{

如果(((Bid+spread) - OrderOpenPrice()) > -0.0013)

weBeBuying = false;

}

}

}

}

如果(weBeBuying==true)

OrderSend(Symbol(),OP_BUY,lot,Bid+spread,slipage,0,0,NULL,magicNumber,0,Green)。

 

自定义指标 的MA

我如何在EA中编写语句来引用iCustom指标的7,Smooth的移动平均线? 这相当于使用第一个指标数据的移动平均线。 你可以在显示一个iCustom指标并拥有该指标的MA(使用第一个指标数据)时做到这一点,但你如何在EA中编码?

请帮助我解决这个问题!

我提前感谢您的帮助!

戴夫

谁能帮助解决这个问题????请!!!!

我想我明白了!。

LR0=iCustom(NULL,0, "Laguerre RSI LONG & SHORT ENTRY",0,0); //LOWER GAMMA

仍然需要帮助 - 你能帮助我吗!

 

在这里,您可以发布与MQL4有关的问题,我会尽力回答。

关于错误代码。

我刚刚返回账户,在我所有的专家中,我有一个错误代码 "OrderModify error 1",即使是像下面这位Coders Guru的专家。

为什么?

谢谢!

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

//| PriceCross.mq4 | |

//| Coders Guru |

//|https://www.mql5.com/en/forum|

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

#财产版权 "Coders Guru"

#property link "https://www.forex-tsd.com"

//---- 包括

#include

//---- 交易限制

extern double TakeProfit = 200;

extern double TrailingStop = 50;

extern double StopLoss = 50;

extern double Lots = 0.1;

extern int Slippage = 5;

//---- 外部选项

外置 int CurrentBar = 1;

External int HedgeLevel = 6;

外置双倍到期日=7200。

extern int Size = 4;

extern int Step = 1;

外部 bool UseClose = true;

//---指标设置

Extern int MaMode = 3;

extern int MaPeriod = 24;

//--- 全局变量

int MagicNumber = 101090;

string ExpertComment = "PriceCross";

bool LimitPairs = true;

bool LimitFrame = true;

int TimeFrame = 60;

string LP[] = {"EURUSD", "USDCHF", "GBPUSD", "USDJPY"}; // 添加/删除你想限制的paris。

bool Optimize = true;

int NumberOfTries = 5;

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

int init()

{

返回(0)。

}

int deinit()

{

return(0);

}

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

bool isNewSymbol(string current_symbol)

{

//循环所有打开的订单并比较符号

int total = OrdersTotal();

for(int cnt = 0 ; cnt < total ; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

string selected_symbol = OrderSymbol();

如果(current_symbol == selected_symbol && OrderMagicNumber()==MagicNumber)

返回(False)。

}

返回(True)。

}

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

int start()

{

int cnt, ticket, total,n;

双重趋势。

if(Bars<100) {Print("bar less than 100"); return(0);}

如果(LimitFrame)

{

if(Period()!=TimeFrame) {Print("This EA is not working with this TimeFrame!"); return(0); }

}

如果(LimitPairs)

{

if(AllowedPair(Symbol()) == false) {Print("This EA is not working with this Currency!"); return(0);}

}

trend = iMA(NULL,0,MaPeriod,0,MaMode,PRICE_CLOSE,CurrentBar) 。

//--- 交易条件

bool BuyCondition = false , SellCondition = false , CloseBuyCondition = false , CloseSellCondition = false 。

如果(Open[1]趋势)

BuyCondition = true。

如果(Open[1]>trend && Close[1]<trend)

SellCondition = true。

如果(Open[1]>trend && Close[1]<trend)

CloseBuyCondition = true。

如果(Open[1]趋势)

CloseSellCondition = true。

total = OrdersTotal();

如果(total < 1 || isNewSymbol(Symbol()))

{

如果(BuyCondition) //<-- 买入条件

{

ticket = OpenOrder(OP_BUY); //<-- 打开BUY订单

CheckError(ticket, "BUY");

for(n=0; n< Size; n++)

{

ticket = OpenPendingOrder(OP_BUYSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration) 。

}

返回(0)。

}

if(SellCondition) //<--卖出条件

{

ticket = OpenOrder(OP_SELL); //<--打开卖出订单

CheckError(ticket, "SELL");

for(n=0; n < Size; n++)

{

ticket = OpenPendingOrder(OP_SELLSTOP,Lots,HedgeLevel+(n*Step+1),Slippage,StopLoss,TakeProfit,ExpertComment,MagicNumber,CurTime() + Expiration) 。

}

返回(0)。

}

return(0);

}

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

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

{

如果(OrderType()==OP_BUY) //<-- 多头仓位被打开

{

如果(UseClose)

{

if(CloseBuyCondition) //<-- 关闭订单并退出!

{

CloseOrder(OrderType()); return(0);

}

}

TrailOrder(OrderType()); return(0); //<--追踪订单

}

if(OrderType()==OP_SELL) //<-- 进入空头状态

{

如果(UseClose)

{

if(CloseSellCondition) //<-- 关闭订单并退出!

{

CloseOrder(OP_SELL); return(0);

}

}

TrailOrder(OrderType()); return(0); //<--追踪订单

}

}

}

return(0);

}

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

....

 

你好。

有没有办法让我们知道一个订单已经关闭?

图例是这样的。

我开了2个挂单。

打开#182买入限额0.17 EURUSD在1.3005 sl: 1.2970 tp: 1.3013

打开#183买入限额0.17 EURUSD在1.3000 sl: 1.2968 tp: 1.3011

然后

订单#182,买入0.17欧元兑美元在1.3005处开仓

在1.3013(1.3013/1.3015)处获利#182

我想在订单#182关闭后删除订单#183。触发条件是如果订单#182关闭,那么订单#183将被删除。

欢呼声