PrintFormat

Uzman Danışman günlüğündeki sembol kümelerini ve değerlerini, ön ayarlı şekle göre biçimlendirerek girişini yapar.

void  PrintFormat(
   string format_string,   // biçim dizgisi
   ...                     // basit tipli değerler
   );

Parametreler

format_string

[in]  Bir biçim dizgisi basit sembolleri içerir, eğer argümanlarla takip ediliyorsa, o zaman biçim özeliklerini de içerir.

...

[in]  Virgülle ayrılmış tüm basit tipli değerler. Toplam parametre sayısı, biçim dizgisi de dahil olmak üzere 64'ü geçemez.

Dönüş değeri

Dizgi.

Not

PrintFormat() function does not work during optimization in the Strategy Tester.

Parametrelerin sayısı, sırası ve tipi, niteleyicilerin kümesiyle bir bir örtüşmelidir, aksi durumda çıktılama sonucu tanımsızdır. PrintFormat() yerine printf() kullanabilirsiniz.

Eğer biçim dizgisi parametrelerce takip ediliyorsa, bu parametrelerin çıktı biçimlerini belirleyen biçim özelliklerini içermelidir. Biçimin belirlemesi daima yüzde (%) işareti ile başlar.

Bir biçim dizgisi soldan sağa doğru okunur. İlk biçim özelliği karşılandığında (eğer varsa), biçim dizgisinden sonra gelen ilk parametrenin değeri ön ayarlı özelliğe göre dönüştürülür ve çıktılanır. İkinci biçim özelliği, ikinci parametreyi dönüşüm ve çıktılama için çağırır ve bu durum biçim dizgisinin sonuna kadar devam eder.

Biçim özelliği şu formdadır:            

          %[bayraklar][genişlik][.çözünürlük][{h | l | ll | I32 | I64}]tip

Biçim özelliğinin her bir alanı ya basit bir semboldür, ya da basit biçim seçeneğini ifade eden bir sayıdır. En basit biçim özelliği sadece yüzde (%) işaretini ve çıktı parametresinin tipini tanımlayan bir sembolünü (örneğin, %s) içerir. Eğer yüzde işaretini biçim dizgisinin içinde çıktılamanız gerekiyorsa %% biçimini kullanın.

bayraklar

Bayrak

Açıklama

Varsayılan Davranış

– (eksi)

Ayarlı genişlik içindeki sol hizalama

Sağ hizalama

+ (artı)

İşaret tipleri için + veya - işaretinin çıktısı

İşaret sadece değer negatif ise gösterilir

0 (sıfır)

Sıfırlar, ön ayarlı genişlik içindeki bir çıktı değerinden önce eklenir. If 0 bayrak tamsayı biçiminde belirlenir (i, u, x, X, o, d) ve kesinlik (çözünürlük) özelliği ayarlanır (örneğin, %04.d), sonrasında sıfır gözardı edilir.

Hiçbir şey eklenmez

boşluk

Boşluk, çıktı değerinden önce gösterilir, eğer çıktı işaretli ve pozitif bir değerse

Boşluklar girilmez

#

Eğer; o, x veya X biçimleriyle beraber kullanılıyorsa, çıktı değerinden önce sırasıyla 0, 0x veya 0X eklenir.

Hiçbir şey eklenmez

 

Eğer; e, E, a veya A biçimleriyle beraber kullanılıyorsa, değer her zaman bir ondalık nokta ile gösterilir.

Ondalık nokta, sadece sıfır harici bir kısım varsa gösterilir.

 

Eğer g veya G biçimleriyle beraber kullanılıyorsa; bayrak, çıktı değerinde bir ondalık noktanın varlığını tanımlar ve sıfırların atılmasını önler.

# bayrağı: c, d, i, u, s biçimleri ile beraber kullanılırken gözardı edilir.

Ondalık nokta, sadece sıfır harici bir kısım varsa gösterilir. Ön sıfırlar atılır.

genişlik #

Biçimlendirilmiş değerin çıktı sembollerinin minimal sayısını ayarlayan, negatif olmayan bir reel sayı. Eğer çıktı sembollerinin sayısı belirlenen genişlikten az ise, karşılık gelen sayıda boşluk, hizalamaya bağlı olarak (bayrak -) sağdan veya soldan eklenir. Eğer sıfır bayrağı (0) varsa, karşılık gelen sayıda sıfır, çıktı değerinden önce eklenir. Eğer çıktı sembollerinin sayısı belirlenen genişlikten fazla ise, çıktı değeri asla budanmaz.

Eğer bir yıldız (*) genişlik olarak belirlenmişse, geçirilen parametreler listesinde karşılık gelen yerde, tamsayı tipli değer belirtilmelidir. Bu, çıktı değerinin genişliğini belirlemek için kullanılacaktır.

çözünürlük #

Çıktı kesinliğini ayarlayan ve negatif olmayan ondalık basamak sayısı. Genişlik özelliğinden farklı olarak çözünürlük özelliği, kesirli tipin bir kısmını yuvarlamadan atabilir.

Çözünürlük özelliğinin kullanımı, farklı biçim tipleri için farklılık gösterir.

Tipler

Açıklama

Varsayılan Davranış

a, A

Kesinlik özelliği, noktadan sonraki basamak sayısını ayarlar.

Varsayılan kesinlik – 6.

c, C

Kullanılmaz

 

d, i, u, o, x, X

Minimal çıktı basamağı sayısını belirler. Eğer karşılık gelen bir parametredeki basamak sayısı bu kesinlikten az ise, çıktı değerinin sonuna sıfırlar eklenir. Eğer çıktı basamakları, belirtilen kesinlikten büyükse o zaman çıktı değerinde bir budama yapılmaz.

Varsayılan kesinlik – 1.

e, E, f

Noktadan sonraki çıktı basamaklarının sayısını ayarlar. Son basamak yuvarlanır.

Varsayılan kesinlik – 6. Eğer ayarlı kesinlik 0 ise ondalık kısım yoksa, ondalık nokta gösterilmez.

g, G

Anlamlı rakamların maksimal sayısını ayarlar.

6 anlamlı rakam çıktılanır.

s

Bir dizginin çıktı sembollerinin sayısını ayarlar. Eğer dizgi uzunluğu ayarlanmış kesinlik değerini geçiyorsa, dizgi budanır.

Tüm dizgi çıktılanır.

 

   PrintFormat("1. %s"_Symbol);
   PrintFormat("2. %.3s"_Symbol);
   int length=4;
   PrintFormat("3. %.*s"length_Symbol);
   /*
   1EURUSD
   2EUR
   3EURU
   /

h | l | ll | I32 | I64

Parametre olarak geçirilen veri büyüklüklerinin belirlenmesi.

Parametre Tipi

Kullanılan Önek

Tipin birleşik belirteci

int

l (küçük L)

d, i, o, x veya X

uint

l (küçük L)

o, u, x veya X

long

ll (iki küçük L)

d, i, o, x veya X

short

h

d, i, o, x veya X

ushort

h

o, u, x veya X

int

I32

d, i, o, x veya X

uint

I32

o, u, x veya X

long

I64

d, i, o, x veya X

ulong

I64

o, u, x veya X

type #

Tip belirteci, biçimlendirilmiş çıktı için tek zorunluluktur.

Sembol

Tip

Çıktı Biçimi

c

int

short tipli sembol (Unicode)

C

int

char tipli sembol (ANSI)

d

int

İşaretli ondalık tamsayı

i

int

İşaretli ondalık tamsayı

o

int

İşaretsiz sekizli tamsayı

u

int

İşaretsiz ondalık tamsayı

x

int

İşaretsiz onaltılık tamsayı, "abcdef" kullanarak

X

int

İşaretsiz onaltılık tamsayı, "ABCDEF" kullanarak

e

double

[-] d.dddde[sign] ddd biçiminde bir reel değer, burada d - tek ondalık haneyi, dddd - bir veya daha fazla ondalık haneyi, ddd - üs büyüklüğünü belirleyen üç basamaklı bir sayıyı, sign - artı veya eksiyi belirtir

E

double

e biçimiyle benzerdir ama üssün işareti büyük E ile çıktılanır (e yerine E)

f

double

[-] dddd.dddd biçimli bir reel sayı, burada dddd - bir veya daha fazla ondalık hanedir. Noktadan önce gösterilen basamakların sayısı, sayı değerine bağlıdır. Noktadan sonra gösterilen basamakların sayısı, istenen kesinliğe bağlıdır.

g

double

Hangisinin daha düzenli olduğuna bağlı olarak f veya e biçiminde çıktılanan bir reel değer.

G

double

Hangisinin daha düzenli olduğuna bağlı olarak F veya E biçiminde çıktılanan bir reel değer.

a

double

[−]0xh.hhhh p±dd biçiminde bir reel sayı, burada h.hhhh – "abcdef" kullanarak onaltılık formda mantisi, dd - üssün bir veya daha fazla hanesini belirtmektedir. Ondalık hanelerin sayısı kesinlik özelliği ile belirlenir

A

double

[−]0xh.hhhh P±dd biçiminde bir reel sayı, brada h.hhhh – "ABCDEF" kullanarak onaltılık formda mantisi, dd - üssün bir veya daha fazla hanesini belirtmektedir. Ondalık hanelerin sayısı kesinlik özelliği ile belirlenir

s

string

Dizgi çıktısı

PrintFormat() yerine printf() kullanabilirsiniz.

Örnek:

void OnStart()
  {
//--- trade server name
   string server=AccountInfoString(ACCOUNT_SERVER);
//--- account number
   int login=(int)AccountInfoInteger(ACCOUNT_LOGIN);
//--- long value output
   long leverage=AccountInfoInteger(ACCOUNT_LEVERAGE);
   PrintFormat("%s %d: leverage = 1:%I64d",
               server,login,leverage);
//--- account currency
   string currency=AccountInfoString(ACCOUNT_CURRENCY);
//--- double value output with 2 digits after the decimal point
   double equity=AccountInfoDouble(ACCOUNT_EQUITY);
   PrintFormat("%s %d: account equity = %.2f %s",
               server,login,equity,currency);
//--- double value output with mandatory output of the +/- sign
   double profit=AccountInfoDouble(ACCOUNT_PROFIT);
   PrintFormat("%s %d: current result for open positions = %+.2f %s",
               server,login,profit,currency);
//--- double value output with variable number of digits after the decimal point
   double point_value=SymbolInfoDouble(_Symbol,SYMBOL_POINT);
   string format_string=StringFormat("%%s: point value  = %%.%df",_Digits);
   PrintFormat(format_string,_Symbol,point_value);
//--- int value output
   int spread=(int)SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
   PrintFormat("%s: current spread in points = %d ",
               _Symbol,spread);
//--- double value output in the scientific (floating point) format with 17 meaningful digits after the decimal point
   PrintFormat("DBL_MAX = %.17e",DBL_MAX);
//--- double value output in the scientific (floating point) format with 17 meaningful digits after the decimal point
   PrintFormat("EMPTY_VALUE = %.17e",EMPTY_VALUE);
//--- output using PrintFormat() with default accuracy
   PrintFormat("PrintFormat(EMPTY_VALUE) = %e",EMPTY_VALUE);
//--- simple output using Print()
   Print("Print(EMPTY_VALUE) = ",EMPTY_VALUE);
/* execution result
   MetaQuotes-Demo 1889998: leverage = 1:100
   MetaQuotes-Demo 1889998: account equity = 22139.86 USD
   MetaQuotes-Demo 1889998: current result for open positions = +174.00 USD
   EURUSD: point value  = 0.00001
   EURUSD: current spread in points = 12 
   DBL_MAX = 1.79769313486231570e+308
   EMPTY_VALUE = 1.79769313486231570e+308
   PrintFormat(EMPTY_VALUE) = 1.797693e+308
   Print(EMPTY_VALUE) = 1.797693134862316e+308
*/
  }

Ayrıca Bakınız

StringFormat, DoubleToString, Reel tipler (double, float)