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

 

MakarFX, ancak bu paket: hangi işlevi yerine getiriyor?


giriş int BarTrade = 5; // Bunun izlenen dönem sayısı olduğunu anlıyorum, bunlardan 5 tane var.

int TimeBarTrade=BarTrade*Period()*60; // ve burada nasıl anlaşılır? Neden 60 ile çarpılıyor?

 
Alexey Belyakov :

MakarFX, ancak bu paket: hangi işlevi yerine getiriyor?


giriş int BarTrade = 5; // Bunun izlenen dönem sayısı olduğunu anlıyorum, bunlardan 5 tane var.

int TimeBarTrade=BarTrade*Period()*60; // ve burada nasıl anlaşılır? Neden 60 ile çarpılıyor?

BarTrade*Dönem()*60

çubuk sayısı * mevcut zaman dilimi * 60 saniye

onlar. çubuk sayısı saniyeye dönüştürülür

 
MakarFX :

BarTrade*Dönem()*60

çubuk sayısı * mevcut zaman dilimi * 60 saniye

onlar. çubuk sayısı saniyeye dönüştürülür

Öyle olabilir.

 int TimeBarTrade = PeriodSeconds ()*BarTrade;
 
MakarFX :

ile ilgili hatalar dışında

MODE_STOPLEVEL, MODE_TRADEALLOWED, MODE_MINLOT , MODE_LOTSTEP , MODE_MAXLOT

o zaman baykuşlar sunucuyu çekiçlemeyecek

Makar - Sunucuya eziyet etmekten ve danışman J'yi yasaklamaktan kaçınmak için hangi kontrollerin yapılması gerektiğini önerdiğiniz için çok teşekkür ederiz.

kontrolleri bu şekilde yaptım

durdurmak için moda durdurma seviyesi

         //ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА 
         if (sl<MarketInfo( Symbol (),MODE_STOPLEVEL)) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          sl= MarketInfo( Symbol (),MODE_STOPLEVEL); //СТОП  ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }

kar için moda durdurma seviyesi

       // ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИ
      
   if (tp<MarketInfo( Symbol (),MODE_STOPLEVEL)) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          tp= MarketInfo( Symbol (),MODE_STOPLEVEL); // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }
         


Ticaret izni kontrol ediliyor

 //---- ПРОВЕРКА НА РАЗРЕШЕНИЕ ТОРГОВ ПЕРЕД ОТКРЫТИЕМ ОРДЕРОВ
   if (MarketInfo( Symbol (),MODE_TRADEALLOWED)== true )
   { // начало есл торговля разрешена
   /*
куча проверок на условия открытия и само открытие ордеров
*/
} // КОЕНЦ ПРОВЕРКИ НА РАЗРЕШЕНИЕ ТОРГОВЛИ
          
           else //ИНАЧЕ ЕСЛИ ТОРГОВЛЯ НЕ РАЗРЕШЕНА 
          
          { // НАЧАЛО ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ 
          
           Print ( "ТОРГИ НЕ РАЗРЕШЕНЫ- ПЫТАТЬСЯ ОТКРЫТЬ ОРДЕРА НЕ БУДЕМ" );
          }   // КОЕНЦ ЭЛС ЕСЛИ ТОРГИ НЕ РАЗРЕШЕНЫ

Maksimum ve minimum lot kontrolü

İlk olarak, bunun gibi değişkenlerde max lot ve min lot değerini aldım.

   double Min_Lot =MarketInfo( Symbol (),MODE_MINLOT);   // МИНИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ
double Max_Lot =MarketInfo( Symbol (),MODE_MAXLOT);     // МАКСИМАЛЬНЫЙ ЛОТ РАЗРЕШЁННЫЙ БРОКЕРОМ

Ve sonra, Kâse yazarken aşağı doğru bir yerde bir kontrol yaparım.

   if (lot<Min_Lot) lot=Min_Lot; //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ МЕНЬШЕ ЧЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ЛОТ ПРИСВАЕМАЕМ МИНИМАЛЬНЫЙ ЛОТ У БРОКЕРА
if (lot>Max_Lot) lot=Max_Lot;   //ЕСЛИ ЛОТ ПОЛУЧИЛСЯ БОЛЬШЕ ЧЕМ МАКСИМАЛЬНЫЙ ЛОТ У БРОКЕРА ТО ОЛТ ПРИСВАЕВАЕМ МАКС ЛОТ У БРОКЕРА

Bu çekleri kaydettiğim veya bir yerde hata yaptığım doğru mu?

Parti değiştirme adımını kontrol etmedim, çünkü lot depozito yüzdesi olarak hesaplanır ve orada bu değer nokta ile çarpılır ve normalleştirilir - yani bu kontrol atlanabilir - doğru mu, yoksa hala mı? kontrol etmek gerekiyor mu? Hala kontrol etmeniz gerekiyorsa, bu çek nasıl yazılır?

Ve tüm bu kontrollerin özü, her zaman stop, kar, lot büyüklüğünün doğru değerine sahip olmaktır ve böylece prensipte, emirleri açmaya başlayabilirsiniz. Tüm bu parametreler iyiyse, danışman sunucuya tecavüz etmeyecek - tüm bu mutfağı doğru anlıyor muyum?

 
DanilaMactep :

Makar - Sunucuya eziyet etmekten ve danışman J'yi yasaklamaktan kaçınmak için hangi kontrollerin yapılması gerektiğini önerdiğiniz için çok teşekkür ederiz.


 //ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА
 // ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИ

Burada kayma nedeniyle 130 hatası oluşabilir .

yapardım

         //ПРОВЕРКА НА МОДЕ СТОП ЛЕВЕЛ- МИНИМАЛЬНЫЙ УРОВЕНЬ СТОПА 
         if (sl<MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ) // ЕСЛИ СТОПОЛС МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          sl= MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ; //СТОП  ЛОССУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }
       // ПРОВЕРКА ТЕЙК ПРОФИТА НА МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ УСТАНОВКИ
      
   if (tp<MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ) // ЕСЛИ ПРОФИТ МЕНЬШЕ ЧЕМ МИНИМАЛЬНО ДОПУСТИМЫЙ УРОВЕНЬ ЕГО УСТАНОВКИ ТО 
         {
          tp= MarketInfo( Symbol (),MODE_STOPLEVEL) *1.5 ; // ПРОФИТУ ПРИСВАЕВАЕМ МИНИМАЛЬНО ДОПУСТИМУЮ ВЕЛИЧИНУ ЕГО УСТАНОВКИ
         }
         
 

Herkese merhaba! iHighest/iLowest aracılığıyla bulunan bir çizelgede sarkan noktalarla ilgili bir sorunu olan var mı?

Arka plan: programlama deneyimi minimumdur, mql4'te, koşullar tarafından bulunan grafikte noktaları göstermesi ve bunları çizgilerle birleştirmesi gereken bir gösterge yazıyorum. Mantıksal olarak, noktaları doğru arar, ancak onları ofsetlerle, sonra 2 çubukla, sonra 3 çubukla çizer. Nasıl başa çıkılır bununla? Kod dosyasını da ekledim.


 int start()
  {
   int counted_bars=IndicatorCounted(); //хранит количество посчитанных индикатором баров. Функция IndicatorCounted() возвращает количество неизмененных баров после прошлого вызова функции start().
   int n,limit;
   int val_index;
   
   if (counted_bars> 0 )
      counted_bars--;
   limit= Bars -counted_bars; //количество последних баров, которые нужно пересчитать.
   if (limit>barsToProcess)
      limit=barsToProcess;

   for (n= 0 ; n<=limit; n++)
     {
       if ((Close[n+ 1 ]>Open[n+ 1 ] && Open[n+ 2 ]>=Close[n+ 2 ]) || (Close[n+ 1 ]>Open[n+ 1 ] && Open[n+ 3 ]>Close[n+ 3 ]))
        {
         val_index= iLowest ( NULL , 0 , MODE_LOW , 3 ,n+ 1 );
         myAZBuffer[n]=Low[val_index];
         ExtLowBuffer[n]=Low[val_index];
        }
       else
         if ((Open[n+ 1 ]>Close[n+ 1 ] && Close[n+ 2 ]>=Open[n+ 2 ]) || (Close[n+ 1 ]<Open[n+ 1 ] && Close[n+ 3 ]>Open[n+ 3 ]))
          {
            val_index= iHighest ( NULL , 0 , MODE_HIGH , 3 ,n+ 1 );
            myAZBuffer[n]=High[val_index];
            ExtHighBuffer[n]=High[val_index];
           }
     }
   return ( 0 );
  }
Dosyalar:
AZforum.mq4  8 kb
 
azolotta :

Herkese merhaba! iHighest/iLowest aracılığıyla bulunan bir çizelgede sarkan noktalarla ilgili bir sorunu olan var mı?

Arka plan: programlama deneyimi minimumdur, mql4'te, koşullar tarafından bulunan grafikte noktaları göstermesi ve bunları çizgilerle birleştirmesi gereken bir gösterge yazıyorum. Mantıksal olarak, noktaları doğru arar, ancak onları ofsetlerle, sonra 2 çubukla, sonra 3 çubukla çizer. Nasıl başa çıkılır bununla? Kod dosyasını da ekledim.


noktalar ofset olmadan doğru şekilde çizilir

koşul karşılanırsa ve iYüksek /Düşük değeri mevcut Yüksek/Düşük değerinden büyük veya küçükse

sonra çizer


 
MakarFX :

noktalar ofset olmadan doğru şekilde çizilir

koşul karşılanırsa ve iYüksek/Düşük, mevcut Yüksek/Düşük değerinden büyük veya küçükse

sonra çizer


yani, hatamı anlamaya başlıyorum) Görünüşe göre bu noktaları doğru yerde görsel olarak görüntülemek için myAZBuffer[n], ExtLowBuffer[n] için n yerine bir çeşit ayrı sayaç girmem gerekiyor. , ExtHighBuffer[n] ? ama bunu nasıl
 
azolotta :
yani, hatamı anlamaya başlıyorum) Görünüşe göre bu noktaları doğru yerde görsel olarak görüntülemek için myAZBuffer[n], ExtLowBuffer[n] için n yerine bir çeşit ayrı sayaç girmem gerekiyor. , ExtHighBuffer[n] ? ama bunu nasıl

hayır doğru anladın

koşul, geçmişten iki veya üç çubuk kullanır,

bu nedenle koşul karşılandığında 2-3 çubuktan sonra çeker

 
MakarFX :

hayır doğru anladın

koşul, geçmişten iki veya üç çubuk kullanır,

bu nedenle koşul karşılandığında 2-3 çubuktan sonra çeker

tamam, ama o zaman, örneğin, son 3 çubuktan (if içindeki koşulları karşılayan) en yüksek tepeyi seçip üzerine bir nokta koymam gerekirse (tam bu yükseklikte!), sonra da kodu nasıl yeniden işleyebilirim? düşük noktayı bulun.