//+----------------------------------------------------------------------------+/*
Расчёт уровня БУ для множества по одному инструменту:
сумма лотов = суммарная позиция (СП)
стоимость тика СП = СТ
профит СП = ПСП
Формула расчёта довольно проста:
КП = ПСП / (СТ * СП)
В которой узнаём количество пипс (КП) до уровня БУ относительно текущей цены (ТЦ) символа.
И подставив КП в формулу БУ = ТЦ - КП * 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);
}
//+----------------------------------------------------------------------------+
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);
}
}
}
事实上,是的。也许现在已经太晚了,但我不明白。这基本上是以pps为单位的利润。这是从开盘到收盘的距离。那么为什么这个表达方式是错误的呢?
我开始有点自以为是了......:)问题是。
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美元--在我看来是更少。这可以从测试图表中看出。它清楚地表明,当一个仓位关闭时,余额的增加要比在计算的总取款水平上关闭多个仓位时大得多(你可以通过图表上权益线的出现看到这些地方)。该图表。
我哪里错了?
我明白,你可以打印总利润,但...我想了解我在计算中可能出错的地方,而不是变量的价值。我已经把它们打印出来了。
我有一个由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没有开仓 吗?
我开始有点自以为是了......:)问题是。
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美元--在我看来是更少。这可以从测试图表中看出。它清楚地表明,当一个仓位关闭时,余额的增加要比在计算的总取款水平上关闭多个仓位时大得多(你可以通过图表上权益线的出现看到这些地方)。该图表。
我哪里错了?
我明白,你可以打印总利润,但...我想了解我在计算中可能出错的地方,而不是变量的价值。我已经把它们打印出来了。
请原谅,解释一下这里的错误是什么。我搞不清楚。
即使职位是卖出?