MQL5 dilini sıfırdan kendi kendine öğrenme - sayfa 70

 
MrBrooklin :

Her şeyi uygun adıyla çağırmalıyız - şu anda programlamada , bir mantar kadar aptal ! Temel şeyleri anlamıyorum. Elektronikte, gençlikte kazanılan bilgiler, örneğin bir oda zilinden uzaktan kumandalı bir radyo düğmesinin onarılmasına yardımcı olmasına rağmen. Geçen hafta sonu, bir multimetre ve büyükbabamın büyüteci kullanarak, mikroskobik boyutta hatalı bir SMD kapasitör buldum. Bir arıza, bir kısa devre veya bir "keçi" gösterdi, kısaltmadan kısa devre dedikleri gibi, yani. kısa devre. İşte bir akıllı telefonda 4x büyütmeli ve ardından Paint'te işlenen "delikli" bir SMD kondansatörünün fotoğrafı, çünkü çok mikroskobik.


Konudan biraz uzaklaşmaya ve en azından övünecek bir şeye karar verdim!

Ve dili öğrenme arzusu, olduğu şekilde ve ayrıca programlamanın temellerini anlama umudu hakkında.

Saygılarımla, Vladimir


Sınıf! Bütün bunlar, bu arada, yakınlarda ...
Üniversitemizde 90'lı yıllarda okudum, bu bölümler aynı bilişim fakültesi bünyesindeydi.
 
Roman Shiredchenko :

Burada - sizinle aynı fikirde olmama izin verin, kodlayabilirsiniz, özüne inmenizi engelleyen şey ... anlamak vb. ... ayrıca IMHO, makaleler var, kod tabanında robotlar var - okuyun, sökün zaten hazır olan kod - hemen yazma stilini öğrenin. Neden tekerleği yeniden icat etmeniz gerekiyor? Yetkili kodlardan hemen öğrenin.

İşte V. Karputov'dan bir trol - ROBOTLAR'da düzenlendi, bak - ihtiyaçlarınıza göre düzenleyin (koşullar ve fantezileriniz).

not sizin sayenizde, şubenin konusu, kodu, özelliklerde ..., makaleleri incelemeye ve kendim için temel şeyleri tekrarlamaya başladım ...

Şube için teşekkürler! :-) (şaka yapmıyorum)

Merhaba Roman! Oluşturulan konunun kendimden başka birine yardımcı olduğunu okumak güzel. Teşekkür ederim!

Vladimir Karputov'un yazdığı kodlara gelince, bu benim için henüz ulaşılabilir bir seviye değil. Dosyaları ve sınıfları içeren kodları hiç anlamıyorum. Şu veya bu dosyanın neden şu veya bu Uzman Danışmana dahil edildiği büyük bir muamma!

Büyük ölçüde, dahil edilen dosyalar ve sınıflar olmadan yazılmış kodları arar ve çalışırım. Kendi kendine çalışma için Vladimir Khlystov tarafından yazılan danışmanlar çok iyidir. Ona özel ve BÜYÜK TEŞEKKÜRLER! MQL5'te çok az sayıda Uzman Danışmana sahip olması üzücü.

Şimdi neden hazır bir kodla sormamanızı istediğimi açıklayacağım. Gerçek şu ki, hazır bir kod istendiğinde, dili derinlemesine incelemeye olan ilgi zaten kaybolur. Hazır kodu danışmanıma ekledim, işe yaradı ve ne işe yarar? Ancak bir şey hemen anlaşılıp yazılamadığında, örneğin, şimdi bisiklet operatörüyle bir yanlış anladığım gibi, o zaman tam tersi oluyor, bu beni o kadar teşvik ediyor ve motive ediyor ki annem üzülmüyor!

MQL5 dilini öğrenmede yanlış bir şey görmüyorum. Sadece şimdi hayatımda elektronikle meşgul olduğum ve bir element tabanını çalışmaktan başka bir elementi incelemeye geçtiğim aynı aşamaya sahibim. Tek fark, gençlikte her şeyin şimdi olduğundan daha kolay algılanması ve özümsenmesidir. Zaten hissettim.

Destek ve yapıcı tavsiye sözleri için TÜMÜ'ne içten şükranlarımı sunarım! MQL5 programlama dilini öğrenmek - devam edin! Yarım gün "kaybolacağım" çünkü Moskova'nın diğer ucuna gitmem gerekiyor ve sonra devam edeceğim.

Saygılarımla, Vladimir.

 
Aleksey Masterov :

Sınıf! Bütün bunlar, bu arada, yakınlarda ...
Üniversitemizde 90'lı yıllarda okudum, bu bölümler aynı bilişim fakültesi bünyesindeydi.

  90'larda diploma satın aldılar.

- Bu başkanların bütün ofislerde oturduğu artık belli değil mi?

 
SanAlex :

  90'larda diploma satın aldılar.

- Bu başkanların bütün ofislerde oturduğu artık belli değil mi?

O zaman diploma satın almakla ilgili bile değil, gerçek şu ki, son 30 yılda teknoloji o kadar ileri adım attı ki bu bilgi zaten ÇOK eksik, örneğin, sonra AutoCAD'de eğitimimi bitirmek zorunda kaldım, ki o zaman yoktu, ben de ÇOK temel C++ yaptım. ve böylece her şeyde sürekli çalışmanız, geliştirmeniz, zamana ayak uydurmanız gerekir)

 
VVT :

O zaman diploma satın almakla ilgili bile değil, gerçek şu ki, son 30 yılda teknoloji o kadar ileri adım attı ki bu bilgi zaten ÇOK eksik, örneğin, sonra AutoCAD'de eğitimimi bitirmek zorunda kaldım, ki o zaman yoktu, ben de ÇOK temel C++ yaptım. ve böylece her şeyde sürekli çalışmanız, geliştirmeniz, zamana ayak uydurmanız gerekir)

son 30 yılda teknoloji o kadar ilerledi ki hala 60'lardaki gelişmeleri kullanıyor

 

Herkese iyi günler!

Biraz eklemek istedim, konu ilginç, bana öyle geliyor ki, bir kişi programlamada 0 ise, " MQL5 dilini tamamen sıfırdan kendi kendine öğrenme" fikri tamamen doğru değil, o zaman önce programlamayı öğrenmesi gerekir. Amaç MQL'de sıfırdan nasıl programlanacağını öğrenmekse, o zaman önce en azından temel olarak C'de nasıl programlanacağını öğrenmeniz ve ardından MQL esasen C olduğu için MQL'de nasıl yazılacağını öğrenmeniz gerekir. belirli bir görev için keskinleştirilmiş kişi, döngülerin nasıl çalıştığını anlamıyor, ancak zaten tüm programlarda yazmaya çalışıyor. Rusça bilmeden Fenya öğrenmeye çalışmak gibi...

Başka bir şey de, C'nin programlama öğrenmek için en kolay dil olmamasıdır, basittir, ancak çok özlüdür, yeni başlayanlar için algoritmalar, veri türleri, Boole cebri hakkında temel kavramlara sahip olmadan kodu okuması ve anlaması zordur. C'de arka arkaya üç karakter, başka bir dilde birkaç satırın anlamını taşıyabilir.

Temel olarak sıfırdan programlamayı öğrenmek, bir bilgisayarla (hangisi olduğu önemli değil) bir dilde konuşmayı öğrenmek için, çözmeye başlamak için en kolay kitap olan Pascal ile başlamanızı tavsiye ederim. (2-3 hafta rahat), sonra C (burada, pascal'dan sonra, özenle maksimum bir hafta, sözdizimine hakim olun, dilin temel bilgisinden bahsediyorum!) ve ancak o zaman aşağıdaki gibi özel dilleri alın. MQL, çünkü MQL, C olduğu için, bir görevde keskinleştirildiğinden ve derleyici bariz olanı bildiğinden, birkaç sıkıntısı ama aynı zamanda basitleştirmeleri de var. Ve C, sırayla, RAR tarafından sıkıştırılmış böyle bir paskaldır, ancak Pascal neredeyse İngilizcedir =).

Şimdi döngüler için:

Programlamayı öğrenirken, cebirdeki toplam ile analoji bana yardımcı oldu, burada n'nin başlangıç değeri, n'nin son değeri ve hesaplama için bu n ile formül gösterilir.

 
VVT :

O zaman diploma satın alma yeteneği ile ilgili bile değil, gerçek şu ki, son 30 yılda teknoloji o kadar ileri adım attı ki bu bilgi zaten ÇOK eksik, örneğin, sonra çalışmalarımı AutoCAD'de bitirmek zorunda kaldım. sadece o zaman yoktu, ben de ÇOK temel C++ yaptım. ve böylece her şeyde sürekli çalışmanız, geliştirmeniz, zamana ayak uydurmanız gerekir)



:-) bir autocad vardı. Temelinde sınıflarımız vardı, devreleri ve katmanların düzenini öğrettik ... baskılı devre kartları
 
Aleksey Masterov :
:-) bir autocad vardı. Temelinde sınıflarımız vardı, devreleri ve katmanların düzenini öğrettik ... baskılı devre kartları

Sadece dersin sonunda yüklenen sadece 22 bilgisayarımız vardı) öğretmen gün boyunca onları kapatmadı, çalışmak imkansızdı, cad hakkında bir konuşma bile yoktu...

 
MrBrooklin :

Merhaba Roman! Oluşturulan konunun kendimden başka birine yardımcı olduğunu okumak güzel. Teşekkür ederim!

Vladimir Karputov'un yazdığı kodlara gelince, bu benim için henüz ulaşılabilir bir seviye değil. Dosyaları ve sınıfları içeren kodları hiç anlamıyorum. Şu veya bu dosyanın neden şu veya bu Uzman Danışmana dahil edildiği büyük bir muamma!

Büyük ölçüde, dahil edilen dosyalar ve sınıflar olmadan yazılmış kodları arar ve çalışırım. Kendi kendine çalışma için Vladimir Khlystov tarafından yazılan danışmanlar çok iyidir. Ona özel ve BÜYÜK TEŞEKKÜRLER! MQL5'te çok az sayıda Uzman Danışmana sahip olması üzücü.

Şimdi neden hazır bir kodla sormamanızı istediğimi açıklayacağım. Gerçek şu ki, hazır bir kod istendiğinde, dili derinlemesine incelemeye olan ilgi zaten kaybolur. Hazır kodu danışmanıma ekledim, işe yaradı ve ne işe yarar? Ancak bir şey hemen anlaşılıp yazılamadığında, örneğin, şimdi bisiklet operatörüyle bir yanlış anladığım gibi, o zaman tam tersi oluyor, bu beni o kadar teşvik ediyor ve motive ediyor ki annem üzülmüyor!

MQL5 dilini öğrenmede yanlış bir şey görmüyorum. Sadece şimdi hayatımda elektronikle uğraştığım ve bir element tabanını incelemekten başka bir elementi incelemeye geçtiğimde aynı aşamaya sahibim. Tek fark, gençlikte her şeyin şimdi olduğundan daha kolay algılanması ve özümsenmesidir. Zaten hissettim.

Destek ve yapıcı tavsiye sözleri için TÜMÜ'ne içten şükranlarımı sunarım! MQL5 programlama dilini öğrenmek - devam edin! Yarım gün "kaybolacağım" çünkü Moskova'nın diğer ucuna kadar işe gitmem gerekiyor ve sonra devam edeceğim.

Saygılarımla, Vladimir

Evet. Katılıyorum - onun kodları da çalıyor ! Kendinizi sıfırdan kuruyorsunuz. Kodu acele etmeden sakince anlayın ve hepsi bu. Burada her şey basit - seçtik ve trolledik: (çok daha kolay - sadece GEREKLİ pozisyonu seçme konunuz ... :-))

 //--- при таком методе мы будет сюда попадать на каждом тике.
   for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--)
       if (m_position.SelectByIndex(i))
         if (m_position. Symbol ()== Symbol () && m_position.Magic()==m_magic)
           {
             //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции
             if (m_position.PositionType()== POSITION_TYPE_BUY )
              {
               //--- когда у позиции ещё нет StopLoss
               if (m_position.StopLoss()== 0 )
                 {
                   //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                   if (m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(), 0.0 );
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                   //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                   //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                   if (m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                             NormalizeDouble (m_symbol.Bid()-ExtTrailingStop,m_symbol. Digits ()), 0.0 );
                    }
                 }
              }

             if (m_position.PositionType()== POSITION_TYPE_SELL )
              {
               //--- когда у позиции ещё нет StopLoss
               if (m_position.StopLoss()== 0 )
                 {
                   //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                   if (m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(), 0.0 );
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                   //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                   //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                   if (m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                             NormalizeDouble (m_symbol.Ask()+ExtTrailingStop,m_symbol. Digits ()), 0.0 );
                    }
                 }
              }
           }
  }

Ek olarak, dahil edilen dosyalar - bu, onların tür kodunuzda işlevler biçiminde de bulundukları anlamına gelir ve hepsi bu.

 #include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
 

İşte başka bir makale - 2010'dan sonra - takip, MACD'nin standart teslimatından Expert Advisor'da.



İşte pozisyon hacmi hesaplaması hakkında bir başka harika çiğneme !!! Kendimi derinleştirdim... :-)

Bir sembol üzerindeki bir konumun toplam hacmini belirlemenin başka bir yolu daha vardır - bir döngüdeki tüm konumları gözden geçirin, konum sayısı PositionsTotal() işlevi tarafından belirlenir. PositionGetSymbol() işleviyle kontrol ederek, istenen sembolü bulun ve konumun hacmini ve yönünü belirleyin ( POSITION_VOLUME kimliğine sahip PositionGetDouble( ) ve POSITION_TYPE kimliğine sahip PositionGetInteger() ).

Bu durumda, tam olarak hazırlanmış fonksiyon şöyle görünecektir:

 double fSymbolLots( string aSymbol)
  {
   double TmpLots= 0 ;
   for ( int i= 0 ;i< PositionsTotal ();i++) // Перебор всех позиций
     {
       if ( PositionGetSymbol (i)==aSymbol) // Найдена позиция с заданным символом
        {
         TmpLots= PositionGetDouble ( POSITION_VOLUME );
         if ( PositionGetInteger ( POSITION_TYPE )== POSITION_TYPE_SELL )
           {
            TmpLots*=- 1 ; // В зависимости от направления позиции устанавливаем знак числа
           }
         break ;
        }
     }
   TmpLots= NormalizeDouble (TmpLots, 2 );
   return (TmpLots);
  }
Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...
Neden: