KimIV的有用功能 - 页 98

 
你好,伊戈尔!09.05.2008 17:10在第17页。17 你已经描述了相关函数。 你能否用皮尔逊公式描述一下相关函数?
 

你好,伊戈尔!

你能不能改变e-OpenByTime的EA或者写一个新的,或者建议一个现成的:)))

我需要一个EA,在X时间将暂停放在不同的方向上,从价格上看有N个点!

 

你好,伊戈尔!

你是否有一个脚本,在信号的X和Y点处画出水平线段

让我解释一下:有买入/卖出的信号(交叉的缪斯,分形,等等)。

该脚本设置了4个参数,例如:。

- 300点到止损。

- 500点拿下。

- 10条=条的长度。

- 在哪里以及如何获取信号 - 参考信号指标,插入信号的条件...这一点是值得深思的!

该脚本在每个买入信号上画2条线。

1)第一个("止损")比信号条的开盘价低300点。

2)第二次("拿下")从信号柱的开盘价中高出500点。

3)线条从信号栏开始,在第10栏结束。

在卖出信号的情况下也是如此,只是线条的缩进是相反的。

我认为这样的可视化对初步估计 "信号停止 "很有用。

问候,瓦迪姆。

 

你好,伊戈尔!

问题1.

在你的OpenPosition()函数中存在错误138 - ERR_REQUOTE得到暂停。

如果(err!=135) Sleep(1000*7.7);

虽然文件中建议刷新数据并立即再试一次(价格离开,我想尽快开仓))。

愿它是正确的,那么。

if (err!=135 && err!=138) Sleep(1000*7.7); ?

或者,也许我错过了什么?

问题2.

如果我的经纪公司(Alpari)给出5位小数,请告知如何在OrderSend()函数 中正确指定等于5点的滑移 参数。

- "50"?

- 还是 "5"?

 
slavamir писал(а)>>

问题1.

在你的OpenPosition()函数中,错误138 - ERR_REQUOTE被暂停了。

如果(err!=135) Sleep(1000*7.7);

虽然文件中建议刷新数据并立即再试一次(价格离开,我想尽快开仓))。

愿它是正确的,那么。

if (err!=135 && err!=138) Sleep(1000*7.7); ?

是的,这很好!你也可以这样做...谢谢你!

slavamir 写道>>

问题2.

请告诉我,如果我的经纪公司(Alpari)给出5位小数,如何在OrderSend()函数中正确设置等于5点的滑移 参数。

-"50"?

- 或者是 "5"?

5
 

你好,Igor,

,请你帮助完善你的函数GetProfitFromDateInCurrency()。我需要它只计算已关闭订单的利润。我使用订单的部分平仓(分割)和CloseBy函数来关闭现有订单的余额。为了确定是偶数还是奇数的订单 被关闭,我使用了以下公式:

double x, y; --------------------------------- 假设
x=MathFloor(OrderLots()/0.02); --------- a. If lots 0.04/0.02=2 --- b. If lots 0.03/0.02=1
y=x*0.02; ---------- a.2*0,02=0,04 --- б.1*0.02=0.02
if (y==OrderLots())---------- а.0.04==0.04 --- b. 0.02!=0.04
XLots=y;如果相等,则XLots得到y的值

这就可以了(我想不出更好的方法来划分偶数/多数,问的时候也没有得到提示)。

接下来,实际的函数调用(我根据你的函数做的)
ClOrdProf=GetProfitFromDateInCurrency("", -1, -1, XTime, XLots);

而我徒劳地试图在你的函数中加入条件,即如果手数是偶数,必须计算利润。

double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0, double lt=-1)
{
double p=0;
int i, k=OrdersHistoryTotal()。

如果(sy=="0")sy=符号();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY){
if ((OrderSymbol()==sy || sy==")&& (op<0 || OrderType()==op)){
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime() ){
if (OrderLots()==lt) {
p+=OrderProfit()+OrderCommission() +OrderSwap();
}
}
}
}
}
}
}
return(p);
}

它不想计算。
1.我是不是在函数的某个地方错了?
2.订单被OrdCloseBy关闭的事实会不会有影响?

 
让我们假设int lt 参数 取三个标志值
-1 所有订单,0 - 偶数手,1 - 奇数手,然后
替换
if (OrderLots()==lt) {
p+=OrderProfit()+OrderCommission() +OrderSwap()

}

to

if (lt == -1){
p+=OrderProfit
()+OrderCommission()+OrderSwap() 。
} else {
int test = OrderLors() * 100;
if (lt == test % 2) {
p+=OrderProfit()+OrderCommission()+OrderSwap()。
} else {
p+=OrderProfit()+OrderCommission()+OrderSwap()。
}
}
 
keekkenen писал(а)>>
比方说,在GetProfitFromDateInCurrency()函数中 参数 ,需要三个标志


谢谢你,你用模子计算地段的方法是正确的,我以后会用它...但有趣的是,事实证明,我提炼的函数在某种程度上是有效的。我添加了Alert来查看 "p+="的变化,它能正确计算一切。但我们要从中获取信息的值ClOrdProf不会显示出来:Alert ("ClOrdProf=",ClOrdProf);。在代码中,它看起来像这样。
int start()
{
........................
bool
ClOrdProf=false; //逻辑值
........................
ClOrdProf=GetProfitFromDateInCurrency(",-1,-1,XTime,XLots); //函数调用
如果(ClOrdProf==true)
Alert ("ClOrdProf=",ClOrdProf); - 它在日志中没有更新。
.........................
return; //从start()中退出。
}
// 用于计算平仓订单利润的函数
double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0, double lt=-1)
{
double p=0。
int i, k=OrdersHistoryTotal();

如果(sy=="0")sy=符号()。
for (i=0; i<k; i++) {
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
如果((OrderSymbol()==sy || sy==")&& (op<0 || OrderType()==op)){
如果(OrderType()==OP_BUY || OrderType()==OP_SELL) {
如果(mn<0 || OrderMagicNumber()==mn) {
如果(dt<OrderCloseTime()){
如果(OrderLots()==lt) {
p+=OrderProfit()+OrderCommission()+OrderSwap()。
Alert ("p=", p); - 在日志中更新
}
}
}
}
}
}
}
return(p)。
}
我搞不清楚哪里出了问题......

 

有趣,不是吗,有趣......对你甚至对我都很有趣......(弗拉基米尔-塞米扬诺维奇)
本来ClOrdProf不是一个bool,而是一个double。应该有 "if (ClOrdProf>0 || ClOrdProf<0)" - 第二部分,以 "或 "开头,用于计算负利润的情况......我称之为 "洗眼"--自己没有马上看到表面上的东西。
感谢keekkenen 在计算奇数/偶数地段方面的帮助。
感谢伊戈尔,为他的功能升级提供了可能。

 
KimIV >>:

Функция TicketNearPos().

Эта функция возвращает тикет ближайшей к рынку позиции. В качестве критерия "близости" позиции выступает минимум расстояния в пунктах между ценой открытия позиции и текущей рыночной ценой. Отбор учитываемых позиций задаётся внешними параметрами:

  • sy - Наименование рыночного инструмента. Если задать этот параметр, то функция учтёт позиции только заданного инструмента. Значение по умолчанию - "" означает любой рыночный инструмент. Значение NULL означает текущий инструмент.
  • op - Торговая операция, тип позиции. Допустимые значения: OP_BUY, OP_SELL или -1. Значение по умолчанию -1 означает любую позицию.
  • mn - Идентификатор позиции, MagicNumber. Значение по умолчанию -1 означает любой идентификатор.
ЗЫ. Во вложении скрипт для тестирования функции TicketNearPos().
if (pp == 0) 
{return (ti);}
我已经注意到TypeNearPos函数在满足条件时的一个错误。
市场价格=未平仓订单价格,那么这个订单就不再被这个函数所考虑。
我不得不在代码中添加这个简单的条件。
这个条件也将有助于类似的函数TypeNearPos()和PriceOpenNearPos()。