如何编码? - 页 97

 
matrixebiz:
好的,我回家后会试一下,但为什么它对买入订单仍然有效? 谢谢

你可能在一个卖出订单 中,但价格符合买入止损代码的条件,所以它被改变,而不再符合卖出部分的条件,所以它不会被改变。

大必

 

感谢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中启用了资金管理

 

谢谢

matrixebiz:
这可能是因为你在EA中启用了资金管理。

谢谢你,兄弟。

我是新手...

 

你能改变这个EA吗?

你好,程序员。

我有这样一个EA,在当前价格上下放置止损单。我需要的是一个能在当前价格上下放置限价订单而不是止损订单的EA。你能在保持所有参数不变的情况下,改变这个EA,使其做到这一点吗?

预先感谢。

保罗

附加的文件: