//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 16.05.2008 |//| Описание : Возвращает нормализованное значение торгуемого лота. |//+----------------------------------------------------------------------------+//| Параметры: |//| lo - нормализуемое значение лота. |//| ro - способ округления ( False - в меньшую, |//| True - в большую сторону) |//| sy - наименование инструмента ("" или NULL - текущий символ) |//+----------------------------------------------------------------------------+double NormalizeLot(double lo, bool ro=False, string sy="") {
double l, k;
if (sy=="" || sy=="0") sy=Symbol();
double ls=MarketInfo(sy, MODE_LOTSTEP);
double ml=MarketInfo(sy, MODE_MINLOT);
double mx=MarketInfo(sy, MODE_MAXLOT);
if (ml==0) ml=0.1;
if (mx==0) mx=100;
if (ls>0) k=1/ls; else k=1/ml;
if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;
if (l<ml) l=ml;
if (l>mx) l=mx;
return(l);
}
谢谢你。
警告
我的母语是乌克兰语。但感谢你的关注。
帮助!如果我有两个吊坠,其中一个被 "获利"关闭,我需要删除第二个吊坠。我怎么写呢?代码中的错误在哪里?
晚上好(我在以前的帖子中忘记打招呼了)。你能告诉我用哪个函数来做以下事情吗?在专家顾问中,指标在当前的蜡烛上开了一个订单(让它变成数字=9)。如果在开盘后,它(指标)重新绘制(而收盘后蜡烛9没有出现),那么我需要在收盘后将蜡烛9的订单关闭。
有输入参数。
bool Mart - 如果为真,意味着在一个停止上有一个关闭的订单,因此做了一个加倍。
TradeInf -交易许可,如果为真,意味着没有交易的订单,我们可以交易)
有以下代码:
if (Mart == true && TradeInf==true)
{
Alert("double the lot");
LotS=NormalizeDouble(LotS*martin,2);
Alert("lot size",LotS);
}
if (Mart == false && TradeInf==true)
{
Alert("Reset lot");
LotS=lot;
}
然后在OpenOrder命令中,批量大小=LotS。
因此,如果它发现一个地段关闭的地段,地段大小变成了-9315605757223323600
为什么? 什么原因?
你好,我正在根据不同的原则从一个平衡值中计算出很多...
我最后得到的数字是0.2345,我如何在不四舍五入的情况下削减双倍,我是说。
到一位数 - 0.2
到两位数 - 0.23
到三 - 0.234,以此类推...
你好,我正在根据不同的原则从一个平衡值中计算出很多...
我最后得到的数字是0.2345,我如何在不四舍五入的情况下削减双倍,我是说。
到一位数 - 0.2
到两位数 - 0.23
到3-0.234等...
double lot =NormalizeDouble(LOT,2)
批量 - 用于下订单
LOT - 订单计算公式
"2" - 四舍五入到小数点后2位。
这是违反圆规的,让我们等待老同志们的意见。
呃...先生们。你不能把这样的事情正常化......。:)这里有一点帮助。