任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 113

 
hoz:


事实上,是的。也许现在已经太晚了,但我不明白。这基本上是以pps为单位的利润。这是从开盘到收盘的距离。那么为什么这个表达方式是错误的呢?

因为我们必须除以,这个表达的结果是
 

我开始有点自以为是了......:)问题是。

1.有一个0.1手的未结头寸

2.它的止盈值是50点。

3.我根据公式PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE)来计算其潜在利润。

4.从计算中我得到的潜在利润是5美元(0.1*50*1.0)。

该位置处于红色,在某一时刻,又有一个平均买盘打开,但有0.2手

1.我计算了这两个位置的收支平衡。按照要求,该功能已经使用了很长时间,到目前为止,我没有任何抱怨。

//+----------------------------------------------------------------------------+
/*
Расчёт уровня БУ для множества по одному инструменту:
сумма лотов = суммарная позиция (СП)
стоимость тика СП = СТ
профит СП = ПСП
Формула расчёта довольно проста:
КП = ПСП / (СТ * СП)
В которой узнаём количество пипс (КП) до уровня БУ относительно текущей цены (ТЦ) символа.
И подставив КП в формулу БУ = ТЦ - КП * Point получаем уровень цены БУ.
В зависимости от направления СП выбирается прибавлять либо отнимать от ТЦ.
*/
double PriceWL(int op, int m1, int m2, double &ll) {
   double Res, pp, pt, tic, NumPP, Prof=0, SumLot=0.00000001;
   int i;
   
   pt =MarketInfo(sy,MODE_POINT);
   tic=MarketInfo(sy,MODE_TICKVALUE);                          // Стоимость тика СТ
   for (i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue;
         if (OrderMagicNumber()==m1 || OrderMagicNumber()==m2) {
            Prof+=(OrderProfit()+OrderSwap()+OrderCommission());  // Суммарный профит позиций ПСП
            SumLot+=OrderLots();                                  // Суммарный лот позиций    СП
            }
         }
      }
   SumLot=MathAbs(NormalizeLot(SumLot));
   NumPP=MathAbs(Prof/(tic*SumLot));                           // Количество пунктов до уровня бу КП
   if (op==0) Res=Ask+NumPP*pt;
   if (op==1) Res=Bid-NumPP*pt;
   ll=SumLot;
   return(Res);
}
//+----------------------------------------------------------------------------+

2.完美。你已经计算出收支平衡的水平,但...如果你把这两个位置的代币放在上面,它们将以零点收盘。好的,我想。现在我需要在这个级别的BU上添加我需要的点数,以获得总的利润,等于之前计算的-5美元。

3.在这里,我的大脑出现了堵塞。我所做的:我取5美元,除以这两个仓位的总手数(0.1 + 0.2 = 0.3),乘以TICK_VALUE。

我有5/(0.3*1.0) = 16.6666然后我把它乘以点(0.00016),再加到盈亏平衡价格。

4.完美。收益被转移到了那里,但在我看来,在这个水平上收盘的两个拜斯的总利润不等于5美元--在我看来是更少。这可以从测试图表中看出。它清楚地表明,当一个仓位关闭时,余额的增加要比在计算的总取款水平上关闭多个仓位时大得多(你可以通过图表上权益线的出现看到这些地方)。该图表。


我哪里错了?

我明白,你可以打印总利润,但...我想了解我在计算中可能出错的地方,而不是变量的价值。我已经把它们打印出来了。

 
semiromid:

我有一个由5位数组成的价格。例如:1.3221。


它意味着4位数。指小数点后的4或5。如果是五位数,则是,例如,132210。
 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

各位程序员,请告知如何将EA与指标相结合?

例如,我有一个简单的机器人mo_bidir.mq4,它使用自己的算法进行交易,我希望它使用自己的算法打开交易,但在3个MA信号之后

例如 ,在 信号 -三条移动平均线

FastEMA>MediumEMA>SlowEMA(趋势 上升) - 机器人 买入

FastEMA<MediumEMA<SlowEMA(趋势 下降) - 博特 卖出

Inp_Signal_ThreeEMA_FastPeriod = 8;

Inp_Signal_ThreeEMA_MediumPeriod = 38;

Inp_Signal_ThreeEMA_SlowPeriod= 48;

我想让我的专家顾问在5分钟的时间框架上进行交易,而指标则从每日或4小时的时间框架上发出信号,我希望能够在机器人的设置中改变时间框架。

\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

我很抱歉重复了,但至少告诉我在哪个论坛的主题中申请,或者我应该创建一个新的主题?

我不知道该怎么做。

 
这是为你准备的地方:工作
 

大家好。你能解释为什么OrderSend没有开仓 吗?

if (NormalizeDouble(Open[0],Norm)>ma && NormalizeDouble(Bid,Norm)<=ma)

      {

      if (CheckFiltr()>=Filtr) 

         {

         Print (CheckFiltr()+" Buy"); <= Это в журнале есть, значит должна открыться сделка.

         for (i=0;i>5;i++)

            {

            res=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-Sl*Point,0,"OpenBuy",Magik,0,Green);

            Print ("Проверка Бай "+i); <= Этого в журнале нет.

            if (res>0) break;

            Print (GetLastError()); <= Этого в журнале нет.

            Sleep (5000);

            }

         }

      }   
 
for (i=0;i<5;i++)
 
artmedia70:

我开始有点自以为是了......:)问题是。

1.有一个0.1手的未结头寸

2.它的止盈值是50点。

3.我根据公式PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE)来计算其潜在利润。

4.从计算中我得到的潜在利润是5美元(0.1*50*1.0)。

该位置处于红色,在某一时刻,又有一个平均买盘打开,但有0.2手

1.我计算了这两个位置的收支平衡。按照要求,该功能已经使用了很长时间,到目前为止,我没有任何抱怨。

2.完美。你已经计算出收支平衡的水平,但...如果你把这两个位置的代币放在上面,它们将以零点收盘。好的,我想。现在我需要在这个级别的BU上添加我需要的点数,以获得总的利润,等于之前计算的-5美元。

3.而这正是我的思想被卡住的地方。我所做的:我取5美元,除以这两个仓位的总手数(0.1 + 0.2 = 0.3),乘以TICK_VALUE。

我有5/(0.3*1.0) = 16.6666然后我把它乘以点(0.00016),再加 到盈亏平衡价格。

4.完美。收益被转移到了那里,但在我看来,在这个水平上收盘的两个拜斯的总利润不等于5美元--在我看来是更少。这可以从测试图表中看出。它清楚地表明,当一个仓位关闭时,余额的增加要比在计算的总取款水平上关闭多个仓位时大得多(你可以通过图表上权益线的出现看到这些地方)。该图表。


我哪里错了?

我明白,你可以打印总利润,但...我想了解我在计算中可能出错的地方,而不是变量的价值。我已经把它们打印出来了。

即使职位是卖出?
附加的文件:
mr01.mq4  6 kb
 
FAQ:

for (i=0;i<5;i++)

请原谅,解释一下这里的错误是什么。我搞不清楚。

 
pako:
即使职位是卖出?

我说的是买入头寸。你不需要如此细致入微。自然,对于塞尔的位置,我带走了。