编码帮助 - 页 159

 
mladen:
不要改变这部分代码。这部分代码是检查你的经纪人是否是4位或5位经纪人。另外,这里有一个测试,使用500美元作为初始存款(风险5%,止损20点,测试用的是欧元兑美元),即使是初始存款也能工作。

你好,姆拉登。

昨天,我问了你关于订单编码的问题。

但它太复杂了。

我很抱歉,因为我想要一个简单的编码。

就像这样。

帐户余额 500美元

有5%的风险,开仓手数=0.25美元

手数=500美元*(风险/100)

手数=500美元*(0.05/100)

手数=500美元(0.0005)

手数=0.25美元

我很喜欢这个自动开仓0.25美元的EA。

而且手数不与止损或止盈相混合。

我希望你能帮助我解决这个问题。

非常感谢您。

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}
 
hock87:
你好,姆拉登。

昨天,我问了你关于订单编码的问题。

但它太复杂了。

我很抱歉,因为我想要一个简单的编码。

就像这样。

帐户余额为500美元

有5%的风险,开仓手数=0.25美元

手数=500美元*(风险/100)

手数=500美元*(0.05/100)

手数=500美元(0.0005)

手数=0.25美元

我很喜欢这个自动开仓0.25美元的EA。

而且手数不与止损或止盈相混合。

我希望你能帮助我解决这个问题。

非常感谢您。

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}

hock87

当考虑到净值、止损 和所需风险时,没有简单(r)的方法来计算手数。另外,在不知道止损的情况下,你无法计算风险(想想看:如果你开了一个订单,比方说,大小为1手,你在1点后关闭,或者你在100点后关闭,损失(以及所承担的风险)是不一样的,它们不可能是一样的)。

如果你这样计算(没有已知的止损),那么这不是风险计算,而是简单的手数计算(这并不意味着任何形式的风险计算)。

 
mladen:
hock87

当考虑到净值、止损和所需风险时,没有简单(r)的方法来计算手数大小。另外,在不知道止损的情况下,你无法计算风险(想想看:如果你开了一个订单,比如说,大小为1手,你在1点后关闭,或者你在100点后关闭,损失(以及所承担的风险)是不一样的,它们不可能是一样的)。

如果你这样计算(没有已知的止损),那么它不是风险计算,而是简单的手数计算(这并不意味着任何种类的风险计算)。

Mladen,你是对的。

我知道这并不意味着任何形式的风险计算。

我只是想做一个简单的手数计算。

让它根据账户余额 的百分比自动计算手数。

lots=$500*(risk%/100)

lots=$500*(0.05/100)

lots=$500(0.0005)

手数=0.25美元

我很喜欢这个自动开仓0.25美元的EA。

而且手数不与止损或止盈相混合。

如何进行编码?

谢谢。

 
hock87:
Mladen,你是对的。

我知道这并不意味着任何形式的风险计算。

我只想做一个简单的手数计算。

让它根据账户余额的百分比自动计算手数。

lots=$500*(risk%/100)

lots=$500*(0.05/100)

lots=$500(0.0005)

手数=0.25美元

我很喜欢这个自动开仓0.25美元的EA。

而且手数不与止损或止盈相混合。

如何进行编码?

谢谢。

试试KimIV在这里描述的方法:b-Lots

 

非常感谢mladen,我认为这与我心中的想法#1579 相似,顺便问一下,是否有可能以类似于RSI或MFI方程式的方式转换DPO,使垂直刻度正常化?去趋势价格震荡指标 - MQL4代码基础,再次感谢。

 
kenwa:
非常感谢mladen,我认为这与我的想法#1579 相似,顺便问一下,是否有可能以类似RSI或MFI的方式转换DPO,使垂直刻度标准化?去趋势价格震荡指标 - MQL4代码基础,再次感谢。

kenwa

一旦你有了模板,就不难了

这里是一个DPO的RSI。上面是DPO,下面是DPO的RSI。

附加的文件:
 

你好mladen,我以前得到过你的macd的rsi,它的制作方式/逻辑是否与最近的力指FI和DPO的相似?

我把你最近制作的新的rsi版本(FI和DPO)附在我的电脑上,我遇到一个问题,如果我用icustom 函数来调用它们的输出值,它不是像图表上显示的那样从0到100,而是从-100到0到100,有什么意见吗,是不是我把内部的缓冲值调用错了? 谢谢建议。

附加的文件:
 

你好,姆拉登。

我有一个问题。

当买入订单的价格 向反方向移动时,距离市场价格超过25点。

它又会自动打开一个买入订单。

如何对这个策略进行编码?

谢谢。

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}
 
hock87:
你好,姆拉登。

我有一个问题。

当买入订单的价格向反方向移动时,距离市场价格超过25点。

它又会自动打开一个买入订单。

如何对这个策略进行编码?

谢谢。

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}

hock87

这段代码无法编译(用OP_BUY替换OP_Buy),我也没有看到任何打开另一个订单的条件。目前你只允许一个订单("if (TotalOrders<1) "行),这应该是你的出发点。

 

CCI fdoe hpp

我从一个主题中下载了这个指标,它比CCI-区间或Ma-区间指标好得多。

能否将其调整为在屏幕上显示为一个区域指标?

它被设置为CCI设置13,但如果它可以很容易地成为一个变量设置指标,那么这将是一个额外的好处--但这是一个非常次要的要求。

它是一个Forex-TSD指标,但没有mq4文件夹。

谢谢

尊敬的客户

附加的文件:
cci_fdoehpp.ex4  19 kb
原因: