Hatalar, hatalar, sorular - sayfa 734

 
Vitya :
Belki PositionTotal() gereklidir?

Ve eğer OrdersTotal() 'a şu anda kaç sipariş verildiğini sorarsam, pozisyonun bununla ne ilgisi var?

OnTrade()'de bu bilgiyi ne talep ediyorum, emrin var olduğu an hiçbir şekilde atlanamıyor.

Ama aslında, bu anın bir şekilde kaçırıldığı ortaya çıkıyor ve henüz düzen olmadığında veya artık olmadığında istekler geçiyor.

Ancak OnTrade()'de olduğu an hiçbir şekilde yakalanmaz veya OrdersTotal()'ın bir varyantı olarak utanmadan yalan söyler.

 

Kodun çarpıklığı hakkında herhangi bir şikayet olmaması için, komut dosyasını bir danışman olarak revize ettiğim MetaQuote kodu burada.

OnTrade() işlevi eklendi ve komut dosyası kodu OnInit()'e taşındı.

Tek bir baskı, sipariş olduğuna dair bir mesaj göstermedi.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 

Bunu yalnızca MetaTrader 5'teki İşlem Olayları makalesinde cevaplayabilirim:

Заключение

MetaTrader 5 alım satım ve analitik platformundaki tüm işlemler asenkron olarak gerçekleştirilir ve alım satım hesabındaki tüm değişikliklerle ilgili mesajlar birbirinden bağımsız olarak gönderilir. Bu nedenle, "Tek istek - Tek işlem olayı" kuralına göre tek bir olayı takip etmeye çalışmamalısınız. Trade olayının gelmesiyle tam olarak neyin değiştiğini belirlemeniz gerekiyorsa, OnTrade işleyicisinin her çağrısında, tüm anlaşmaları, pozisyonları ve siparişleri analiz etmeniz ve bunları ortaya çıkmadan önceki durumla karşılaştırmanız gerekir.
Bu, yakalamaya çalıştığınız siparişin önceden HistoryOrdersTotal kullanılarak aranmış olması gerektiği anlamına gelir.
 
Rosh :

Bunu yalnızca MetaTrader 5'teki İşlem Olayları makalesinde cevaplayabilirim:

Bu, yakalamaya çalıştığınız siparişin önceden HistoryOrdersTotal kullanılarak aranmış olması gerektiği anlamına gelir.

Aslında bu makale ve rehberlik. Şu sorunun cevabının en altına inmek istiyorum: Bir ticaret olayı nasıl olur da emrin verildiği ancak henüz uygulanmadığı anı atlar?

İşlem olayları, aşağıdaki durumlarda sunucu tarafından oluşturulur:

  • aktif siparişlerde değişiklik,
  • pozisyon değişiklikleri,
  • işlemlerdeki değişiklikler
  • ticaret geçmişindeki değişiklikler.

OrderTotal() öğesinin hatalı olduğundan şüpheleniyorum. Ama bunu bu işlevsellikle kanıtlayamam.

Her ne kadar bir seçenek olarak, OrderTotal'ın () verileri düşündüğüm yerde (yani sunucuda değil) aldığını reddetmiyorum.

 
Urain :

Aslında bu makale ve rehberli. Şu sorunun cevabının en altına inmek istiyorum: Bir ticaret olayı nasıl olur da emrin verildiği ancak henüz uygulanmadığı anı kaçırır?

Sadece Ticaret etkinliği geldiğinde, sipariş zaten verilmiş ve zaten yürütülmüştür. Dolayısıyla aktif olanlar arasında değil, tarihe geçti bile.
 
Rosh :
Sadece Ticaret etkinliği geldiğinde, sipariş zaten verilmiş ve zaten yürütülmüştür. Dolayısıyla aktif olanlar arasında değil, tarihe geçti bile.

Evet, evet, düşüncelerim bu cevabın etrafında yüzüyor.

Bu şekilde cevap veririm, sipariş verildiği anda, sunucu bir "ticaret" olayı oluşturur ve terminale gönderir, terminal aldığında, koddasipariş sayısı ile ilgili bir istek yapılır, ancak bu istek sunucuya ulaştığında, sunucu bu siparişi zaten yürütmüştür.

Başka bir açıklamam yok.

 
Urain :

İşlem olayları, aşağıdaki durumlarda sunucu tarafından oluşturulur:

  • aktif siparişlerde değişiklik,
  • pozisyon değişiklikleri,
  • işlemlerdeki değişiklikler
  • ticaret geçmişindeki değişiklikler.

OrderTotal() öğesinin hatalı olduğundan şüpheleniyorum . Ama bunu bu işlevsellikle kanıtlayamam.

Hem aktif bekleyen emirleri hem de aktif emirler listesine pozisyon açmak için emirleri dahil ettiğinizi doğru anladım mı?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
papaklass :

Ne anlama geliyor?

"Program sonlandırıldıktan sonra kullanılan belleğin bir kısmı serbest bırakılmadı" gibi bir şey. Özellikle, benzer bir mesaj, bir program yeni operatörü kullanarak dinamik bir nesne oluşturduğunda, ancak daha sonra onu silme operatörüyle silmediğinde ortaya çıkar.
 
papaklass :
... bu mesaj "Uzmanlar" sekmesinde görünür. Bu bir hata değil, bir uyarıdır. Ne hakkında uyarı?

"Hata"dan bahsetmiyorum. Bir uyarı olsun. Versiyonumu zaten bir örnekle ifade ettim. Burada başka bir tartışmaya bakın (dize sızıntıları hakkında - sayfanın sonuna kadar okuyun): https://www.mql5.com/en/forum/1111/page345#comment_54616

Durumunuzun ayrıntılarıyla birlikte SD ile iletişime geçmeniz gerekebilir.

 

Bir "yanlış anlama" buldum.

Derleyici neden ikinci değişkenin tanımını beğenmiyor b ?

Ve genel olarak, böyle bir durum nasıl çözülür?

 #property script_show_inputs

// m[a].Column[b]
input int A= 11 ;
input int B= 3 ;

#define a A
//#define b B // тут раскоментировать
#define b 3    // тут закоментировать

// размер одного элемента 4 байта
struct ArrWe
{
   float Column [b];
};

void OnStart ()
{
  ArrWe m[ 11 ]; // тут вместо "11" хочу использовать " a "
  Print ( "Размер структуры ArrWe " , sizeof (ArrWe));
   Print ( "Количество элементов 1-го измерения " , sizeof (m)/ sizeof (ArrWe));
   Print ( "Количество элементов 2-го измерения " , sizeof (ArrWe)/ 4 );   
   Print ( "Размер массива из 11 ArrWe " , sizeof (m));
}