PositionSelect(...)==false ise, PositionGet'te bir nokta yoktur.
Not: OrderSend sonrası pozisyon verisi hemen alınamayabilir.. uyumsuzluk hala kötü.
Memnuniyetle katılıyorum - hataları kabul etmekten utanmıyorum. Ama bakın: Blok 3'e girmeden önce, OnTick() işleyicisinin en başında, bahsettiğiniz PositionSelect() çağrılır, ancak OrderSend() yürütülmez. Kod özellikle blok 1, 2 ve 3'ün yürütülmesi arasına 1000 tiklik bir gecikme sayacı ekledi - bu eşzamansızlık içindir, bence bu, test cihazında konumu düzeltmek için fazlasıyla yeterli. Ek olarak, Blok 3'teki koşulu değiştirdim:
Ve sonunda: Haklıydın! Şimdi blok 3 çalışmıyor, bu da konumun seçilmediği anlamına geliyor. Diyalog için teşekkürler! :-)
Kaşıklar bulundu, ancak tortu kaldı: daha fazla pozisyon yoksa, pozisyonun hacmi nasıl 1'e eşit olabilir?
Belgelere uymayan şey:
Функция PositionSelect () копирует данные о позиции в программное окружение, и последующие вызовы PositionGetDouble (), PositionGetInteger () и PositionGetString ()
возвращают ранее скопированные данные. Это означает, что самой позиции может уже и не быть (или же она изменилась по объему, направлению и т.д.),
а данные этой позиции можно еще получать. Для гарантированного получения свежих данных о позиции рекомендуется вызывать функцию PositionSelect ()
непосредственно перед обращением за ними.
Yani PositionSelect'i() yanlış bir sonuçla çağırmak konum bilgisini güncellemez mi? Üzüntü!
Pre-PositionSelect olmadan PositionGet'te.
Mikhail, gecikmeli başka bir "sayfa" alalım, yoksa bir şeyler sıkıcı hale geldi. :))))
Discovery'ye ne zaman gideceksin? :)))))))
haklı değilsin Her tikte PositionSelect çağrılır ve 3. bloktaki son bilgi çıktısından önce de çalışır. Yani açıkça sebep bu değil.
Bazen hata yapıyorum ama durum bu değil açıkçası bunda)
PositionSelect'in çağrıldığı andaki konum verisi değerleri yazdırılacaktır.
OrderSend sonrası değerler güncellenmez.
PositionSelect(...)==false ise, PositionGet'te bir nokta yoktur.
Not: OrderSend'den sonra pozisyon bilgisi hemen alınamayabilir.. uyumsuzluk hala kötü.
Bazen hata yapıyorum ama durum bu değil açıkçası bunda)
PositionSelect'in çağrıldığı andaki konum verisi değerleri yazdırılacaktır.
OrderSend sonrası değerler güncellenmez.
PositionSelect(...)==false ise, PositionGet'te bir nokta yoktur.
Not: OrderSend sonrası pozisyon verisi hemen alınamayabilir.. uyumsuzluk hala kötü.
Memnuniyetle katılıyorum - hataları kabul etmekten utanmıyorum. Ama bakın: Blok 3'e girmeden önce, OnTick() işleyicisinin en başında, bahsettiğiniz PositionSelect() çağrılır, ancak OrderSend() yürütülmez. Kod özellikle blok 1, 2 ve 3'ün yürütülmesi arasına 1000 tiklik bir gecikme sayacı ekledi - bu eşzamansızlık içindir, bence bu, test cihazında konumu düzeltmek için fazlasıyla yeterli. Ek olarak, Blok 3'teki koşulu değiştirdim:
{ if ((gTicks> 3000 )&&(Step== 2 )&&( PositionSelect ())) { Print ( "INFO>> *** VOLUME=" , PositionGetDouble ( POSITION_VOLUME ), " *** ID=" , PositionGetInteger ( POSITION_IDENTIFIER ), " *** TYPE=" , EnumToString (( ENUM_POSITION_TYPE ) PositionGetInteger ( POSITION_TYPE )), " *** OrdersTotal()=" , OrdersTotal ()); Step= 3 ; return ; }} //if((gTicks>3000)&&(Step==2))Sonuç değişmedi: pozisyonu kapatma emri uygulandı ve pozisyon büyüklüğü 1'e eşit kaldı.
:-(
{ if ((gTicks> 3000 )&&(Step== 2 )&&( PositionSelect ()))derlememelidir.. PositionSelect (_Symbol)
derlememelidir.. PositionSelect(_Symbol)
derlememelidir.. PositionSelect(_Symbol)
_Symbol düzeltildi
Ve sonunda: Haklıydın! Şimdi blok 3 çalışmıyor, bu da konumun seçilmediği anlamına geliyor. Diyalog için teşekkürler! :-)
Kaşıklar bulundu, ancak tortu kaldı: daha fazla pozisyon yoksa, pozisyonun hacmi nasıl 1'e eşit olabilir?
Belgelere uymayan şey:
Yani PositionSelect'i () yanlış bir sonuçla çağırmak konum bilgisini güncellemez mi? Üzüntü!
Yani PositionSelect'i () yanlış bir sonuçla çağırmak konum bilgisini güncellemez mi? Üzüntü!
10 ay oldu bile...