[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 436

 
lütfen söyle bana, gülen surat gülümsüyor ama danışman açılmıyor ... doğru şekilde nasıl kurulur? ... teşekkürler!
 
zorber :

Hepinize iyi günler,

Bekleyen bir sipariş verdim (oluşturma zamanı, örneğin 11:31)
daha sonra bu sipariş tetiklenir, örneğin 12:01'de

Soru: Emir zaten piyasaya girmişse ve OrderOpenTime( ) işlevi piyasaya giriş zamanını döndürüyorsa, bekleyen bir emrin oluşturulduğu tarih ve saati nasıl öğrenebilirim.

Belki birisi bu sorunu nasıl çözeceğini biliyordur?

Şimdiden teşekkürler


MT4'teki siparişler listesinden herhangi bir şekilde.

Bir yol, maruz kalma süresini hatırlamaktır.

 
Roger :
Bir metin dosyasının nasıl düzenlendiği, nelerden oluştuğu uzun zaman önce çözülürdü. kullanarak her satırdan sonra imleç konumunu yazdırın.
int FileTell ( int tutamaç)
Her şey hemen netleşecek.

Durumun ironisi, yukarda sorduğum sorunun hemen hemen tavsiyenize denk gelen bir durum tarafından harekete geçirilmiş olması...

FileIsEnding ve FileIsLineEnding işlevlerinin nasıl çalıştığını anlamak için aşağıdaki betiği yazdım:

 //+------------------------------------------------------------------------------------------+
//|                                                                   Конец_Строки_Файла.mq4 |
//+------------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------------+
//|                         script program start function                                    |
//+------------------------------------------------------------------------------------------+
#property show_inputs                                                     //выводим перед запуском скрипта окно свойств
extern int   position= 0 ;                                                   //внешняя переменная: смещение файлового указателя ОТ НАЧАЛА ФАЙЛА (в БАЙТАХ)
//---------------------------------------------------------------------------------------- 1 -
int start()                                                               //функция start
  {                                                                       //начало start
   double Timestart= GetTickCount ();                                       //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта 
   string name= "Копия Запись чисел в файл.csv" ;                           //имя создаваемого файла
   bool h;                                                               //переменная: значение функции FileIsEnding
   bool h_l;                                                             //переменная: значение функции FileIsLineEnding
   int error;                                                             //переменная: ошибка
   int handle= FileOpen (name, FILE_CSV | FILE_WRITE , ';' );                     //открываем заданный файл n записываем туда данные
   int запись= FileWrite (handle, DoubleToStr ( 1.3584 , 4 ));                   //записываем число в файл csv (в преобразованном виде, т.е в виде текста)
   FileClose (handle);                                                     //закрываем файл
//---------------------------------------------------------------------------------------- 2 -
   handle= FileOpen (name, FILE_CSV | FILE_READ , ';' );                         //открываем заданный файл
   bool pos= FileSeek (handle,position, SEEK_SET );                           //смещаем от начала вправо указатель файла
   double чтение= FileReadNumber (handle);                                 //считываем число из текущей позиции (уже измененной функцией FileSeek) файлового указателя
   int size= FileSize (handle);                                             //вычисляем размер заданного файла
   h= FileIsEnding (handle);                                               //устанавливаем текущее значение переменной h
   h_l= FileIsLineEnding (handle);                                         //устанавливаем текущее значение переменной h_l
   error= GetLastError ();                                                 //значение ошибки, производимой функцией FileIsEnding
   if (error!= 0 ) Alert ( "Текущая ошибка " ,error);                           //если код текущей ошибки не равен 0, то получаем номер текущей ошибки
   FileClose (handle);                                                     //закрываем файл
//----------------------------------------------------------------------------------------- 3 -
   Comment ( "Размер файла " ,name, " составил " ,size, " байт" ,
           "\nФункция FileSeek вернула: " ,pos,
           "\nФункция FileReadNumber(handle) вернула: " ,чтение,
           "\nФункция FileIsLineEnding(handle) вернула: " ,h_l,
           "\nФункция FileIsEnding(handle) вернула: " ,h,
           "\nСкрипт выполнялся всего " , GetTickCount ()-Timestart, " миллисекунд, из них: " , MathFloor (( GetTickCount ()-Timestart)/ 1000 ), " секунд " ,(( GetTickCount ()-Timestart)/ 1000 - MathFloor (( GetTickCount ()-Timestart)/ 1000 ))* 1000 , " миллисекунд" ); //печать сообщения на экран
//----------------------------------------------------------------------------------------- 4 -
   return ( 0 );                                                             //выход из start
  }                                                                       //конец start
//-------------------------------------- КОНЕЦ START -------------------------------------- 5 -

1-2 bloğunda, dosyayı açtım ve dosyaya (DoubleToStr işlevinin metne dönüştürdüğü) 1.3584 sayısını yazdım.

Blok 3-4 Dosyayı açtım ve orada yazan numarayı okudum.

Harici değişken extern int konumu, FileTell işlevini kullanarak dosya işaretçisini hareket ettirerek FileIsEnding ve FileIsLineEnding işlevlerinin nasıl çalıştığını ve bir dosya işaretçisinin ne olduğunu anlamaya çalışmak için tasarlanmıştır.

MQL4'te bulunan MQL 4 kitabında. topluluk , dosya işaretçisinin metin imlecine benzer olduğunu söylüyor.

ANCAK, bu betiği birkaç kez çalıştırarak ve postiton harici değişkenini her seferinde 1 artırarak (yani, dosya işaretçisini dosyanın başlangıcından itibaren 1 bayt sağa kaydırarak), Yorum işlevi bir dizi mesaj görüntüledi; misal:

postiton=7 ise, mesaj şöyle görünüyordu:

postiton=7 ise, mesaj şöyle görünüyordu:


anladım çünkü PC belleğinde, dize sabitleri 8 bayt alır ve dosyaya metne dönüştürülen yalnızca 1 sayı yazılır, ardından dosya işaretçisini 8 bayt sağa kaydırırsam 4099 hatası alıyorum (bu, dosyanın sonuna ulaşıldığı anlamına gelir) ). Ayrıca FileIsEnding işlevinin aynı nedenle (dosya sonuna ulaşıldı) 1 (true) döndürdüğünü anlıyorum. Ancak FileIsLineEnding işlevinin neden 0 döndürdüğünü anlamıyorum (yanlış, yani dosya işaretçisi satırın sonuna ulaşmadı). Ne de olsa, MQL kitabında verilen analojinin rehberliğinde (bir dosya işaretçisi yaklaşık olarak bir metin imleciyle aynıdır), dosyanın sonunun aynı zamanda satırın sonu olduğunu düşündüm. Ancak dosya işaretçisi dosyanın sonuna ulaştığında FileIsEnding ve FileIsLineEnding işlevlerinin değerleri arasındaki tutarsızlık göz önüne alındığında, DOSYA NOKTASI NEDİR? Ama bir soru sormak için bir şeyden başlamak gerektiğinden, 433. sayfada verildiği şekliyle sordum.

Bu nedenle, aşırı ısınan beynimi temizlemek ve aşağıdaki soruları (veya en azından geri kalan soruları anlamama yardımcı olacak) yanıtlamak için büyük bir isteğim var:

1. Dosya işaretçisini anlamamda yanlış olan nedir (soru sayfa 433'teki yazımda verilmiştir)

2. " ifadesinin anlamı Eğer belirtilen kontrol (5. bloktaki son 2 satır) silinirse, programın yürütülmesi sırasında fazladan bir nesne oluşturulacaktır. Ve ancak bundan sonra while döngüsü sonlandırma koşulu olacaktır. iş ve kontrol 8-9 bloğa aktarılacaktır ” ( soru 433. sayfadaki yazımda verilmiştir)

3. FileIsLineEnding, dosyanın sonuna ulaştığında neden 1 yerine 0 döndürüyor.

Not: Forumu kirletmemek adına şimdiden cevap için teşekkürler

 

iyi zaman hissesi

Lütfen bana yatay çizgiyi nasıl çizeceğimi söyle ((Teklif+Sor)/2+0.00333) :)

 

Güzel gün!

Tanrım ne yapmalı?

Terminal "BAĞLANTI YOK" ağını görmüyor

 
Ragen :

Güzel gün!

Tanrım ne yapmalı?

Terminal "BAĞLANTI YOK" ağını görmüyor


kendinize yeni bir demo oluşturun. eskisi silinmiş görünüyor
 
sergeev :

kendinize yeni bir demo oluşturun. eskisi silinmiş görünüyor

Demoda değilim, üç gerçek hesap .

Ama hepsi bir DC'den, herhangi bir şeyi etkileyebilir mi?

 
Ragen :

Demoda değilim, üç gerçek hesap.

Ama hepsi bir DC'den, herhangi bir şeyi etkileyebilir mi?


:) Peki, DC'yi arayın. MQL programlama forumunun bununla ne ilgisi var?
 
sergeev :

:) Peki, DC'yi arayın. MQL programlama forumunun bununla ne ilgisi var?

Nedense hemen terminale "yuvarlandım" :)

Anlayacağız!

 

Pro, söyle lütfen. Bekleyen bir stop emrim varsa, ancak fiyat stop loss'u aşan genişletilmiş bir spread ile girdiyse.... Ne olacak?

Sipariş, yayılma tarafından yenilecek mi... yoksa bir hata mı çıkacak ve sipariş çalışmayacak mı?