Вопрос: как сделать так ,чтобы эксперт мог открыть только одну позицию?
int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ko=0, ot;
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot>1 && ot<6) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) ko++;
}
}
}
}
return(ko);
}
использую это примерно так:
if(NumberOfOrders(NULL)==0)
{
Print("Вошли в цикл");
Print("Покупаю");
NumderOrder=OrderSend(Symbol(),OP_BUY,lot,Ask,3,Ask-50*Point,Ask+50*Point,"1",0,0,Red);
Print(GetLastError());
}
В результате он все равно открывает несколько подряд не закрыв старую. Не могу понять в чем дело. Помогите плиз.
如果你已经根据设定的风险初步定义了StartBalance与StarLots的比例,那么就必须确定股权价值。
如果(AccountEquity()<StartBalance) 补仓=(AccountBalance()+(StartBalance-AccountEquity()))*新手/星级手数
这不包括AccountCredit()。当然,如果我对你的理解正确的话。
那里已经给出了一个公式。
你可以用公式计算出所需的(额外)体积。V(附加)= (投资总额/股本)*地段
在哪里?
SumInv- 新增加的数量 - 它的大小应该是以某种方式知道的,以编程方式计算出的特定时间点(以前知道)。
净值- 账户在同一时间点的净值 - 该值从获取交易账户信息的功能中获得。
手数 - 早期(开始时)购买的资产数量,比方说1手。
这意味着,为了纠正位置,你需要知道变量SumInv...
在不等于零的前提下,解决这个变量的程序化计算的最好方法是什么?
该公式已经在那里给出。
你可以用公式计算出所需的(额外)体积。V(extra) = (SumInv / Equity) * Lots
在哪里?
SumInv- 新增加的数量 - 它的大小应该是以某种方式知道的,以编程方式计算出的特定时间点(以前知道)。
净值- 账户在同一时间点的净值 - 该值从获取交易账户信息的功能中获得。
手数 - 早期(开始时)购买的资产数量,比方说1手。
这意味着,为了纠正位置,你需要知道变量SumInv...的值。
只要这个 变量不为零,解决这个变量的程序化计算的最好方法是什么?
如果你不知道你想增加多少手的起始手数,我不知道该以什么为基础进行计算。这纯粹是一个人为因素。
SumInv= "我想增加我的余额x英镑" + StartBalance-Equity
还是你不知道要依靠的最佳起始平衡? 它必须根据止损的大小和杠杆率来计算。
在我的EA中,所有的计算都是基于止损的大小,因此有最佳的起始余额(它不一定等于初始余额),然后有一个自动计算的起始手。
当你不知道要增加多少手的起拍价时,我不知道该怎么开始。这纯粹是一个人为因素。
SumInv= "我想增加我的余额x英镑" + StartBalance-Equity
或者你不知道最佳的起始平衡? 它必须从止损和杠杆的大小来计算。
在我的EA中,所有的计算都是基于止损的大小,因此,最佳的起始余额(它不一定等于初始余额),然后自动计算起始手。
一切都是已知的。根据上述公式,初始手数与存款的比例增加。再次,请阅读链接 中的信息--在存入/提取资金时对仓位量的调整。
你,如果你在这个话题上--就试着回答这个问题:如何确定软件(使用算法,或任何公式,如果你不能直接到账户信息 功能)-- 在一天中的什么时间(以前已知的)有任何添加到交易账户(例如,在00点)。计算上述公式中的额外体积所需的其他变量是已知的,这些变量是为了补充上一个(起始)体积。
伙计们,告诉我...
这都是众所周知的。根据上述公式,初始手数与存款的比例增加。再次阅读链接 信息--当你存入/提取资金时对头寸量的调整。
你,如果你在这个话题上--就试着回答这个问题:如何确定软件(使用算法,或任何公式,如果你不能直接到账户信息 功能)-- 在一天中的任何(以前已知的)时间(比如说在00点)是否有任何添加到交易账户。计算上述公式中的额外体积所需的其他变量是已知的,这些变量是为了补充上一个(起始)体积。
伙计们,提示一下...
现在很清楚了。假设我们需要以编程方式计算在过去的一天中是否有补货/取货的情况。我在此附上指标。你只需要输入计算时间段开始时的余额和计算天数。我希望现在我对你的理解是正确的。
大家好!
我又和我的指标在一起了。在我的老朋友的建议下,我试图构建一个循环,计算一个线点的值,并将这些值填充到指标的数组中。
它似乎一个接一个地弄好了。一起挂断了终端:=()
//for (i=Vnf2;i>0;i--)
// {int k=Vnf2;
//ArrayResize(Buf_DN,Vnf2+1)。
// Buf_DN[i]= EquationDirect(Vnf2,VMF2,Vnf1,VMF1,k)。
// k--;
// }
一个小错误,但它仍然挂在这个变体中
int k=Vnf2。
for (i=Vnf2;i>0;i--)
// {
//ArrayResize(Buf_DN,Vnf2+1)。
// Buf_DN[i]= EquationDirect(Vnf2,VMF2,Vnf1,VMF1,k)。
// k--;
// }
你想计算的是挂单 的数量,而不是未结市场 头寸的数量。