//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. 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);
}
Burada parti adım büyüklüğüne böler, kalanı atar, sonra bu parti adımlarından kaçının ortaya çıktığını alır.
burada bir hata olabilir.
örneğin, değeri fonksiyonda yerine koyarız: 7 lot. komisyoncunun minimum lot büyüklüğü 5 ve lot adımı 2'dir.
7'yi partinin adımına bölecek. tam parça sayısını alacaktır. Ve yine partinin adımıyla çarpın. Sonuç 6 lot olacaktır. Ve bu ciltle bir sipariş açmaya çalışacak. Ancak bir sipariş yalnızca 5, 7, 9 vb. Hacim ile açılabilir.
Partimizden (7) minimum parti büyüklüğünü (5) atmak daha iyi olur. Ve geri kalanıyla çalışın.
geri kalanı ile işlevde sahip olduğu tüm eylemleri gerçekleştirin.
kaç tam adım olduğunu say, bir çok adımın boyutu. Ardından adım sayısını parti adım boyutuyla çarpın. 2 alıyoruz.
daha sonra bu ikiliyi tekrar minimum partinin (5) boyutuna ekliyoruz. 5+2=7 çıkıyor.
Ama harika bir örnek veriyorum. şimdi komisyoncular 0.01'lik minimum lot ve lot adımına sahip veya minimum lot ve lot adım 0.1
Bazı nedenlerden dolayı terminal hata göstermiyor)
Ama kendi başına?
Bazı nedenlerden dolayı terminal hata göstermiyor)
Peki ya terminal? Programınızdaki ciltlerin derecesini dikkate almalısınız.
0,000001, 0,12345678 veya 100000,1 gibi çok sayıda pozisyon açmak için programlı olarak bir emir göndermeyi deneyin.
Ama kendi başına?
Çok fazla 0.12345678 olan bir pozisyon açmak için programlı olarak bir emir göndermeyi deneyin
0.12 lotu ile açılır.
Mesele normalleştirmek ya da normalleşmemek.
Bunu dene.
lot adımının sıfırdan büyük veya daha az olması ne fark eder.
Artem, belki - peki, onlar?
uyu.
0.12 lotu ile açılır.
Mesele normalleştirmek ya da normalleşmemek.
Anladım zaten. Bunun bununla ne alakası var, hangi fiyata açtınız, acı çektiniz mi?
Anladım zaten. Bunun bununla ne alakası var, hangi fiyata açtınız, acı çektiniz mi?
Forumdaki yazılarınızı okuduğumda, "bu kişinin beyni zayıf" diye düşünüyorum.
Bunu dene.
Burada parti adım büyüklüğüne böler, kalanı atar, sonra bu parti adımlarından kaçının ortaya çıktığını alır.
burada bir hata olabilir.
örneğin, değeri fonksiyonda yerine koyarız: 7 lot.
komisyoncunun minimum lot büyüklüğü 5 ve lot adımı 2'dir.
7'yi partinin adımına bölecek. tam parça sayısını alacaktır. Ve yine partinin adımıyla çarpın. Sonuç 6 lot olacaktır. Ve bu ciltle bir sipariş açmaya çalışacak.
Ancak bir sipariş yalnızca 5, 7, 9 vb. Hacim ile açılabilir.
Partimizden (7) minimum parti büyüklüğünü (5) atmak daha iyi olur. Ve geri kalanıyla çalışın.
geri kalanı ile işlevde sahip olduğu tüm eylemleri gerçekleştirin.
kaç tam adım olduğunu say, bir çok adımın boyutu. Ardından adım sayısını parti adım boyutuyla çarpın. 2 alıyoruz.
daha sonra bu ikiliyi tekrar minimum partinin (5) boyutuna ekliyoruz. 5+2=7 çıkıyor.
Ama harika bir örnek veriyorum.
şimdi komisyoncular 0.01'lik minimum lot ve lot adımına sahip
veya minimum lot ve lot adım 0.1