Burada https://www.mql5.com/ru/forum/119342 , terminalde mevcut olan sembollerin bir listesini almak için iyi bir fonksiyondur, bu durumda sipariş sembolünü isimleriyle karşılaştırmanın pek bir anlamı görmüyorum. Bu hesaptaki komisyoncu sembolleri, ancak diğer durumlarda çok kullanışlıdır.
"MQL4'te bir yapının öğelerinin hizalama olmadan doğrudan birbirini takip ettiği akılda tutulmalıdır."
Hizalama ile ne kastedilmektedir?
Doğru anlarsam, hizalanmış öğeler şöyle görünecek:
ve şu şekilde hizalanmadı: Doğru mu?
Yorumlarda herşey anlatılıyor
еще 4 байта пропуска. Обеспечили выравнивание на границу 8 байт
Yapının öğeleri farklı bir türe ve buna bağlı olarak bayt cinsinden farklı bir uzunluğa sahip olabilir, ancak her öğe için bellek, maksimum üyeye göre aynı şekilde tahsis edilir. Örnekte, bu çift 8 bayttır.
Aslında, yapıda yalnızca 3 öğe vardır, ancak ilki yalnızca 1 bayt kaplar ve onu son iki öğeyle hizalamak için 7 bayt "sahte" bayt da tahsis edilmelidir. Beton yapıyı şu şekilde tanımlamak daha kolaydır:
struct trade_settings
{
ulong slippage; // значение допустимого проскальзывания , но потом наверняка понадобится приведение в int перед подстановкой в OrderSend()
double take; // значения цены фиксации прибылиdouble stop; // значение цены защитного стопа
};
Onlar. derleyicinin her eleman için gerekli sayıda bayt eklediği ortaya çıktı? Örnekte ihtiyaç duyulmayan boşlukları mı kastediyorum?
Ve bu arada, eğer
GSB :
Yapılar farklı bir türe ve buna bağlı olarak bayt cinsinden farklı bir uzunluğa sahip olabilir, ancak maksimum üyeye göre her öğenin belleği aynıdır. Örnekte, bu çift 8 bayttır.
Eğer öyleyse ve hepsi aynıysa, her öğe için bir bellek tahsis edilirse, yapının öğelerini hangi sırayla düzenlemek ne fark eder?
Onlar. derleyicinin her eleman için gerekli sayıda bayt eklediği ortaya çıktı? Örnekte ihtiyaç duyulmayan boşlukları mı kastediyorum?
Ve bu arada, eğer
Eğer öyleyse ve hepsi aynıysa, her öğe için bir bellek tahsis edilirse, yapının öğelerini hangi sırayla düzenlemek ne fark eder?
Hayır eklemez, önce int kaymasını koyarsanız 4 bayt tahsis edilecektir, bu nedenle 8'e kadar ( int rezerv) eklemeniz veya int yerine long kullanmanız gerekir.
Yardım'dan alıntı
Внимание: данный пример иллюстрирует неправильно спроектированные данные.
Лучше было бы сначала объявить данные take и stop большего размера типа double , а затем объявить член slippage типа uchar .
В этом случае внутреннее представление данных будет всегда одинаково независимо от значения
Hizalama yapmanız gerekmeyen doğru seçenek
struct trade_settings
{
double take; // значения цены фиксации прибылиdouble stop; // значение цены защитного стопаint slippage; // значение допустимого проскальзывания
};
Lütfen söyleyin, çok para birimli bir danışman yazıyorum, diğer para birimlerinin talep ve tekliflerini geri çekiyorum, normalleştiriyorum, ancak fiyatın hala fazladan sayıları var.
Example2 : Lütfen söyleyin, çok para birimli bir danışman yazıyorum, diğer para birimlerinin talep ve tekliflerini geri çekiyorum, normalleştiriyorum, ancak fiyatın hala fazladan sayıları var.
Rakamların karşılık gelen karakterden "çıkarılması" da istenir;)
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Elbette öyle ama...
Tasarımın doğruluğundan kesinlikle şüpheliyim
Burada https://www.mql5.com/ru/forum/119342 , terminalde mevcut olan sembollerin bir listesini almak için iyi bir fonksiyondur, bu durumda sipariş sembolünü isimleriyle karşılaştırmanın pek bir anlamı görmüyorum. Bu hesaptaki komisyoncu sembolleri, ancak diğer durumlarda çok kullanışlıdır.
Ve bu durumda, ekleri hariç tutmak için
Söyleyebilir misin? Hangi parametrelerle ilgili bölüm nerede. Yani tasarım, onay işaretleri, oklar vb.
Ne hakkında konuştuğunu deşifre edebilir misin?
Ne hakkında olduğunu deşifre edebilir misin?
Sayesinde.
Koşul geçti, hata kodun başka bir bölümündeydi. :)
Kılavuz şunları söylüyor:
"MQL4'te bir yapının öğelerinin hizalama olmadan doğrudan birbirini takip ettiği akılda tutulmalıdır."
Hizalama ile ne kastedilmektedir?
Doğru anlarsam, hizalanmış öğeler şöyle görünecek:
bu şekilde hizalanmamış:Doğru?
Programlamada temel noktanın derleyicinin boşlukları atlaması beni şaşırtıyor ve sonra bunun bir şeyi etkilediği ortaya çıkıyor ...
Kılavuz şunları söylüyor:
"MQL4'te bir yapının öğelerinin hizalama olmadan doğrudan birbirini takip ettiği akılda tutulmalıdır."
Hizalama ile ne kastedilmektedir?
Doğru anlarsam, hizalanmış öğeler şöyle görünecek:
ve şu şekilde hizalanmadı: Doğru mu?Yorumlarda herşey anlatılıyor
еще 4 байта пропуска. Обеспечили выравнивание на границу 8 байтYapının öğeleri farklı bir türe ve buna bağlı olarak bayt cinsinden farklı bir uzunluğa sahip olabilir, ancak her öğe için bellek, maksimum üyeye göre aynı şekilde tahsis edilir. Örnekte, bu çift 8 bayttır.
Aslında, yapıda yalnızca 3 öğe vardır, ancak ilki yalnızca 1 bayt kaplar ve onu son iki öğeyle hizalamak için 7 bayt "sahte" bayt da tahsis edilmelidir. Beton yapıyı şu şekilde tanımlamak daha kolaydır:
Onlar. derleyicinin her eleman için gerekli sayıda bayt eklediği ortaya çıktı? Örnekte ihtiyaç duyulmayan boşlukları mı kastediyorum?
Ve bu arada, eğer
Yapılar farklı bir türe ve buna bağlı olarak bayt cinsinden farklı bir uzunluğa sahip olabilir, ancak maksimum üyeye göre her öğenin belleği aynıdır. Örnekte, bu çift 8 bayttır.
Eğer öyleyse ve hepsi aynıysa, her öğe için bir bellek tahsis edilirse, yapının öğelerini hangi sırayla düzenlemek ne fark eder?
Onlar. derleyicinin her eleman için gerekli sayıda bayt eklediği ortaya çıktı? Örnekte ihtiyaç duyulmayan boşlukları mı kastediyorum?
Ve bu arada, eğer
Eğer öyleyse ve hepsi aynıysa, her öğe için bir bellek tahsis edilirse, yapının öğelerini hangi sırayla düzenlemek ne fark eder?
Hayır eklemez, önce int kaymasını koyarsanız 4 bayt tahsis edilecektir, bu nedenle 8'e kadar ( int rezerv) eklemeniz veya int yerine long kullanmanız gerekir.
Yardım'dan alıntı
Hizalama yapmanız gerekmeyen doğru seçenek
USDCADAsk = NormalizeDouble ( MarketInfo ( "USDCAD" , MODE_ASK ), Digits ); USDCADBid = NormalizeDouble ( MarketInfo ( "USDCAD" , MODE_BID ), Digits ); USDCHFAsk = NormalizeDouble ( MarketInfo ( "USDCHF" , MODE_ASK ), Digits ); USDCHFBid = NormalizeDouble ( MarketInfo ( "USDCHF" , MODE_BID ), Digits ); USDJPYAsk = NormalizeDouble ( MarketInfo ( "USDJPY" , MODE_ASK ), Digits ); USDJPYBid = NormalizeDouble ( MarketInfo ( "USDJPY" , MODE_BID ), Digits ); EURUSDAsk = NormalizeDouble ( MarketInfo ( "EURUSD" , MODE_ASK ), Digits ); EURUSDBid = NormalizeDouble ( MarketInfo ( "EURUSD" , MODE_BID ), Digits ); GBPUSDAsk = NormalizeDouble ( MarketInfo ( "GBPUSD" , MODE_ASK ), Digits ); GBPUSDBid = NormalizeDouble ( MarketInfo ( "GBPUSD" , MODE_BID ), Digits ); AUDUSDAsk = NormalizeDouble ( MarketInfo ( "AUDUSD" , MODE_ASK ), Digits ); AUDUSDBid = NormalizeDouble ( MarketInfo ( "AUDUSD" , MODE_BID ), Digits ); NZDUSDAsk = NormalizeDouble ( MarketInfo ( "NZDUSD" , MODE_ASK ), Digits ); NZDUSDBid = NormalizeDouble ( MarketInfo ( "NZDUSD" , MODE_BID ), Digits );Lütfen söyleyin, çok para birimli bir danışman yazıyorum, diğer para birimlerinin talep ve tekliflerini geri çekiyorum, normalleştiriyorum, ancak fiyatın hala fazladan sayıları var.
Rakamların karşılık gelen karakterden "çıkarılması" da istenir;)