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

 
Lowech :
   int nomber = OrdersHistoryTotal();
   int tip=OrderType();
   if(OrderSelect(nomber,SELECT_BY_POS,MODE_HISTORY))  
Tünaydın. Yardıma ihtiyacım var. Eğer kapalı bir Satış emri varsa bir sonraki emir sadece Buy ile açılabilir.Kodda yanlış olan nedir lütfen söyleyiniz.

Bu parçanın ikinci satırında bir hata olduğu size zaten söylendi: OrderType() işlevini çağırmadan önce, OrderSelect() işlevi kullanılarak bir sipariş seçilmelidir.

3. satırda bir hata var: Ama numara ile bir sipariş var mı? Minimum sayı 1 ise, yani. hesap 1'den başlarsa, maksimum sayı sayıya eşit olacaktır ( toplam 5 sipariş olsun: sipariş numaraları 1, 2, 3, 4, 5). Ancak siparişler 0'dan numaralandırılmıştır - İmleci OrdersHistoryTotal üzerine getirin ve F1'e basın, bir örneğe bakın. Peki maksimum sipariş numarası nedir?

 
Aleksey Vyazmikin :

Daha önce, ikinci tabloda yapılan ayın tarihini 7'ye bölmeyi ve yukarı yuvarlamayı önerdiniz.

Algoritmanızı anlamıyorum.

Şimdi şöyle düşünüyorum:

1. Ayın ilk gününde haftanın gününü belirleyin

2. Haftanın bitimine kaç gün kaldığını öğrenin (Çarşamba (3)'ten 7-3=4 Pazartesi'ye kadar)

3. 5 - ikinci haftanın başlangıcı

4. Döngünün devamında hangi haftayı arıyoruz, eğer sayı 5 + 7 * x ile 5 + 7 * (x + 1) aralığındaysa, burada x hafta sayısı eksi birincidir, o zaman elimizde haftayı buldu

ama daha kolay bir seçenek ne kadar zor olabilir?

Alex, farklı şeylerden bahsediyoruz. Görev, ayın hangi haftasının ayın gününü içerdiğini değil, bu ayda aynı adı taşıyan haftanın ilk gününü belirlemekti. Bunlar farklı görevler ve buna bağlı olarak farklı çözümler.

63 yılım boyunca, aydaki hafta sayısının nasıl hesaplandığını hala anlamış değilim. Rusya'da adet olduğu üzere, haftanın ilk gününün Pazartesi olduğunu kabul ettiğimizi varsayalım. Ay Pazar günü başlıyorsa, Pazartesiyi nasıl sayarsınız? İkinci hafta başladı mı? Veya nasıl??? Bu retorik bir soru, bu konuda bir tartışma başlatmaya gerek yok.

 
Alexey Viktorov :

Alex, farklı şeylerden bahsediyoruz. Görev, ayın hangi haftasının ayın gününü içerdiğini değil, bu ayda aynı adı taşıyan haftanın ilk gününü belirlemekti. Bunlar farklı görevler ve buna göre farklı çözümler.

63 yılım boyunca, aydaki hafta sayısının nasıl hesaplandığını hala anlamış değilim. Rusya'da adet olduğu üzere, haftanın ilk gününün Pazartesi olduğunu kabul ettiğimizi varsayalım. Ay Pazar günü başlıyorsa, Pazartesiyi nasıl sayarsınız? İkinci hafta başladı mı? Veya nasıl??? Bu retorik bir soru, bu konuda bir tartışma başlatmaya gerek yok.


Açık. Benim için soru şu...

 
Alexey Viktorov :

Alex, farklı şeylerden bahsediyoruz. Görev, ayın hangi haftasının ayın gününü içerdiğini değil, bu ayda aynı adı taşıyan haftanın ilk gününü belirlemekti. Bunlar farklı görevler ve buna bağlı olarak farklı çözümler.

63 yıldır aydaki hafta sayısının nasıl hesaplandığını hala anlamış değilim. Rusya'da adet olduğu üzere, haftanın ilk gününün Pazartesi olduğunu kabul ettiğimizi varsayalım. Ay Pazar günü başlıyorsa, Pazartesiyi nasıl sayarsınız? İkinci hafta başladı mı? Veya nasıl??? Bu retorik bir soru, bu konuda bir tartışma başlatmaya gerek yok.

Yandex - 4 yollarında bir cevap aradım. Dördüncü yolu seviyorum: "İçinden". 1 Ocak yılın ilk haftası başlar, yedi gün sonra, 8 Ocak yılın ikinci haftası ve bu şekilde yılın sonuna kadar devam eder. Aylardır aynı
Онлайн калькулятор: Определение номера недели по дате
  • Timur пользователь planetcalc
  • planetcalc.ru
Калькулятор ниже определяет порядковый номер недели в году. Как выяснилось, это не совсем тривиальный вопрос, и есть целых четыре разных способа подсчитать номер недели. Первый способ: Стандарт ISO 8601 и соответствующий ему ГОСТ ИСО 8601-2001 «ПРЕДСТАВЛЕНИЕ ДАТ И ВРЕМЕНИ» — официальный способ расчета номера недели в Российской Федерации. По...
 
Darirunu : Çok zor. Muhtemelen daha kolay bir seçenek vardır. Herkes paylaşabilir mi?
 //+-------------------------------------------------------+
//| Проверка дней недели                       PRVERKA.mq4|
//+-------------------------------------------------------+

#property strict
string Дни[ 7 ]={ "Вс" , "Понедельник" , "Вторник" , "Среда" , "Четверг" , "Пятница" , "Сб" };
void OnStart ()
{
   int День= Day (), ДеньН= DayOfWeek ();
   Alert ( "----------------------" );
   Alert ( "Сейчас на компьютере: " , TimeToStr ( TimeLocal (), TIME_DATE ));
   Alert ( "Последний тик с сервера: " , TimeToStr ( TimeCurrent (), TIME_DATE ), " Число " , День, " " , Дни[ДеньН]);

   int ДеньНачалаМесяца = (ДеньН-День+ 36 ) % 7 ;
   Alert ( "ДеньНеделиПервогоЧисла = " , Дни[ДеньНачалаМесяца]);

   int ЧислоПервойПятницы = ДеньНачалаМесяца== 6 ? 7 : 6 -ДеньНачалаМесяца;
   int ЧислоВторогоПонедл = (ДеньНачалаМесяца< 2 ? 9 : 16 )-ДеньНачалаМесяца;

   Alert ( "ЧислоПервойПятницы = " , ЧислоПервойПятницы, "  ЧислоВторогоПонедл = " , ЧислоВторогоПонедл);

   if (ЧислоВторогоПонедл>День)
  {
     Alert ( "Надо подождать числа " , ЧислоВторогоПонедл+ 1 );
     return ;
  }

   // Смотрим свечи, бары, бычьи, медвежьи
}
burada, yukarıdaki algoritmaya göre aşağıdan yukarıya doğru okuyun
 
STARIJ :

Bu parçanın ikinci satırında bir hata olduğu size zaten söylendi: OrderType() işlevini çağırmadan önce, OrderSelect() işlevi kullanılarak bir sipariş seçilmelidir.

3. satırda bir hata var: Ama numara ile bir sipariş var mı? Minimum sayı 1 ise, yani. hesap 1'den başlarsa, maksimum sayı sayıya eşit olacaktır (toplam 5 sipariş olsun: sipariş numaraları 1, 2, 3, 4, 5). Ancak siparişler 0'dan numaralandırılmıştır - İmleci OrdersHistoryTotal üzerine getirin ve F1'e basın, bir örneğe bakın. Peki maksimum sipariş numarası nedir?

int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))
   int tip=OrderType();
   

ve şimdi doğru mu?

 
Lowech :
int 1 = OrdersHistoryTotal();
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))   - так какой наибольший номер ордера?
   int tip=OrderType();

ve şimdi doğru mu?

bir komut dosyası yazın ve her ifadeden sonra Alert() işleviyle + GetLastError() bilgilerini görüntüleyin - hemen yukarıdaki komut dosyası örneğine bakın
 
STARIJ :
bir komut dosyası yazın ve her ifadeden sonra Alert() işleviyle + GetLastError() bilgilerini görüntüleyin - hemen yukarıdaki komut dosyası örneğine bakın

yalnızca yazdırmak için _LastError değişkeninden hata kodunu almak daha iyidir, aksi takdirde mantığı hafif bir "debug print" ile yok edebilirsiniz

GetLastError() ayrıca GetXXX() için açık olmayan bir şey yapar - dahili durumu değiştirir, hata kodunu 0'a sıfırlar.

 
Maxim Kuznetsov :

yalnızca yazdırmak için _LastError değişkeninden hata kodunu almak daha iyidir, aksi takdirde mantığı hafif bir "debug print" ile yok edebilirsiniz

GetLastError() ayrıca GetXXX() için açık olmayan bir şey yapar - dahili durumu değiştirir, hata kodunu 0'a sıfırlar.

peki, bu bir zevk meselesi - ya hata kodunu bir değişkende saklayın ve hatayı sıfırlayın ya da daha sonra kullanmak üzere _LastError'da saklayın

 
STARIJ :
burada, yukarıdaki algoritmaya göre aşağıdan yukarıya doğru okuyun
Çabuk anladın. Barları nasıl bulacaksınız? Kullanılacak bir döngü veya zaman yapısında mı?
Neden: