MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 66

 
trader781 :

Teorik olarak bunun neden olduğunu biliyorum, bu yüzden soru şu ki, dizileri kısaca kullanabilir miyim?

bundan sonra her şeyin çalışması için başlatmanız, silmeniz ve işlemeniz gereken yer

not

Google'da yasaklandığında şöyle görünür:

Ve neden bir dizi yüzünden buna karar verdiniz???
 
Alexey Viktorov :
Ve neden bir dizi yüzünden buna karar verdiniz???
çünkü bu daha önce hiç olmadı ve eğer bir yerde olduysa, bir hata yaptım, bu yüzden buraya dönüyorum. Kendin çözebilirsin, ama çok daha fazla zaman alır.
 
trader781 :

ihtiyaç

1) yaratılacak bir yer (küresel kapsamda, bir işlev olarak, onit'te mi yoksa ontik'te mi?)

2) bir sipariş gönderirken her bileti içine yazın, sırayla bir numara atayın

3) numaradan gerektiği gibi onları oradan çekin

4) tüm şebekeyi kapatırken parametreleri sıfırlayın

Sürekli aklınızda tutmanıza gerek yok. Bulmanız gerektiğinde - içinde tüm siparişleri / pozisyonları bir döngüde yazacağınız yerel bir dizinin olacağı işlevi çağırın, diziyi istediğiniz gibi sıralayın, ondan gerekli siparişleri seçin, ihtiyacınız olan her şeyi yapın onlarla ve işlevden çıktığınızda bu yerel diziyi unutun. Bir dahaki sefere fonksiyon çağrıldığında, çağrı anında olacak emirleri/pozisyonları sizin için hesaplar ve aynısını onlarla tekrar yapar. Ve sürekli izlemeniz ve kontrol etmeniz gereken herhangi bir küresel diziye ihtiyacınız yok - daha ucuz olacak.
 
Artyom Trishkin :
Sürekli aklınızda tutmanıza gerek yok. Bulmanız gerektiğinde - içinde tüm siparişleri / pozisyonları bir döngüde yazacağınız yerel bir dizinin olacağı işlevi çağırın, diziyi istediğiniz gibi sıralayın, ondan gerekli siparişleri seçin, ihtiyacınız olan her şeyi yapın onlarla ve işlevden çıktığınızda bu yerel diziyi unutun. Bir dahaki sefere fonksiyon çağrıldığında, çağrı anında olacak emirleri/pozisyonları sizin için hesaplayacak ve aynısını onlarla tekrar yapacaktır. Ve sürekli izlemeniz ve kontrol etmeniz gereken herhangi bir küresel diziye ihtiyacınız yok - daha ucuz olacak.

Ne kadar ucuz bilmiyorum. Her durum için bir çözüm var. MQL4'te olay yok OnTradeTransaction() ama bir şekilde "sizin" siparişlerinizi takip etmeniz gerekiyor... burası, global seviyedeki değişkenlerin dizisinin yardımcı olacağı yer.

Birkaç Uzman Danışmanın hesap üzerinde çalıştığını düşünün, biri ağır hesaplamalarla, diğeri de çılgın sayıda emirle... Ağır hesaplamalarla nasıl çalışacak??? Ayrıca çok sayıda sipariş fişini mi bastı? Genel olarak, elbette, numaralandırma olmadan yapılamaz, ancak bu prosedürün en aza indirilmesi arzu edilir.

Ve tanım kapalıydı - sipariş olsun mu??? Tüm hikayeyi gözden geçir? Çok maliyetli değil mi?

 
trader781 :
çünkü bu daha önce hiç olmadı ve eğer bir yerde olduysa, bir hata yaptım, bu yüzden buraya dönüyorum. Kendin çözebilirsin, ama çok daha fazla zaman alır.

Bir önceki paylaşımımdan da anladığınız üzere dizileri çok sık kullanıyorum ve onlar yüzünden hiç sorun yaşamadım. Bir keresinde biletleri bir diziye kaydedilmiş 2000'den fazla siparişi açan ve hiçbir şey, sorun olmayan bir danışman yazdım. Sorunların diziden kaynaklandığına inanamadığım bir şey. Ve bu tür sorunlardan kurtulmak için nerede hata yapabilirsiniz ???

"Olmaz" filmini hatırladım... "İnsanı öldüren bira değil, sudur"...

 
Alexey Viktorov :

Ne kadar ucuz bilmiyorum. Her durum için bir çözüm var. MQL4'te olay yok OnTradeTransaction() ama bir şekilde "sizin" siparişlerinizi takip etmeniz gerekiyor... burası, global seviyedeki değişkenlerin dizisinin yardımcı olacağı yer.

Birkaç Uzman Danışmanın hesap üzerinde çalıştığını hayal edin, biri ağır hesaplamalarla, diğeri çılgın sayıda emirle... Ağır hesaplamalarla nasıl çalışacak??? Ayrıca çok sayıda sipariş fişini mi bastı? Genel olarak, elbette, numaralandırma olmadan yapılamaz, ancak bu prosedürün en aza indirilmesi arzu edilir.

Ve tanım kapalıydı - sipariş olsun mu??? Tüm hikayeyi gözden geçir? Çok maliyetli değil mi?

Her şey çözüldü.

Örneğin, tüm bunları uzun süredir izleyen bir sınıf yaptım. Her bir sembol, sihir, zaman çerçevesi veya hepsi tek bir hesap için veya bunların kombinasyonları için dinamik olarak sınıf nesneleri oluşturabilir/silebilirsiniz - aralarından seçim yapabilirsiniz. Herhangi bir gerekli arama döngüsü, yeni onay işareti üzerinde zaten bir kez gerçekleştirildi ve gerekli tüm veriler var. Tabii ki, bir döngüden daha vazgeçilemez, ancak bu, kene başına ikinci ek döngüdür. Ve her işlevin kendi döngüsü yoktur - bu korkunç bir kaynak israfıdır.

 
Artyom Trishkin :

Her şey çözüldü.

Örneğin, tüm bunları uzun süredir izleyen bir sınıf yaptım. Her bir sembol, sihir, zaman çerçevesi veya hepsi tek bir hesap için veya bunların kombinasyonları için dinamik olarak sınıf nesneleri oluşturabilir/silebilirsiniz - aralarından seçim yapabilirsiniz. Herhangi bir gerekli arama döngüsü, yeni onay işareti üzerinde zaten bir kez gerçekleştirildi ve gerekli tüm veriler var. Tabii ki, bir döngüden daha vazgeçilemez, ancak bu, kene başına ikinci ek döngüdür. Ve her işlevin kendi döngüsü yoktur - bu korkunç bir kaynak israfıdır.

Yani kimse bununla tartışmıyor. Yapıların gelişiyle daha da uygun hale geldi.
 
Artyom Trishkin :
Sürekli aklınızda tutmanıza gerek yok. Bulmanız gerektiğinde - içinde tüm siparişleri / pozisyonları bir döngüde yazacağınız yerel bir dizinin olacağı işlevi çağırın, diziyi istediğiniz gibi sıralayın, ondan gerekli siparişleri seçin, ihtiyacınız olan her şeyi yapın onlarla ve işlevden çıktığınızda bu yerel diziyi unutun. Bir dahaki sefere fonksiyon çağrıldığında, çağrı anında olacak emirleri/pozisyonları sizin için hesaplayacak ve aynısını onlarla tekrar yapacaktır. Ve sürekli izlemeniz ve kontrol etmeniz gereken herhangi bir küresel diziye ihtiyacınız yok - daha ucuz olacak.

tamam işte basitleştirilmiş bir görünüm

Dizi yerel ise, nereye koymalıyım? açıkçası ontikte değil.

void OnTick ()
{  

       if (FindLastOType()== OP_BUY )   //+------ если последний покупка
           {
             if ( Ask <=FindLastOrderOpenPrice()-Step* Point ()) //+------------если ордер в минус
              {
               TotalClose();
              }
             else
             if ( Ask >=FindLastOrderOpenPrice()+Step* Point ()) //+------------если ордер в плюс и это 5 ордер в списке
              {
               ticket= OrderSend ( Symbol (), OP_BUY ,(лот 2 ордера+лот 4 ордера), Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure );
              }        
           }  
}

 
trader781 :

tamam işte basitleştirilmiş bir görünüm

Dizi yerel ise, nereye koymalıyım? açıkçası ontikte değil.

void OnTick ()
{  

       if (FindLastOType()== OP_BUY )   //+------ если последний покупка
           {
             if ( Ask <=FindLastOrderOpenPrice()-Step* Point ()) //+------------если ордер в минус
              {
               TotalClose();
              }
             else
             if ( Ask >=FindLastOrderOpenPrice()+Step* Point ()) //+------------если ордер в плюс и это 5 ордер в списке
              {
               ticket= OrderSend ( Symbol (), OP_BUY ,(лот 2 ордера+лот 4 ордера), Ask , 50 , 0 , 0 , "" ,Magic, 0 , clrAzure );
              }        
           }  
}

Bir fonksiyonun ne olduğunu okuyun lütfen. O zaman , işlevin gövdesinde bildirilen dizinin yerel olacağını anlayacaksınız - programın geri kalanının görüş alanı dışında.
 
bool WriteToFile( int FileHandle, string DataToWrite)
  {
// Receives the number of bytes written to the file. Note that MQL can only pass
// arrays as by-reference parameters to DLLs
   int BytesWritten[ 1 ]={ 0 };

// Get the length of the string
   int szData= StringLen (DataToWrite);

// Do the write
   WriteFile(FileHandle,DataToWrite,szData,BytesWritten, 0 );

// Return true if the number of bytes written matches the expected number
   return (BytesWritten[ 0 ] == szData);
  }

Bir dosyaya yeni satır çevirileri olan bir satır yazmak istiyorum ama olmuyor bu kod buradan https://www.mql5.com/en/forum/118999

bu kod genel olarak ve her harften sonra boşluklu bir satır yazıyor, yedek bir FileWrite () bulmam gerekiyor ama çalışıyor

Reading and writing files anywhere on disk using CreateFileA() etc.
Reading and writing files anywhere on disk using CreateFileA() etc.
  • www.mql5.com
There are frequent questions in this forum (e.g...