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

 
Oleh Fedorov :

Merhaba.

Müteahhit hakkındaki gönderiye göre, yani kimse bir şey söylemeyecek mi?

Belki daha fazla kişinin görebilmesi için yeni bir konuda yapmak mantıklıdır? Evet ise - moderatörlere bir rica: çıkarın, lütfen ... Veya kendiniz mi yaratın?

Evet, ayrı bir konu oluşturun. Sadece bir konu oluşturduğunuz forumun doğru bölümünü seçmeye çalışın.

 

Lütfen söyle bana, ilkokul. diziler.

ders çalışıyorum ve anlamıyorum

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = NormalizeDouble (tick[ 1 , 1 ]* 100 * _Point , _Digits );
   OrderSend ( Symbol (),OP_BUYSTOP, 0.01 ,tick[ 1 , 2 ], 3 , 0 , 0 , "bs2" , 0 , 0 , clrBlue ); 
}

Derleme sırasında hata vermiyor fakat terminalde çalıştırıldığında kritik hata veriyor.

Neden bir yorum olarak kene[ 1 , 1 ] çıkarılırken sayı 4 ondalık basamağa yuvarlanıyor ?

Neden sadece kene[ 1 , 2 ] değerini doğru bir şekilde hesaplayamıyor, aynı zamanda hücre verisi kene[ 1 , 1 ] ( tik[ 1 , 2 ]= tik[ 1 , 1 ]; ) kopyalamayı da reddediyor.

Ve son olarak, neden, bir emir oluştururken, fiyat değeri yerine bu fiyatın saklandığı dizi hücresini [ 1 , 2 ] olarak gösterirsek, o zaman bu değişkeni aynı anda 2 değer olarak kabul eder. (ipuçları kayma değerini hemen atlar)

 
Gilmor :

Lütfen söyle bana, ilkokul. diziler.

ders çalışıyorum ve anlamıyorum

Derleme sırasında hata vermiyor fakat terminalde çalıştırıldığında kritik hata veriyor.

Neden bir yorum olarak kene[ 1 , 1 ] çıkarılırken sayı 4 ondalık basamağa yuvarlanıyor ?

Neden sadece kene[ 1 , 2 ] değerini doğru bir şekilde hesaplayamıyor, aynı zamanda hücre verisi kene[ 1 , 1 ] ( tik[ 1 , 2 ]= tik[ 1 , 1 ]; ) kopyalamayı da reddediyor.

Ve son olarak, neden, bir emir oluştururken, fiyat değeri yerine bu fiyatın saklandığı dizi hücresini [ 1 , 2 ] olarak gösterirsek, o zaman bu değişkeni aynı anda 2 değer olarak kabul eder. (ipuçları kayma değerini hemen atlar)

Çünkü OrderSend fonksiyonunun parametrelerinde diğerlerinde olduğu gibi virgül rolünü oynar. Ve metinde virgül göründüğü anda, gelen değerlerin ayırıcısı olarak kabul edilir. Bunu onayla[1][2]

 
Alexey Viktorov :

Çünkü OrderSend fonksiyonunun parametrelerinde diğerlerinde olduğu gibi virgül rolünü oynar. Ve metinde virgül göründüğü anda, gelen değerlerin ayırıcısı olarak kabul edilir. Bunu onayla[1][2]

Teşekkür ederim. Belki diğer soruları cevaplayabilirsin? :)
 
Gilmor :
Teşekkür ederim. Belki diğer soruları cevaplayabilirsin? :)

Et (2.55=367.12) sorusuna cevap verebilir misiniz?

 
Alexey Viktorov :

Et (2.55=367.12) sorusuna cevap verebilir misiniz?

Anladım.

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = NormalizeDouble (tick[ 1 , 1 ]* 100 * _Point , _Digits );
  }
 double tick[ 2 , 2 ];

2 hücreden oluşan bir dizi oluşturuldu. üst sıra, 2 hücre. daha düşük.

 void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
 Comment (tick[ 1 , 1 ])

Sonuç. Grafikteki fiyat 0.84478 ve yukarıdaki yorum 0.8448 gösteriyor ???? Neden 4 ondalık basamağa yuvarladı?

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = tick[ 1 , 1 ];
  }

Bir hücreye yazma mantığı ile dizinin 1. hücresindeki verileri aynı dizinin 2. hücresine kopyalıyorum. Sonuç kritik bir hatadır .

Niye ya?

 double tick[ 2 , 2 ];

void OnTick ()
  {
  tick[ 1 , 1 ] = Ask;
  tick[ 1 , 2 ] = NormalizeDouble (tick[ 1 , 1 ]* 100 * _Point , _Digits );
  }

Dizinin 2. hücresinde, bekleyen bir sipariş için gelecekteki fiyatın değerini eklemek istiyoruz. Onlar. Satış fiyatına 100 puan ekleyin ve sipariş verirken fiyat parametresinde bu dizi hücresini belirtin. Ancak bu komutu tekrar çalıştırırken aynı hata.


Niye ya?

 
Gilmor :

Bir hücreye yazma mantığı ile dizinin 1. hücresindeki verileri aynı dizinin 2. hücresine kopyalıyorum. Sonuç kritik bir hatadır .

Niye ya?

çünkü dizilerin ne olduğunu anlamadınız, yardımı okuduysanız ve işe yaramadıysa, hadi "parmaklarda"

bu dizi bildirimidir:

 double tick[ 2 , 2 ];

bu, derleyiciye "4 bellek konumu" ayırmasını söyler --> 2x2

ve en düşük öğeye erişim, 0 dizinine sahiptir, yani. burada, sizin durumunuz için, tick[ 2 , 2 ] dizisinde, dizinin yalnızca bu tür öğeleri olacaktır:

tik[ 0 , 0 ] tik[ 0 , 1 ]

tik[ 1 , 0 ] tik[ 1 , 1 ]

4 dizi elemanı var mı? .... ancak dizinin en düşük dizini 0 sayısına sahiptir ve istediğiniz gibi (veya zihinsel sayma ile alıştığınız gibi) 1 numaradan değil


peki ve buna göre, dizinin en eski elemanının bir numarası olacaktır: dizinin boyutu eksi 1

dizinin boyutunu aştıysanız, kritik bir çalışma zamanı hatası alırsınız - ekranınız, bunlar. dizi kene[ 2 , 2 ] için sayı kene[ 2 , 2 ] olan böyle bir dizi öğesi yoktur

 

En azından acemi olduğumu kabul ediyorum :)

Teşekkür ederim.

Eh, "parmaklarda" hakkında - bu bir alışkanlık. "Parmaklarda", algılanması daha kolay. Ve bunu bu dilde genellikle sıfır olan birine anlatsaydım, o zaman ayak parmaklarımı da açıklamalara bağlamam gerekirdi =))

 
Gilmor :

En azından acemi olduğumu kabul ediyorum :)

Teşekkür ederim.

Eh, "parmaklarda" hakkında - bu bir alışkanlık. "Parmaklarda", algılanması daha kolay. Ve bunu bu dilde genellikle sıfır olan birine anlatsaydım, o zaman ayak parmaklarımı da açıklamalara bağlamam gerekirdi =))

yeni başlayanlar ayıp değildir, özellikle tematik konu yeni başlayanlar için olduğundan ve bu, sorunuza hızlı bir şekilde cevap alabileceğiniz birkaç forumdan biridir;)

ayrıca, yardımın başlangıcını okuyun https://docs.mql4.com/ru/basis/variables

 
Igor Makanu :

yeni başlayanlar ayıp değildir, özellikle tematik konu yeni başlayanlar için olduğundan ve bu, sorunuza hızlı bir şekilde cevap alabileceğiniz birkaç forumdan biridir;)

ayrıca, yardımın başlangıcını okuyun https://docs.mql4.com/ru/basis/variables

Sayesinde.