[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 207

 

每1手保证金的计算非常简单。

  double МАРЖА=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
  double МАРЖАИНИ=MarketInfo(Symbol(),MODE_MARGININIT);
  double МАРЖАПОДД=MarketInfo(Symbol(),MODE_MARGINMAINTENANCE);
  double МАРЖАЛОК=(MarketInfo(Symbol(),MODE_MARGINHEDGED)*2)/MarketInfo(Symbol(),MODE_LOTSIZE);

返回值是以存款的货币为单位。

请注意,它们可能会返回0,这是常态。

一些交易台不使用初始化和/或支持保证金。

他们还利用重叠的 "零边际"...


信息型计算的重叠,原则上,选择。

  string МАРЖАЛОКИД="na";
  if( МАРЖАЛОК==0)    МАРЖАЛОКИД="0";
  if( МАРЖАЛОК==1)    МАРЖАЛОКИД="1";
  if( МАРЖАЛОК==0.5)  МАРЖАЛОКИД="1D";
  if( МАРЖАЛОК==2)    МАРЖАЛОКИД="2";  
 
kombat >> :

每手保证金的计算非常简单:....

这不是他想要的。他需要按工具分别计算未结订单的保证金。就是说,按票据的手数相加,再乘以票据的保证金。

 
granit77 >> :

这不是他想要的。他需要按工具分别计算未结订单的保证金。这意味着按票据的手数相加并乘以票据的保证金。

嗯,这很简单,每个乐器都有自己的summolot*margin

我们知道利润率,我们知道毛利。

double SumLot(){ double buy=0, sell=0, sl; int y;
for( y=0; y<OrdersTotal(); y++) {OrderSelect( y, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()==0) buy+=OrderLots();
if(OrderSymbol()==Symbol() && OrderType()==1) sell+=OrderLots();
} return( buy- sell);}
 
kombat писал(а)>>

每1手保证金的计算非常简单。

返回值是以存款的货币为单位。

请注意,它们可能会返回0,这是常态。

一些交易台不使用初始化和/或支持保证金。

此外,还使用了 "零利润 "的重叠...

信息型计算的重叠,原则上 是一个选项。

谢谢你。

初始化和支持性保证金与正常保证金的区别是什么 - 它们的用途是什么?

 
Finbest >> :

谢谢你。

初始化和支持性保证金与常规保证金有什么区别--它们的用途是什么?

这就是期货工具箱。

m.init = 开盘所需的保证金

m.subd = 打开后显示

计算方法相当复杂和具体,所以我以交易条件为指导。

m.subd通常是m.ini的~75%,这里 有例子。

 

另一个选择是按工具分别查看利润率。

(稍作调整的iExposure )

附加的文件:
 

你好。请给予帮助。

我已经写了这个程序......它不工作......。


double ves[][6], hour[][6];
ArrayCopyRates(ves, Symbol(),Period());//数组拥有图表中的所有数据

int day= Day();
int hou= Hour();
da= day;
for (; q<= da; q++, w--){
if (TimeDay(ves[q][0])== w && TimeHour(ves[q][0])== hou){
ArrayCopy(hour, ves, e, q);
e++;
}
}

我有两个阵列。ves阵列是一个时间阵列。

我需要什么........

取当前小时,从VES复制到小时,所有6个数据。

以昨天的日子为例,同一小时(昨天的日子)从ves复制到小时。

等等...

 

伙计们,帮帮我吧,我搞不清楚怎么做。

我有一个循环,计算LOW和HI之间的水平,有步骤的Step。

for ( double c = LOW; c < HI; c = c + Step)

现在我需要把每个级别的数据储存在某个地方,这样以后就可以很容易地把它拉出来,与当前的价格进行比较。很请以代码的形式,不是因为懒惰,而是因为在看到例子之前,我还是不明白如何去做。谢谢你!

 

尊敬的鉴赏家们,你们好。我一直在问你一些在教科书和论坛上找不到答案的问题。这种情况怎么可能呢?

为什么在测试中,显示利润为0,在第三次交易中,手数突然增加?

它是这样计算的 Lots=MathMin(20,NormalizeDouble(MathMax(Lots,AccountEquity( ) /3000),1))。

测试


符号 EURCHF(欧元对瑞士法郎)
期间 1分钟 (M1) 2009.08.30 23:02 - 2009.08.31 09:34 (2009.08.30 - 2009.09.05)
模型 所有刻度线(基于所有最小的可用时间段的最准确方法)
参数 min=0.1。

历史上的酒吧 1519 模拟的蜱虫 2156 建模质量 24.95%
图表不匹配错误 0




初始存款 450.00



净利润 -8.00 利润总额 0.00 全部损失 -8.00
盈利能力 0.00 预期报酬率 -2.00

绝对缩减 32.00 最大缩水 38.00 (8.33%) 相对缩减 8.33% (38.00)

交易总额 4 空头头寸(赢利百分比) 1 (0.00%) 多头头寸(赢利百分比) 3 (100.00%)

盈利的交易(占全部的百分比) 3 (75.00%) 亏损交易(占全部的百分比) 1 (25.00%)
最大的 有利的贸易 0.00 亏损交易 -8.00
平均值 有利的交易 0.00 交易损失 -8.00
最大数量 连赢 3 (0.00) 连续损失(亏损) 1 (-8.00)
最大 连续盈利(赢的次数) 0.00 (0) 连续损失(损失次数) -8.00 (1)
平均值 连续赢利 3 连续损失 1

时间 类型 秩序 卷宗 价格 S / L T / P 盈利 平衡
1 2009.08.31 00:16 购买 1 0.30 1.5161 1.5127 1.5163
2 2009.08.31 00:37 关闭 1 0.30 1.5161 1.5127 1.5163 0.00 450.00
3 2009.08.31 00:44 购买 2 0.30 1.5158 1.5124 1.5161
4 2009.08.31 02:58 关闭 2 0.30 1.5158 1.5124 1.5161 0.00 450.00
5 2009.08.31 03:14 购买 3 0.40 1.5152 1.5118 1.5154
6 2009.08.31 03:30 关闭 3 0.40 1.5152 1.5118 1.5154 0.00 450.00
7 2009.08.31 06:45 出售 4 0.40 1.5151 1.5185 1.5149
8 2009.08.31 08:18 关闭 4 0.40 1.5153 1.5185 1.5149 -8.00 442.00








































































 
001 >> :

伙计们,帮帮我吧,我搞不清楚怎么做。

我有一个循环,计算LOW和HI之间的水平,有步骤的Step。

for ( double c = LOW; c < HI; c = c + Step)

现在我需要把每个级别保存在某个地方,这样以后就可以很容易地把它拉出来,与目前的价格进行比较。很请以代码的形式,不是因为懒惰,而是因为在看到例子之前,我还是不明白如何去做。谢谢你!

作为一种选择。

double c, levels[];
int nCount = 1+( HI - LOW)/ Step;
ArrayResize( levels, nCount);

for ( c = LOW, nCount = 0; c < HI; c += Step, nCount++) {
    levels[ nCount] = c;
}

// Use:
for (int j = 0; j < nCount; j++) {
    if ( levels[ j] > ...) {
        //...
    }
}