在测试器中进行清算 - 页 4

 
Roman Shiredchenko #:

清算期间的注销可以不考虑。

例子。在清算期间,你的交易将被删除,你将得到20图格里克,在清算后,你的交易将以70的价格打开。

如果你以100的价格平仓,那么终端将显示一笔交易,利润为50图格里克。

这个问题通常发生在编写拖网或CU时。假设我们想在交易量为15+时把CUE设为+5。

如果我们从这个例子中得到数字,那么在清算前我们的止损将是+5点,清算后将是-5点。 但如果交易将在止损时关闭,我们仍将得到5轮的利润。

因此,在测试器中可以不考虑清算。

 
Aleksandr Slavskii #:

真的很简单,而且最重要的是可靠。


请原谅作者的离题,但你是否有确定清算何时结束的秘诀?

问题是这样的:开盘经纪人在清算过程中删除了挂单,而清算场并没有再次设置这些挂单。

我不知道期货的情况,但股票的清算在不同时间结束。

因此,我无法确定某一特定证券的清算结束时间。

我只是用定时器来发送订单,直到它打开。

我不喜欢这种方法,我也没有别的方法。

没关系--一起讨论和辩论--这个话题向所有人开放!!!!!。
 
Aleksandr Slavskii #:

清算期间的注销可以不考虑。

例子。在清算期间,你的交易将被删除,你将得到20图格里克,在清算后,你的交易将以70的价格打开。

如果你在100点平仓,终端将显示一笔交易,利润为50图格里克。

这个问题通常发生在编写拖网或CU时。假设我们想在交易量为15+时把CUE设为+5。

如果我们从这个例子中得到数字,那么在清算前我们的止损将是+5点,清算后将是-5点。 但如果交易将在止损时关闭,我们仍将得到5轮的利润。

这就是为什么我们可以不考虑在测试器中进行清算。

哦!多么有趣...将不得不深入地去尝试它!:-)

写道(取自文章)f-i-tion确切地从历史上的交易中计算出来,在事实上(这是谁在加号中的位置)--计算连续的减号,并在屏幕上显示--排序的ACCOUNT清算,当然不能完全它将在交易时全部正确--现在只是看它...

因此,为了准确地关闭头寸,例如,考虑到之前的清算,如果是减去--那么我们应该比较清算时的平仓利润和之前的损失值。

//+------------------------------------------------------------------+
//|                 УЧЕТ КЛИРИНГА
//+------------------------------------------------------------------+
double Calc_Clearing() // вычисление лота
  {
   bool ord;
   double TotalLot=0;
    for(int i=HistoryDealsTotal()-1; i>=0; i--)
     {
      ulong ticket=HistoryDealGetTicket(i);
      ord=HistoryDealSelect(ticket);
      if(ord && HistoryDealGetString(ticket,DEAL_SYMBOL) == _Symbol
       //  && HistoryDealGetInteger(ticket,DEAL_MAGIC) == MagicC
         && HistoryDealGetInteger(ticket,DEAL_ENTRY) == DEAL_ENTRY_OUT)
        {
         if(HistoryDealGetDouble(ticket,DEAL_PROFIT) <= 0)
           {
            TotalLot+=HistoryDealGetDouble(ticket,DEAL_VOLUME);
           }
         else
           {
            break;
           }
        }
     }
   return TotalLot == 0 ? TotalLot: TotalLot;
  }

发现一个错误 - 修复它。

TotalLot+=HistoryDealGetDouble(ticket,DEAL_PROFIT);

因此,这是插入前屏幕上的图片。

   Comment(" SPREAD текущий по символу ", _Symbol, " составляет: ", SymbolInfoInteger(_Symbol,SYMBOL_SPREAD),
    "      СВЕРКА по клирингу:  ", NormalizeDouble(Calc_Clearing(),0));

清算核对

因为还没有清算损失。

09.11.2021:所有的 "出 "都是在加号。


 
Roman Shiredchenko #:

太可怕了!有太多的错误,无法评论。

让我们换个说法。

如果你对职位感兴趣,为什么还需要交易记录?

我认为,把每笔新交易的最后一个头寸的价格写进一个变量就足够了,当清算时,通过写在变量中的价格和清算前最后一个 tick 的价格之间的差异来调整 CU。

例子。

批量=1。

double end_position=0。

第一笔交易价格为30,结束位置=30。

第二笔交易的价格 60,结束位置=45。

第三次交易价格 为90,结束位置=60


也就是说,你在60的位置有一个量为3的位置。

假设以70的价格结算,利润等于30图格里克。

double clearing_price = 70;

清算后,该仓位以70的价格开仓,但我们必须记住,该仓位的实际 价格是end_position == 60;因此,这是要计算拖曳或CUE的价格

因此,在清算过程中,填入变量

双重 校正器=0

矫正器 =清算价格-结束位置

假设你有一个CU开始时的交易是+20点,分别添加到CU函数中,CU开始是:20-校正器

而且,CU也被放在加号中,它们也必须被修正 的值所修正。

关闭任何位置校正器=0


但这只有在清算后没有部分平仓或补仓的情况下才会起作用。如果有的话,我们必须以不同的方式来做。

 
Aleksandr Slavskii #:

真的很简单,而且最重要的是可靠。


请原谅作者的离题,但你是否有确定清算何时结束的秘诀?

问题是这样的:经纪人开盘,在清算过程中删除了挂单,而清算场并没有再次设置它们。

我不知道期货的情况,但股票的清算在不同时间结束。

因此,我无法确定某一特定证券的清算结束时间。

我只是用定时器来发送订单,直到它打开。

我不喜欢这种方法,我也没有其他方法。

我也有一个开瓶器,但在期货上。我在清算结束时也有同样的问题,我不知道如何确定它,我只取19:05。

我的意思是,你可以搁置到日期,而不仅仅是今天。至少在期货方面。

 
Aleksandr Slavskii #:

1.恐怖的是!有太多的错误,无法评论。

让我们换个说法。

如果你对职位感兴趣,为什么还需要交易记录?

我认为,把每笔新交易的最后一个头寸的价格写进一个变量就足够了,当清算时,通过写在变量中的价格和清算前最后一个 tick 的价格之间的差异来调整 CU。

例子。

批量=1。

double end_position=0。

第一笔交易价格为30,结束位置=30。

第二笔交易的价格 60,结束位置=45。

第三次交易价格 为90,结束位置=60


也就是说,你在60的位置有一个量为3的位置。

假设以70的价格结算,利润等于30图格里克。

double clearing_price = 70;

清算后,该仓位以70的价格开仓,但我们必须记住,该仓位的实际 价格是end_position == 60;因此,这是要计算拖曳或CUE的价格

因此,在清算过程中,填入变量

双重 校正器=0

矫正器 =清算价格-结束位置

假设你有一个CU开始时的交易是+20点,分别添加到CU函数中,CU开始是:20-校正器

还有,CU是把一些点加进去的,它们也必须由修正 的值来修正。

关闭任何位置校正器=0


2.但这只有在清算后没有部分平仓或补仓的情况下才会起作用。如果有,我们应该以不同的方式来做。

1.谢谢你的日程安排。我想暂时不看修正器,因为我有添加和拖曳的功能,例如30点,在拖曳设置后,根据机器人的操作逻辑,可能有部分关闭。也就是说,在开仓后,我记住了开仓价,在加仓后--平均--我又记住了新的开仓价。而实质上,经纪人的清算和设置新的开盘价将不重要。

我的理解是正确的,这种方法也可以按照我这篇帖子中写的交易逻辑进行。

此外,如果资产的当前价格允许,将SL转移到BU+30点,从之前记忆的累积仓位价格。

而且,谁会关心你的经纪人所设定的期货的当前开仓价格呢?


2.

"但这只有在清算后没有部分关闭或填补的情况下才有效。如果有,就需要以不同的方式进行。"

我有fills...之前和之后--直到转移到BU+30点--是否真的有必要通过数组读取所有市场订单的当前平均价格,因为我们将需要

...我们需要市场订单的开盘价和每个订单的合同数量和交易量...来显示它们的总平均价格 - 转移到CU的意思是什么 - 来计算...


平均价格=((OPEN_1 * VOLUME_1)+(OPEN_2 * VOLUME_2)+(OPEN_3 * VOLUME_3)+n)/(VOL_1+VOL_2+VOL_3+n),这里发现我没有在BU中翻译SL+30点的所有总头寸 - 有必要将所有这些值写入数组还是什么?如果我们打开第N个市场订单片,我们是否应该提高这整个链条来计算所有的平均值?

或者我们可以以某种方式玩弄它。

HistoryOrderSelect ()
HistoryOrderGetTicket ()

但问题是,如何确定参与形成实际总头寸的实际市场订单循环的起点和终点?

 
Roman Shiredchenko #:

VOLUME_Price = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1+VOL_2 + VOL_3 + n),所以事实证明,我还没有把SL转化为BU + 30点的所有汇总位置 - 我应该把所有这些值写在数组里吗?如果我们打开第N个市场订单,我们必须调出整个链条,以计算所有的平均数?

唉,情况正是如此。

 

Roman Shiredchenko #:

Average_Price = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1 + VOL_2 + VOL_3 + n), 所以我没有把SL转化为BU + 30点的所有综合头寸 - 所有这些值都应该写在数组里还是什么?如果我们打开第N个市场订单片,我们是否应该提高这整个链条来计算所有的平均值?

或者我们可以以某种方式玩弄它。

但是,问题来了,如何把握参与实际总头寸形成的实际市场订单周期的开始和结束?

存储最后的平均价格就足够了。

 
JRandomTrader #:

保持最新的平均价格即可。

好的,但是如果我加注,比如说,用任何体积的东西加注--我如何真正地计算它?
 
Roman Shiredchenko #:
好的,但如果我添加,例如,任何体积 - 如何计算其实际的?

我给你看了。 以这个最后的平均价格和头寸的数量,新交易的价格和其数量。一切都将被正确计算。

原因: