如何编码? - 页 97 1...90919293949596979899100101102103104...347 新评论 BigBe 2008.05.27 19:05 #961 matrixebiz: 好的,我回家后会试一下,但为什么它对买入订单仍然有效? 谢谢 你可能在一个卖出订单 中,但价格符合买入止损代码的条件,所以它被改变,而不再符合卖出部分的条件,所以它不会被改变。 大必 matrixebiz 2008.05.27 20:11 #962 感谢Big Be的帮助,但我刚刚意识到,我的旧代码确实 有效,但我必须为卖出订单 启用止损功能才能得到修改。 很奇怪,我不需要启用MoveStopOnce的TakeProfit来操作买入订单,但我必须启用MoveStopOnce的StopLoss来修改卖出订单。 哦,好吧,除非你知道原因,否则我必须更深入地看一下代码来弄清楚这个问题。 EDIT:如果你改成。 if(0 < OrderOpenPrice() - Point * MoveStopTo) { [/code] instead of; [code] if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) { 似乎效果不错。 谢谢 seawolf 2008.05.28 01:11 #963 需要帮助的位置尺寸计算器 好的。 我正在建立一个基于 "凯利公式 "的仓位大小计算器,作为一个函数 (胜率-((1-胜率)/(平均胜率/平均亏损) 我已经得到了所有的代码和计算工作,对所需的变量进行了手动输入(外部),现在正试图通过调用某些账户信息使该函数动态工作(即我想计算赢家一致性率(%),每笔赢家交易的平均点数,以及每笔输家交易的平均点数)。 我可以使用任何和所有的帮助,让这三个函数(WinRate AvgWin & AvgLoss)运行。 我已经使用手动输入的方法几个月了,效果很好。这是目前这个(自动)版本的完整代码......在测试中,我没有得到任何动态输出,一切都回到了默认设置(50、40、20)。 我将其设置为独立的EA,用于测试,并易于模块化到任何现有的EA中。一旦连接到任何图表,输出将打印在日志/专家标签中。这将证明在未来的资金管理中,可以完全使用部分手数的头寸(即:删除1手的25%)。 为了收集我需要的实时账户信息,我正在尝试 1.计算所有的交易 2.计算盈利的交易 等等,等等。 我的方法可能是正确的,也可能是错误的。 谢谢你的帮助...... 海狼 //+------------------------------------------------------------------+ //| KellyFormula.mq4 | //+------------------------------------------------------------------+ #属性版权 "seawolf" #property link "seawolf" #property link "seawolf" //+------------------------------------------------------------------+ //|外部信息输入| //+------------------------------------------------------------------+ extern int MyAccount = 1001; //------>>>> 帐户ID extern int ExpertID = 500001; //------>>>> 这个EA的神奇数字 extern double PipValue= 1.00; //------>>>>,用于所有计算。 extern double LotCost= 50.0; //------>>>>,用于所有计算。 extern double PercentMax= 24.0; //------>>>> 最大%的账户杠杆 在一个时间内。 extern int TradesMax= 3; //------>>>> max simultaniouse trades (例子:24%/3 trades = 8% per trade) extern bool UseKelly= true; //------>>>> 人工覆盖切换 extern double ManualLots= 1.0; //------>>>> # lots if "UseKelly" is false extern double mWinRate= 50.00; //------>>>> winning consistancy in % (manual overide) extern int mAvgWin= 40; //------>>>> 每笔获胜交易的平均点数(手动覆盖) extern int mAvgLoss= 20; //------>>>> 每笔亏损交易的平均点数 (手动覆盖) //+------------------------------------------------------------------+ //| 专家初始化功能 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { //---- PositionSize()。 { Print("Lots=",PositionSize(), " WinRate=",WinRate(), " AvgWin=",AvgWin(), " AvgLoss=",AvgLoss()) 。 } Comment("当前时间是" ,TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ...赢率= ",WinRate()," 平均赢率= ",AvgWin()," 平均输率= ",AvgLoss())。 //---- return(0); } //---- //+------------------------------------------------------------------+ //|计算所有新交易的头寸大小。 //+------------------------------------------------------------------+ //------------------------>>>> Double PositionSize() { //------------------------>>>>,不使用凯利公式,使用统一费率。 如果(UseKelly == true) { double KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss()))。 双倍PerTrade。 双倍的手数。 如果(KelyForm > PercentMax) { PerTrade = (PercentMax/10)/TradesMax; } 否则如果(KelyForm < PercentMax) { PerTrade = (KelyForm/10)/TradesMax; } 否则,如果(KelyForm == PercentMax) { PerTrade = (KelyForm/10)/TradesMax; } Lots = (PerTrade * AccountBalance()/LotCost); 返回(MathRound(Lots)/10)。 } } //+------------------------------------------------------------------+ //|收集实时的账户信息。 //+------------------------------------------------------------------+ //------------------------>>>> double WinRate() { 双倍票数。 double CountWins = 0; for(Ticket=0;Ticket<OrdersTotal(); Ticket++) { OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY)。 如果(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID) { //------>>>> 如果(OrderType()==OP_BUY) { 如果(OrderClosePrice() >= OrderOpenPrice()) CountWins++; } 否则,如果(OrderType()==OP_SELL) { 如果(OrderClosePrice() <= OrderOpenPrice() ) CountWins++; } } } 如果(CountWins > 0) 返回(MathRound(CountWins/OrdersHistoryTotal())*10)。 否则 Print("Real Time WinRate not Available")。 return(mWinRate)。 } //------>>>> //------------------------>>>> double AvgWin() { 双倍票数。 double CountTrades = 0; double CountPips = 0; for(Ticket=0;Ticket<OrdersTotal(); Ticket++) { OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY); 如果(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID) { //------>>>> 如果(OrderType()==OP_BUY &&OrderClosePrice()>=OrderOpenPrice() CountTrades++; { 如果(OrderProfit() >= 0) CountPips++; } 如果(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice() CountTrades++; { 如果(OrderProfit() >= 0) CountPips++; } } } 如果(CountPips > 0) 返回(MathRound(CountPips/CountTrades)*10)。 否则 Print("Real Time AvgWin not Available"); return(mAvgWin); } //------>>>> //------------------------>>>> Double AvgLoss() { double Ticket; double CountTrades = 0; double CountPips = 0; for(Ticket=0;Ticket<OrdersTotal(); Ticket++) { OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY)。 如果(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID) { //------>>>> 如果(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice()) CountTrades++; { 如果(OrderProfit() < 0) CountPips++; } 如果(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice() CountTrades++; { 如果(OrderProfit() < 0) CountPips++; } } } 如果(CountPips > 0) 返回(MathRound(CountPips/CountTrades)*10)。 否则 Print("Real Time AvgLoss not Available"); return(mAvgLoss); } //---------------------------------------------------------------------+ Money Management How to code? Position Sizing Calac... Need BigBe 2008.05.28 01:50 #964 致:MatrixebizMatrixebiz EDIT: if you change to; if(0 < OrderOpenPrice() - Point * MoveStopTo) { [/code] instead of; [code] if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) { 看上去效果不错。 谢谢 不客气。 大贝 hansen_hardrocker 2008.05.28 02:00 #965 Fxpro,问 大家好......我只想问一下如何在FxPro中配置手数的EA。 我很困惑,因为它有6位数(额外的1位数),我固定了S/L和T/P,但我不能改变手数。 每笔交易总是0.4...即使我把它改为0.1或0.3 我使用了10点3的EA... 请帮助我。请给我发电子邮件:hansen_hardrocker@yahoo.co.id 或者可以通过邮件联系我。 欢呼吧... hansen_hardrocker 2008.05.28 02:02 #966 Ask_change Lot (fxpro) Fxpro,问 大家好...我想问一下如何在FxPro中配置手数EA。 我很困惑,因为它有6位数(额外的1位数),我固定了S/L和T/P,但我不能改变手数。 每笔交易总是0.4...即使我把它改为0.1或0.3 我使用了10点3的EA... 请帮助我。请给我发电子邮件:hansen_hardrocker@yahoo.co.id 或者可以通过邮件联系我。 欢呼吧... ramin123 2008.05.28 02:38 #967 我也想要它。请给我发邮件:omidchart@yahoo.com matrixebiz 2008.05.28 08:48 #968 这可能是因为你在EA中启用了资金管理。 hansen_hardrocker 2008.05.28 10:20 #969 谢谢 matrixebiz: 这可能是因为你在EA中启用了资金管理。 谢谢你,兄弟。 我是新手... pabad 2008.05.29 05:33 #970 你能改变这个EA吗? 你好,程序员。 我有这样一个EA,在当前价格上下放置止损单。我需要的是一个能在当前价格上下放置限价订单而不是止损订单的EA。你能在保持所有参数不变的情况下,改变这个EA,使其做到这一点吗? 预先感谢。 保罗 附加的文件: euro_usd_grid.mq4 28 kb 1...90919293949596979899100101102103104...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
好的,我回家后会试一下,但为什么它对买入订单仍然有效? 谢谢
你可能在一个卖出订单 中,但价格符合买入止损代码的条件,所以它被改变,而不再符合卖出部分的条件,所以它不会被改变。
大必
感谢Big Be的帮助,但我刚刚意识到,我的旧代码确实 有效,但我必须为卖出订单 启用止损功能才能得到修改。
很奇怪,我不需要启用MoveStopOnce的TakeProfit来操作买入订单,但我必须启用MoveStopOnce的StopLoss来修改卖出订单。
哦,好吧,除非你知道原因,否则我必须更深入地看一下代码来弄清楚这个问题。
EDIT:如果你改成。
if(0 < OrderOpenPrice() - Point * MoveStopTo) {
[/code]
instead of;
[code]
if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {
似乎效果不错。
谢谢
需要帮助的位置尺寸计算器
好的。
我正在建立一个基于 "凯利公式 "的仓位大小计算器,作为一个函数
(胜率-((1-胜率)/(平均胜率/平均亏损)
我已经得到了所有的代码和计算工作,对所需的变量进行了手动输入(外部),现在正试图通过调用某些账户信息使该函数动态工作(即我想计算赢家一致性率(%),每笔赢家交易的平均点数,以及每笔输家交易的平均点数)。
我可以使用任何和所有的帮助,让这三个函数(WinRate AvgWin & AvgLoss)运行。 我已经使用手动输入的方法几个月了,效果很好。这是目前这个(自动)版本的完整代码......在测试中,我没有得到任何动态输出,一切都回到了默认设置(50、40、20)。 我将其设置为独立的EA,用于测试,并易于模块化到任何现有的EA中。一旦连接到任何图表,输出将打印在日志/专家标签中。这将证明在未来的资金管理中,可以完全使用部分手数的头寸(即:删除1手的25%)。
为了收集我需要的实时账户信息,我正在尝试
1.计算所有的交易
2.计算盈利的交易
等等,等等。
我的方法可能是正确的,也可能是错误的。
谢谢你的帮助......
海狼
//+------------------------------------------------------------------+
//| KellyFormula.mq4 |
//+------------------------------------------------------------------+
#属性版权 "seawolf"
#property link "seawolf" #property link "seawolf"
//+------------------------------------------------------------------+
//|外部信息输入|
//+------------------------------------------------------------------+
extern int MyAccount = 1001; //------>>>> 帐户ID
extern int ExpertID = 500001; //------>>>> 这个EA的神奇数字
extern double PipValue= 1.00; //------>>>>,用于所有计算。
extern double LotCost= 50.0; //------>>>>,用于所有计算。
extern double PercentMax= 24.0; //------>>>> 最大%的账户杠杆 在一个时间内。
extern int TradesMax= 3; //------>>>> max simultaniouse trades (例子:24%/3 trades = 8% per trade)
extern bool UseKelly= true; //------>>>> 人工覆盖切换
extern double ManualLots= 1.0; //------>>>> # lots if "UseKelly" is false
extern double mWinRate= 50.00; //------>>>> winning consistancy in % (manual overide)
extern int mAvgWin= 40; //------>>>> 每笔获胜交易的平均点数(手动覆盖)
extern int mAvgLoss= 20; //------>>>> 每笔亏损交易的平均点数 (手动覆盖)
//+------------------------------------------------------------------+
//| 专家初始化功能 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
//----
PositionSize()。
{
Print("Lots=",PositionSize(), " WinRate=",WinRate(), " AvgWin=",AvgWin(), " AvgLoss=",AvgLoss()) 。
}
Comment("当前时间是" ,TimeToStr(TimeCurrent(),TIME_MINUTES)," GMT ",TimeToStr(TimeCurrent(),TIME_DATE)," ...赢率= ",WinRate()," 平均赢率= ",AvgWin()," 平均输率= ",AvgLoss())。
//----
return(0);
}
//----
//+------------------------------------------------------------------+
//|计算所有新交易的头寸大小。
//+------------------------------------------------------------------+
//------------------------>>>>
Double PositionSize()
{
//------------------------>>>>,不使用凯利公式,使用统一费率。
如果(UseKelly == true)
{
double KelyForm = WinRate()-((1-WinRate())/(AvgWin()/AvgLoss()))。
双倍PerTrade。
双倍的手数。
如果(KelyForm > PercentMax)
{
PerTrade = (PercentMax/10)/TradesMax;
}
否则如果(KelyForm < PercentMax)
{
PerTrade = (KelyForm/10)/TradesMax;
}
否则,如果(KelyForm == PercentMax)
{
PerTrade = (KelyForm/10)/TradesMax;
}
Lots = (PerTrade * AccountBalance()/LotCost);
返回(MathRound(Lots)/10)。
}
}
//+------------------------------------------------------------------+
//|收集实时的账户信息。
//+------------------------------------------------------------------+
//------------------------>>>>
double WinRate()
{
双倍票数。
double CountWins = 0;
for(Ticket=0;Ticket<OrdersTotal(); Ticket++)
{
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY)。
如果(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)
{
//------>>>>
如果(OrderType()==OP_BUY)
{
如果(OrderClosePrice() >= OrderOpenPrice())
CountWins++;
}
否则,如果(OrderType()==OP_SELL)
{
如果(OrderClosePrice() <= OrderOpenPrice() )
CountWins++;
}
}
}
如果(CountWins > 0)
返回(MathRound(CountWins/OrdersHistoryTotal())*10)。
否则
Print("Real Time WinRate not Available")。
return(mWinRate)。
}
//------>>>>
//------------------------>>>>
double AvgWin()
{
双倍票数。
double CountTrades = 0;
double CountPips = 0;
for(Ticket=0;Ticket<OrdersTotal(); Ticket++)
{
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY);
如果(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)
{
//------>>>>
如果(OrderType()==OP_BUY &&OrderClosePrice()>=OrderOpenPrice()
CountTrades++;
{
如果(OrderProfit() >= 0)
CountPips++;
}
如果(OrderType()==OP_SELL && OrderClosePrice()<=OrderOpenPrice()
CountTrades++;
{
如果(OrderProfit() >= 0)
CountPips++;
}
}
}
如果(CountPips > 0)
返回(MathRound(CountPips/CountTrades)*10)。
否则
Print("Real Time AvgWin not Available");
return(mAvgWin);
}
//------>>>>
//------------------------>>>>
Double AvgLoss()
{
double Ticket;
double CountTrades = 0;
double CountPips = 0;
for(Ticket=0;Ticket<OrdersTotal(); Ticket++)
{
OrderSelect(Ticket,SELECT_BY_TICKET,MODE_HISTORY)。
如果(MyAccount==AccountNumber() && OrderSymbol()==Symbol() && OrderMagicNumber() == ExpertID)
{
//------>>>>
如果(OrderType()==OP_BUY && OrderClosePrice()<OrderOpenPrice())
CountTrades++;
{
如果(OrderProfit() < 0)
CountPips++;
}
如果(OrderType()==OP_SELL && OrderClosePrice()>OrderOpenPrice()
CountTrades++;
{
如果(OrderProfit() < 0)
CountPips++;
}
}
}
如果(CountPips > 0)
返回(MathRound(CountPips/CountTrades)*10)。
否则
Print("Real Time AvgLoss not Available");
return(mAvgLoss);
}
//---------------------------------------------------------------------+
致:MatrixebizMatrixebiz
EDIT: if you change to;
if(0 < OrderOpenPrice() - Point * MoveStopTo) {
[/code]
instead of;
[code]
if(OrderStopLoss() < OrderOpenPrice() - Point * MoveStopTo) {
看上去效果不错。
谢谢不客气。
大贝
Fxpro,问
大家好......我只想问一下如何在FxPro中配置手数的EA。
我很困惑,因为它有6位数(额外的1位数),我固定了S/L和T/P,但我不能改变手数。
每笔交易总是0.4...即使我把它改为0.1或0.3
我使用了10点3的EA...
请帮助我。请给我发电子邮件:hansen_hardrocker@yahoo.co.id
或者可以通过邮件联系我。
欢呼吧...
Ask_change Lot (fxpro)
Fxpro,问
大家好...我想问一下如何在FxPro中配置手数EA。
我很困惑,因为它有6位数(额外的1位数),我固定了S/L和T/P,但我不能改变手数。
每笔交易总是0.4...即使我把它改为0.1或0.3
我使用了10点3的EA...
请帮助我。请给我发电子邮件:hansen_hardrocker@yahoo.co.id
或者可以通过邮件联系我。
欢呼吧...
我也想要它。请给我发邮件:omidchart@yahoo.com
这可能是因为你在EA中启用了资金管理。
谢谢
这可能是因为你在EA中启用了资金管理。
谢谢你,兄弟。
我是新手...
你能改变这个EA吗?
你好,程序员。
我有这样一个EA,在当前价格上下放置止损单。我需要的是一个能在当前价格上下放置限价订单而不是止损订单的EA。你能在保持所有参数不变的情况下,改变这个EA,使其做到这一点吗?
预先感谢。
保罗