如何编码? - 页 276

 

下午好。

我正在开始编写和理解代码。到目前为止,我已经不知所措了。

我想开始使用MACD 直方图和三条线在直方图上方和下方交叉时编写一个EA。

有没有人有一个简单的程序建议来开始理解代码,并让它运行,看看它是如何交易的?

谢谢。

daniel

 

从Excel/CSV=中导入趋势线?

嗨,我最近写了一些简单的脚本,特别是ObjectCreate (OBJ_TREND with Ray=1),它的工作原理真的很好,但我怎样才能从一个准备好的csv文件中提取对象,其中我有一些历史的Close-Data用于我的Close-Line,因为我希望能够删除我的模板并在每次我需要它们时用脚本导入数据。

有谁知道这该如何操作?

CSV有一个日期(没有时间)和收盘价(我不需要更多的线的数据)。

脚本应该从这个日期开始,用Ray=1和自定义颜色画一条线。

也许脚本也可以检查开放的图表(符号),并采取正确的csv文件,如果有多个文件的话;-)

谁能帮帮我?

 

OrderDelete(OrderTicket())的错误

大家好!

我是MQL4编程 的新手,但在其他方面我懂C++。

但是我在交易函数方面遇到了一些问题。

这是我的问题。

我创建了一个挂单,用:

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-5*Point,slipage,0,0,",0,0,Green)。

在程序的另一点上,我想删除它。

如果(OrderSelect(ticket,SELECT_BY_TICKET))OrderDelete(OrderTicket())。

ERROR 4108! 为什么?票号是正确的,我打印了它。

但如果我用:

如果(OrderSelect(position, SELECT_BY_POS))OrderDelete(OrderTicket())。

是正确的!

为什么呢?

谢谢你的支持和论坛。

 

终止EA的代码是什么?

大家好。

我正在寻找能终止EA的代码。 我已经发布了我写的一个小马汀格尔。 我让它在达到账户缩减百分比时关闭所有挂单和未结订单。 我还能让它在达到每日盈利目标时停止交易。 它在第二天又开始交易。 (感谢编写SWB网格的人,因为我使用了他们的代码)。

然而,我想让EA在达到某个条件时终止交易。 比如说,它达到了最大百分比的缩减,并关闭了所有的挂单 和未结头寸。 在这一点上,我想让EA自己终止,这样它就不会再开始交易,直到我把EA从图表上移开,再把它放回去。

这里是EA。 如果有任何建议或帮助,我们将不胜感激!

谢谢。

附加的文件:
 

关于"'\end_of_program'-不平衡的左括号 "需要帮助

你好,我一直在做一个EA,我在编译时一直得到一个错误信息。"'\end_of_program'--不平衡的左括号"。 通常这个错误信息与左右小括号的数量不均有关。 然而,我高低检查了我的代码,发现我的左右小括号数量相等。 因此,我真的很生气,我无法弄清它在哪里出了问题。 有谁能检查我的代码并告诉我如何修复它? 非常感谢。 我的代码贴在下面。

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

突破.mq4 | //| 突破.mq4

//| Pooh | |

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

#属性版权 "维尼"

#property link ""

//---输入参数

Extern int LengthI=23;//用于进入市场

extern int LengthO=7;//用于出场

extern double Lots=0.1; //用于订单大小

extern int N1=14; //用于ATR的周期

extern int NLots=1; //增加订单的手数

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

//|专家初始化函数

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

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

//|专家启动功能|

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

int start()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2))。

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2))。

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2))。

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2))。

int cnt, cot,ticket, total;

total=OrdersTotal();

如果(total<1)

{

如果(iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green) 。

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

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

}

否则

Print("打开长订单的错误。",GetLastError())。

return(0);

}

如果(iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red)。

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Short order opened:",OrderOpenPrice())。

}

否则 Print("打开空头订单错误:",GetLastError())。

return(0);

}

return(0);

}

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

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

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

{

如果(OrderType()==OP_BUY)// 多头头寸被打开

{

//应该平仓吗?

如果(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//平仓

return(0);

}

//修改追踪止损

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green)。

return(0);

}

否则

{

如果(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//平仓

返回(0)。

}

//修改追踪止损

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red)。

return(0);

}

}

}

//获取多头和空头订单的总手数

double LOrderLots=0;

double SOrderLots=0;

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

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。

如果(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots()。

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

SOrderLots=LOrderLots+OrderLots()。

}

//增加开放订单

for(cot=0,cot<=total,cot++)

{ //1

//增加多头订单的位置

如果(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //如果有未结订单

{ 如果(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- 如果未平仓订单是由EA开出的,pooh abd类型是Long

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1) //4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); /5

如果(ticket>0)

{ //6

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

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

} //6

否则

Print("开长单错误。",GetLastError())。

休息。

} //5

} //4

return(0);

//为空头订单添加仓位

如果(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

如果(ticket>0)

{ // 10

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

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

} // 10

否则

Print("打开空头订单错误。",GetLastError())。

休息。

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

返回(0)

}

 

需要一个编码员来编码一个简单的指标

我需要有人编写一个指标,可以做到这一点。

在一个简单的斐波那契上只使用0,50,100线。当一个条形图收于50%以上或50%以下时,可以选择我是要找一个高于或低于50%的收盘价,而不是同时找。因此,如果我正在寻找一个低于50%的收盘价,我不希望每次收盘价高于50时都发出警报。我希望它能用声音提醒我,并给我发送电子邮件和/或文本。这有可能吗?谢谢你!!

图片:http://tinypic.com/r/dhbu6v/5

 

试图编写简单的逻辑代码,无法

你好,论坛。

我相信对于精通MQL4的人来说,这是一个非常简单的代码,但我是初学者,我有问题,我读了这里的所有课程,但仍然无法弄清楚。

所以我想做自动交易

手数为0.1

止损=30点

盈利目标50点

货币对 AUDUSD

如果 在02:00 GMT和10:00 GMT之间,(高价-低价)<60点,那么 在低价-5点卖出澳元兑美元,或在高价+5点买入澳元兑美元,否则 不交易

 
Avasys:
你好,论坛。

我相信对于精通MQL4的人来说,这是很简单的代码,但我是初学者,我有问题,我读了这里的所有课程,但还是想不出来。

所以我想做自动交易

手数为0.1

止损=30点

盈利目标50点

货币对 AUDUSD

如果 在02:00 GMT和10:00 GMT之间,(highprice - lowprice)<60点,那么 在lowprice - 5点卖出澳元兑美元,或在highprice + 5点买入澳元兑美元,否则 不交易。

[lang=pl]你好,我认为编写这个EA是没有问题的,但我有一个问题。

当你想买入/卖出时?你需要在低点-5点-高点+5点的水平上挂单 吗?

问候。

Grzesiek[/lang]

 
g.pociejewski:
[lang=pl]你好,我认为编写这个EA没有问题,但我有一个问题。

你想什么时候买入/卖出 ?你需要在低位-5位-高位+5位的挂单吗?

问候。

Grzesiek[/lang]

你好。

谢谢您的帮助

是的,更准确地说,澳元兑美元的交易范围(高价和低价之间的差异)在格林威治时间02:00和格林威治时间10:00之间(这在代码中非常重要)小于60点,所以这是可交易信号。因此,如果价格达到低价(02:00和10:00之间)-5点,你就卖出,如果价格达到高价+5点,你就买入。

例如

在02:00和10:00之间,GBPUSD的低价是1.6000,高价是1.6050,所以如果价格达到1.5995就自动卖出,如果价格达到1.6055就自动买入,自动下30点止损单,50点获利

如果你没有时间,请给我指示如何开始,我读过课,但我没有实践来做这些工作。

谢谢

 
pooh123:
你好,我一直在做一个EA,在编译的时候我一直得到一个错误信息。"'\end_of_program'--不平衡的左括号。" 通常这个错误信息与左右小括号的数量不平衡有关。 然而,我高低检查了我的代码,发现我的左右小括号数量相等。 因此,我真的很生气,我无法弄清楚哪里出了问题。 有谁能检查我的代码并告诉我如何修复它? 非常感谢。 我的代码贴在下面。

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

//| Breakout.mq4 |

//| Pooh |

//| |

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

#属性版权 "维尼"

#property link ""

//---输入参数

Extern int LengthI=23;//用于进入市场

extern int LengthO=7;//用于出场

extern double Lots=0.1; //用于订单大小

extern int N1=14; //用于ATR的周期

extern int NLots=1; //增加订单的手数

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

//|专家初始化函数

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

int init()

{

//----

//----

return(0);

}

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

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

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

int deinit()

{

//----

//----

return(0);

}

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

//|专家启动功能|

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

int start()

{

//----

double HLong,LLong,HShort,LShort;

HLong=iHigh(NULL,0,iHighest(NULL,0,2,LengthI,2))。

LLong=iLow(NULL,0,iLowest(NULL,0,1,LengthO,2))。

LShort=iLow(NULL,0,iLowest(NULL,0,1,LengthI,2))。

HShort=iHigh(NULL,0,iHighest(NULL,0,2,LengthO,2))。

int cnt, cot,ticket, total;

total=OrdersTotal()。

如果(total<1)

{

如果(iClose(NULL,0,1)>HLong)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,LLong,300000, "EA Long",123,0,Green) 。

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

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

}

否则

Print("打开长订单的错误。",GetLastError())。

return(0);

}

如果(iClose(NULL,0,1)<LShort)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red)。

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Short order opened:",OrderOpenPrice())。

}

否则 Print("打开空头订单错误:",GetLastError())。

return(0);

}

return(0);

}

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

{ //10

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

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

{

如果(OrderType()==OP_BUY)// 多头头寸被打开

{

//应该平仓吗?

如果(Bid<=LLong)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);//平仓

return(0);

}

//修改追踪止损

OrderModify(OrderTicket(),OrderOpenPrice(),LLong,OrderTakeProfit(),0,Green)。

return(0);

}

否则

{

如果(Ask>=HShort)

{OrderClose(OrderTicket(),OrderLots(),Ask,3,Purple);//平仓

返回(0)。

}

//修改追踪止损

OrderModify(OrderTicket(),OrderOpenPrice(),HShort,OrderTakeProfit(),0,Red)。

return(0);

}

}

}

//获取多头和空头订单的总手数

double LOrderLots=0;

double SOrderLots=0;

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

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)。

如果(OrderSymbol()==Symbol()&&OrderType()==OP_BUY)

LOrderLots=LOrderLots+OrderLots()。

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

SOrderLots=LOrderLots+OrderLots()。

}

//增加开放订单

for(cot=0,cot<=total,cot++)

{ //1

//增加多头订单的位置

如果(OrderSelect(cot,SELECT_BY_POS,MODE_TRADES)==true) //如果有未结订单

{ 如果(OrderMagicNumber==123 && OrderSymbol()==Symbol()&&OrderType()==OP_BUY) //2- 如果未平仓订单是由EA开出的,pooh abd类型是Long

{ //3

for(int i=1;i<=15;i++)

{ if(Bid>=OrderOpenPrice()+i*0.5*iATR(NULL,0,N1,0)&&(Bid<(OrderOpenPrice()+(i+1)*0.5*iATR(NULL,0,N1,0))&&LOrderLots<Lots*(i+1)//4

{ ticket=OrderSend(Symbol(),OP_BUY,NLots*Lots,Ask,3,LLong,300000, "EA Long",123,0,Green); /5

如果(ticket>0)

{ //6

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

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

} //6

否则

Print("开长单错误。",GetLastError())。

休息。

} //5

} //4

return(0);

//为空头订单添加仓位

如果(OrderMagicNumber()==123 && OrderSymbol()==Symbol() && OrderType()==OP_SELL)

{ //7

for(int n2=1;n2<=15;n2++)

{ if(Ask(OrderOpenPrice()-(n2+1)*0.5*iATR(NULL,0,N1,0))&&SOrderLots<Lots*(n2+1) //8

{ ticket=OrderSend(Symbol(),OP_SELL,NLots*Lots,Bid,3,HShort,0.0001, "EA Short",123,0,Red); //9

如果(ticket>0)

{ // 10

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

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

} // 10

否则

Print("打开空头订单错误。",GetLastError())。

休息。

} //9

} //8

return(0);

} //7

} //3

} //2

} //1

返回(0)

}

[lang=pl]你好,有几个错误,在函数 OrderMagicNumer中有两个不平衡的")",你应该在最后使用()。在for循环中,你应该使用";"而不是","。

如果你需要找到不平衡的小括号,我建议你用记事本++ [/lang]

附加的文件:
eamod.mq4  5 kb
原因: