问吧! - 页 142

 

请对一个EA提供一些帮助

我试图关闭一个卖出订单 并打开一个新的买入订单。买单打开了,但卖单却出现了4051的错误。

我正在使用

ticket = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, Gold);//关闭仓位

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) 。

 

如何改变神奇的数字?

大家好。

我使用差额EA(从一个原点EA复制)在差额图表窗口交易差额货币对,我想改变魔法数字,但不知道魔法数字是如何工作的?请您告诉我。

1.神奇数字是如何工作的?

2.2.如何改变神奇数字?

3.3.我可以用任何数字来改变魔法数字,还是我必须在某些规则中使用某些数字?

4.你能给我一个例子来改变我的EA的神奇数字:16763吗?

非常感谢您的帮助!

 

魔法号码只不过是一个唯一的标识符。它区分了同一EA的每个实例,同时也将其与你可能运行的任何其他EA区分开来。

如果魔法号码是一个外部变量,只要把它改成你想要的任何数字。只要确保它与你正在运行的任何其他EA的数字不一样。

如果它不是一个外部变量,那么在代码中寻找该变量,并将其改为你想要的任何数字。

希望这有帮助。

卢克斯

 
luxinterior:
魔法号码只不过是一个唯一的标识符。它区分了同一EA的每个实例,同时也将其与您可能运行的任何其他EA区分开来。

如果这个神奇的数字是一个外部变量,就把它改成你想要的任何数字。只要确保它与你正在运行的任何其他EA的数字不一样。

如果它不是一个外部变量,那么在代码中寻找该变量,并将其改为你想要的任何数字。

希望这有帮助。

卢克斯

嗨,拉克斯。

你是说我可以把我的EA的神奇数字:16763改为16764;16765等?

谢谢你的快速回复。

卢克斯

 
luu:
嗨,拉克斯。

你是说我可以把我的EA的神奇数字:16763改为16764;16765等?

谢谢你的快速回复。

没错!只要这个数字是唯一的,你选择什么数字并不重要。

除非你有特殊原因,否则你真的不需要改变它。

拉克斯

 
luxinterior:
正是如此!只要号码是唯一的,你选择什么号码并不重要。

除非你有特殊原因,否则你真的不需要改变它。

卢克斯

非常感谢您的帮助,Lux !

拉乌

 

EA平仓单问题

朋友们,我有一个带有支撑阻力指标的EA。EA必须在目标利润上完成订单,但它有时会出现问题。

 

请帮助提供简单的通用脚本。

尊敬的先生

有人能用简单的脚本帮助我吗?

这是我需要的。

非常通用的脚本,可用于任何符号,将放置3-4个卖出止损和买入止损的订单。

比方说,我想在现价上方20点处下一个买入止损,第二个订单在现价上方40点,第三个80点,以此类推。

卖出止损也是如此

我试图根据一些例子来编写脚本,但由于我不熟悉C语言,所以遇到了一些问题。

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""// improved.mq4

int start()

{

int ticket,i;

int cnt=1;

int Dist_SL =10; //预设SL (pt)

int Dist_TP =100; // 预设TP (pt)

string Symb=Symbol(); // 符号

RefreshRates()。

double bid =MarketInfo(Symb,MODE_BID);

double ask =MarketInfo(Symb,MODE_ASK);

double point =MarketInfo(Symb,MODE_POINT);

int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);

如果(Dist_TP < Min_Dist) // 如果它小于允许的范围

{

Dist_TP=Min_Dist; // 设置允许的距离。

Alert(" 增加了TakeP的距离 = ",Dist_TP," pt")。

}

//-------------------------------------------------------------------- 6 --

Alert("请求已发送至服务器,等待回复。")。

for(i=100;i<400;i=i+100)

{

double TP=(ask+i*Point) + Dist_TP*Point; // 要求的TP价格

ticket=OrderSend(Symb,OP_BUYSTOP,0.1,ask+i*Point,1,(ask+i*Point)-Dist_SL*Point,TP) 。

Sleep(500);

int Error=GetLastError(); // 失败。

switch(Error) // 可克服的错误

{

case 130:Alert("The SL is wrong. Retrying.");

RefreshRates(); // 更新数据

if (Dist_SL < Min_Dist) // 如果它小于允许的范围

{

Dist_SL=Min_Dist; // 设置允许的

Alert(" 增加SL的距离 = ",Dist_SL," pt")。

}

i=i-50。

警报(i)。

Alert (Dist_SL);

cnt=cnt+1;

警报(cnt)。

if (cnt==3)break;

continue; // 在下一次迭代时

case 135:Alert("The price has changed. Retrying.");

RefreshRates(); // 更新数据

continue; // 在下一次迭代时

case 136:Alert("没有价格,等待新的tick...")。

while(RefreshRates()==false) // 到一个新的tick为止

Sleep(1); // 循环延迟

continue; // 在下一次迭代时

case 146:Alert("Trading subsystem is busy. Retrying.");

Sleep(500); // 简单的解决方案

RefreshRates(); // 更新数据

继续; // 在下一次迭代时

}

switch(Error) //关键错误

{

case 2 : Alert("普通错误。")。

break; // 退出'switch'。

case 5 : Alert("客户终端的过期版本。")。

break; // 退出'switch'。

case 64:Alert("该账户被封锁了。")。

break; //退出'switch'。

case 133:Alert("禁止交易")。

break; //退出 "开关"。

默认情况下。Alert("Occurred error",Error);// Other alternatives

}

//中断。

}

//-------------------------------------------------------------------------- 9 --

Alert("该脚本已完成其操作---------------------------")。

return; // Exit start()

}

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

它有点儿作用,但很多时候我在止损方面有问题。

 

这是我的想法,如果我们能把蛇和高斯SR率切换到一起。

ssrc指标,它可能会带来红利,你认为呢?

因此,它将是单边的高斯SR率矛头等级的相关性。

"osgsrspc "笑话......(我试着编码,但它超过了我的头)。

ssrc_bar.mq4

ssrc.mq4

os_gaussian_sr_rate.mq4

附加的文件:
 

新问题。小数点后第五位和资金管理

在我经常去的另一个为某一特定EA客户开设的论坛上,一位客户抱怨说,EA开发者还没有为他们的EA修复小数点后第5位/小数点的定价问题。

开发者几个月前声称,这个问题需要用特殊的脚本来解决。现在,4个月后,我基本上说这是荒谬的,它还没有被修复 - 并声称它只需要几行代码来重新定义 "点",类似于这里 描述的方法

那么问题来了。开发者仍然坚持认为这个问题超级复杂,需要特殊的脚本编程来解决。下面是开发者的解释。

嗨,约翰。你是对的。越来越多的经纪商开始使用小数点。然而,小数点的问题并不是[删除名称]的一个错误。它是MT4平台定义小数点位数差异的方式的一个问题。我们正在对EA和指标进行重新编程,以使它们能够识别这种差异。这应该包含在MT4平台内的变量 "Point "的定义中,EA使用这个定义来确定小数位数。然而,许多MT4平台不会在EA上传递超过4位的小数点,所以需要包含特殊的脚本。我们的挑战是,我们在整个EA和所有的指标中使用 "Point "变量。因此,这不是添加几行代码重新定义 "点 "那么简单。 我希望在下周末能有一个工作的小数点程序。

所以我的问题是这样的。在座的各位有经验的程序员是否遇到过这种复杂的脚本要求或与MT4平台的 "点 "值有关的问题?

即使你假设 "点 "被限制在4位小数,那么这将意味着你只需要担心点=0.001的交易----,这仍然只需要一两行代码。

或者,你可以用 "数字 "代替 "点"--这仍然只需要几行代码。

或者你可以直接使用一个布尔变量,如 "UseFractionalPips = true; "来重新定义 "Point"。

我真的觉得开发者要么是把问题搞得比实际情况更复杂(也许还有其他动机)。我从来没有读过或听说过 "点 "只限于4位小数的问题--即使是这样,你也可以使用 "数字 "或其他方法来重新定义点,而不需要一些特殊的脚本。

我使用MT4编程只有18个月,所以我想我应该向一些更有经验的程序员请教,以了解在MT4中处理小数点定价的 "解决方案 "有多复杂。

有什么想法吗?

谢谢你的帮助。

-B