//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
由于某些原因,终端不显示错误)
你不能自己做吗?
由于某些原因,终端没有显示错误)
终端与此有什么关系?你必须在你的计划中考虑到量的分级。
尝试以编程方式发送订单,以0.000001手,或0.12345678手,或100000.1手等开仓。
你不能自己做吗?
试着发送一个程序化的订单,打开一个 手数为0.12345678的仓位。
以0.12号地块开盘。
问题是,是否正常化或不正常化。
试试这个。
地段间距比零或更小有什么区别。
Artem,你为什么不把它们忘掉呢?
去睡觉。
以0.12的手数开盘。
问题是正常化或不正常化。
我已经厌烦了。这批货与他开出的价格有什么关系呢,你这个病人?
我已经厌烦了。这批货与你开出的价格有什么关系呢,你这个病人?
当我在论坛上看到你的帖子时,我想 "这个人的大脑很脆弱"。
试试这个。
它在这里除以手数大小,丢弃剩余部分,然后取其中的多少手数。
这里可能有一个错误。
例如,我们把数值放在函数中:7手。
该经纪人的最小手数为5,手数为2。
他将用7除以地段增量。 他将采取整数部分的数量。然后再乘以地段增量。结果将是6手。 他将尝试用这个量开立一个订单。
但是,只有在5、7、9等量级的情况下才能打开订单。
最好是用我们的地块(7)减去最小的地块面积(5)。并带着剩余的部分去工作。
用余下的部分执行所有行动,即它有一个功能。
数一数有多少个完整的台阶,地段台阶的大小。然后将步骤数乘以批量步骤大小。这给我们带来了2。
然后将这个2再次加到最小手数(5)上。结果是5+2=7。
但这是一个奇妙的例子。
经纪商现在的最小手数和手数增量为0.01
或最小手数和手数增量为0.1