[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 39

 
forexnew:

如果你已经根据设定的风险初步定义了StartBalance与StarLots的比例,那么就必须确定股权价值。

如果(AccountEquity()<StartBalance) 补仓=(AccountBalance()+(StartBalance-AccountEquity()))*新手/星级手数

这不包括AccountCredit()。当然,如果我对你的理解正确的话。


那里已经给出了一个公式。

你可以用公式计算出所需的(额外)体积V(附加)= (投资总额/股本)*地段

在哪里?
SumInv- 新增加的数量 - 它的大小应该是以某种方式知道的,以编程方式计算出的特定时间点(以前知道)。
净值- 账户在同一时间点的净值 - 该值从获取交易账户信息的功能中获得。

double AccountEquity( ) 
Возвращает сумму собственных средств для текущего счета.  


手数 - 早期(开始时)购买的资产数量,比方说1手。
这意味着,为了纠正位置,你需要知道变量SumInv...

在不等于零的前提下,解决这个变量的程序化计算的最好方法是什么?

 
Roman.:


该公式已经在那里给出。

你可以用公式计算出所需的(额外)体积V(extra) = (SumInv / Equity) * Lots

在哪里?
SumInv- 新增加的数量 - 它的大小应该是以某种方式知道的,以编程方式计算出的特定时间点(以前知道)。
净值- 账户在同一时间点的净值 - 该值从获取交易账户信息的功能中获得。


手数 - 早期(开始时)购买的资产数量,比方说1手。
这意味着,为了纠正位置,你需要知道变量SumInv...的值。

只要这个 变量不为零,解决这个变量的程序化计算的最好方法是什么?

如果你不知道你想增加多少手的起始手数,我不知道该以什么为基础进行计算。这纯粹是一个人为因素。

SumInv= "我想增加我的余额x英镑" + StartBalance-Equity

还是你不知道要依靠的最佳起始平衡 它必须根据止损的大小和杠杆率来计算。

在我的EA中,所有的计算都是基于止损的大小,因此有最佳的起始余额(它不一定等于初始余额),然后有一个自动计算的起始手。


 
forexnew:

当你不知道要增加多少手的起拍价时,我不知道该怎么开始。这纯粹是一个人为因素。

SumInv= "我想增加我的余额x英镑" + StartBalance-Equity

或者你不知道最佳的起始平衡 它必须从止损和杠杆的大小来计算。

在我的EA中,所有的计算都是基于止损的大小,因此,最佳的起始余额(它不一定等于初始余额),然后自动计算起始手。


一切都是已知的。根据上述公式,初始手数与存款的比例增加。再次,请阅读链接 中的信息--在存入/提取资金时对仓位量的调整。
你,如果你在这个话题上--就试着回答这个问题:如何确定软件(使用算法,或任何公式,如果你不能直接到账户信息 功能)-- 在一天中的什么时间(以前已知的)有任何添加到交易账户(例如,在00点)。计算上述公式中的额外体积所需的其他变量是已知的,这些变量是为了补充上一个(起始)体积。

伙计们,告诉我...

 
Roman.:

这都是众所周知的。根据上述公式,初始手数与存款的比例增加。再次阅读链接 信息--当你存入/提取资金时对头寸量的调整。
你,如果你在这个话题上--就试着回答这个问题:如何确定软件(使用算法,或任何公式,如果你不能直接到账户信息 功能)-- 在一天中的任何(以前已知的)时间(比如说在00点)是否有任何添加到交易账户。计算上述公式中的额外体积所需的其他变量是已知的,这些变量是为了补充上一个(起始)体积。

伙计们,提示一下...

现在很清楚了。假设我们需要以编程方式计算在过去的一天中是否有补货/取货的情况。我在此附上指标。你只需要输入计算时间段开始时的余额和计算天数。我希望现在我对你的理解是正确的。

附加的文件:
balans_9.mq4  6 kb
 

大家好!

我又和我的指标在一起了。在我的老朋友的建议下,我试图构建一个循环,计算一个线点的值,并将这些值填充到指标的数组中。

它似乎一个接一个地弄好了。一起挂断了终端:=()

//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--;

// }


 
Вопрос:  как сделать так ,чтобы эксперт мог открыть только одну позицию?

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());

                  }

В результате он все равно открывает несколько подряд не закрыв старую. Не могу понять в чем дело. Помогите плиз.

 
nuan:
if (ot>1      У ордеров  Buy ot=0, мож в этом дело?
 
nuan:
你正在使用Igor Kim的函数。他对命令和职位都有定义。订单是待定订单,头寸是市场头寸。
你想计算的是挂单 的数量,而不是未结市场 头寸的数量。
 
非常感谢你。