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

 
Artyom Trishkin :
Bu, EA ayarları penceresinin standart ayarlarıyla ilgisi olmayan basit bir yazılım sınırlamasıdır - bu ayarlar EA ayarlarına aittir ve EA'da kontrol edilir.

Teşekkürler, nasıl çalıştığını şimdi anladım

 
Alexandr Sokolov :
Kodda TP veya SL'ye ulaşıldığında kar veya zarar değerleri nasıl alınır?

Örneğin, marjı alabileceğiniz AccountFreeMarginCheck() işlevi vardır. Ve belirtilen sembol, hacim ve sipariş türü üzerinde en azından bir noktanın maliyetini belirleme işlevi yoktur.

MQL4

https://www.mql5.com/ru/forum/131859/page3

burada ara. birçok fonksiyon var. belki kendin düzeltebilirsin ve normal olur

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

Ancak, TF çizelgesini tahmin ederken yeniden hesaplama işlevi nasıl ayarlanır?

 
Lomonosov1991 :

Ancak, TF çizelgesini tahmin ederken yeniden hesaplama işlevi nasıl ayarlanır?

Belgeler de var. Bazen geçiş yapabilirsiniz. Bir işlev vardır: UninitializeReason() , başlatma kaldırma neden kodunu döndürür. Ve hatta örnekler var.

Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
Документация по MQL5: Константы, перечисления и структуры / Именованные константы / Причины деинициализации
  • www.mql5.com
//| get text description                                             | //| Expert deinitialization function                                 |
 

İyi akşamlar. Bir arkadaşımın isteği üzerine standart MT5 Stokastik göstergesinden Stoch_HISTOGRAM_MQL5_3'ün değiştirilmiş bir versiyonunu yaptım

Bu versiyonda, gösterge bir histogram olarak görüntülenir. Yoldaş, 50'nin üzerindeki çubukların yeşil ve aşağıdakilerin kırmızı olmasını istedi.

Benim için bu tamamen yeni bir deneyim, histogramlarla başa çıkmış gibiyim ama rengi nasıl değiştireceğimi anlamıyorum, beynim patladı. Yardım tavsiyesi pliz.

Aşağıdaki kodu yapıştıracağım, dosyayı ekleyeceğim.

 //+------------------------------------------------------------------+
//|                                       Stoch_HISTOGRAM_MQL5_3.mq5 |
//|                   Copyright 2009-2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009-2017, MetaQuotes Software Corp."
#property link        "http://www.mql5.com"
//--- indicator settings
#property indicator_separate_window
#property indicator_buffers 6
#property indicator_plots    3
#property indicator_type1    DRAW_LINE
#property indicator_type2    DRAW_LINE
#property indicator_type3    DRAW_HISTOGRAM2
#property indicator_type4    DRAW_HISTOGRAM2
#property indicator_color1   LightSeaGreen
#property indicator_color2   Blue
#property indicator_color3   Green
#property indicator_style2    STYLE_DOT
#property indicator_style3    STYLE_SOLID
//--- input parameters
input int InpKPeriod= 5 ;   // K period
input int InpDPeriod= 3 ;   // D period
input int InpSlowing= 3 ;   // Slowing
//--- indicator buffers
double     ExtMainBuffer[];
double     ExtSignalBuffer[];
double     HISTOGRAM2_1[];
double     HISTOGRAM2_2[];
double     ExtHighesBuffer[];
double     ExtLowesBuffer[];
color      colors[]={ clrRed , clrGreen };
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtMainBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 1 ,ExtSignalBuffer, INDICATOR_DATA );
   SetIndexBuffer ( 2 ,HISTOGRAM2_1, INDICATOR_DATA );
   SetIndexBuffer ( 3 ,HISTOGRAM2_2, INDICATOR_DATA );
   SetIndexBuffer ( 4 ,ExtHighesBuffer, INDICATOR_CALCULATIONS );
   SetIndexBuffer ( 5 ,ExtLowesBuffer, INDICATOR_CALCULATIONS );
//--- set accuracy
   IndicatorSetInteger ( INDICATOR_DIGITS , 2 );
//--- set levels
   IndicatorSetInteger ( INDICATOR_LEVELS , 3 );
   IndicatorSetDouble ( INDICATOR_LEVELVALUE , 0 , 20 );
   IndicatorSetDouble ( INDICATOR_LEVELVALUE , 1 , 50 );
   IndicatorSetDouble ( INDICATOR_LEVELVALUE , 2 , 80 );
////--- установим пустое значение для HISTOGRAM2
//   PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0);   
//--- set maximum and minimum for subwindow 
   IndicatorSetDouble ( INDICATOR_MINIMUM , 0 );
   IndicatorSetDouble ( INDICATOR_MAXIMUM , 100 );
//--- name for DataWindow and indicator subwindow label
   IndicatorSetString ( INDICATOR_SHORTNAME , "Stoch_HISTOGRAM(" +( string )InpKPeriod+ "," +( string )InpDPeriod+ "," +( string )InpSlowing+ ")" );
   PlotIndexSetString ( 0 , PLOT_LABEL , "Main" );
   PlotIndexSetString ( 1 , PLOT_LABEL , "Signal" );
   PlotIndexSetString ( 2 , PLOT_LABEL , "UP" );
   PlotIndexSetString ( 3 , PLOT_LABEL , "LOW" );
//--- sets first bar from what index will be drawn
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,InpKPeriod+InpSlowing- 2 );
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN ,InpKPeriod+InpDPeriod);
   PlotIndexSetInteger ( 2 , PLOT_DRAW_BEGIN ,InpKPeriod+InpSlowing- 2 );
   PlotIndexSetInteger ( 3 , PLOT_DRAW_BEGIN ,InpKPeriod+InpSlowing- 2 );
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Stochastic Oscillator                                            |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
   int i,k,start;
//--- check for bars count
   if (rates_total<=InpKPeriod+InpDPeriod+InpSlowing)
       return ( 0 );
//---
   start=InpKPeriod- 1 ;
   if (start+ 1 <prev_calculated) start=prev_calculated- 2 ;
   else
     {
       for (i= 0 ;i<start;i++)
        {
         ExtLowesBuffer[i]= 0.0 ;
         ExtHighesBuffer[i]= 0.0 ;
        }
     }
//--- calculate HighesBuffer[] and ExtHighesBuffer[]
   for (i=start;i<rates_total && ! IsStopped ();i++)
     {
       double dmin= 1000000.0 ;
       double dmax=- 1000000.0 ;
       for (k=i-InpKPeriod+ 1 ;k<=i;k++)
        {
         if (dmin>low[k])  dmin=low[k];
         if (dmax<high[k]) dmax=high[k];
        }
      ExtLowesBuffer[i]=dmin;
      ExtHighesBuffer[i]=dmax;
     }
//--- %K
   start=InpKPeriod- 1 +InpSlowing- 1 ;
   if (start+ 1 <prev_calculated) start=prev_calculated- 2 ;
   else
     {
       for (i= 0 ;i<start;i++) ExtMainBuffer[i]= 0.0 ;
     }
//--- main cycle
   for (i=start;i<rates_total && ! IsStopped ();i++)
     {
       double sumlow= 0.0 ;
       double sumhigh= 0.0 ;
       for (k=(i-InpSlowing+ 1 );k<=i;k++)
        {
         sumlow +=(close[k]-ExtLowesBuffer[k]);
         sumhigh+=(ExtHighesBuffer[k]-ExtLowesBuffer[k]);
        }
       if (sumhigh== 0.0 ) ExtMainBuffer[i]= 100.0 ;
         else           ExtMainBuffer[i]=sumlow/sumhigh* 100 ;
       if (ExtMainBuffer[i]> 50 ){
         HISTOGRAM2_1[i]= 50 ; 
         HISTOGRAM2_2[i]=ExtMainBuffer[i]; 
         //colors[i]=clrGreen;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrGreen);
         } 
       if (ExtMainBuffer[i]< 50 ){
         HISTOGRAM2_1[i]=ExtMainBuffer[i]; 
         HISTOGRAM2_2[i]= 50 ; 
         //colors[i]=clrRed;
         //PlotIndexSetInteger(2,PLOT_LINE_COLOR,clrRed);
         } 
       //PlotIndexSetInteger(2,PLOT_LINE_COLOR,colors[i]);
     }
//--- signal
   start=InpDPeriod- 1 ;
   if (start+ 1 <prev_calculated) start=prev_calculated- 2 ;
   else
     {
       for (i= 0 ;i<start;i++) ExtSignalBuffer[i]= 0.0 ;
     }
   for (i=start;i<rates_total && ! IsStopped ();i++)
     {
       double sum= 0.0 ;
       for (k= 0 ;k<InpDPeriod;k++) sum+=ExtMainBuffer[i-k];
      ExtSignalBuffer[i]=sum/InpDPeriod;
     }
//--- OnCalculate done. Return new prev_calculated.
   return (rates_total);
  }
//+------------------------------------------------------------------+
Dosyalar:
 
Sergey Voytsekhovsky :

İyi akşamlar. Bir arkadaşımın isteği üzerine standart MT5 Stokastik göstergesinden Stoch_HISTOGRAM_MQL5_3'ün değiştirilmiş bir versiyonunu yaptım

Bu versiyonda, gösterge bir histogram olarak görüntülenir. Yoldaş, 50'nin üzerindeki çubukların yeşil ve aşağıdakilerin kırmızı olmasını istedi.

Benim için bu tamamen yeni bir deneyim, histogramlarla başa çıkmış gibiyim ama rengi nasıl değiştireceğimi anlamıyorum, beynim patladı. Yardım tavsiyesi pliz.

Aşağıdaki kodu yapıştıracağım, dosyayı ekleyeceğim.

Harika. DRAW_HISTOGRAM2'yi görmek ve DRAW_COLOR_HISTOGRAM2'yi görmemek için belgeleri nasıl okuyabilirsiniz?

Evet ve ekstra arabellekler duyuruldu.
 
Alexey Viktorov :

Harika. DRAW_HISTOGRAM2'yi görmek ve DRAW_COLOR_HISTOGRAM2'yi görmemek için belgeleri nasıl okuyabilirsiniz?

Evet ve ekstra arabellekler duyuruldu.

Yorum için teşekkürler. Ooooh, dokümanları okurken, dokunarak yollar ve çözümler ararken, sanki bir sis içinde, öğretmen, akıl hocası, daha deneyimli arkadaş vb. yokken ne kadarını fark edemediğinizi hayal bile edemezsiniz. Çok teşekkür ederim, DRAW_COLOR_HISTOGRAM2'yi zaten buldum, anlamını anladım, hemen yeniden yapacağım.

Ekstra tamponlar hakkında daha detaylı pliz olabilir mi? Deneyim asla gereksiz değildir ve tamponlar görünüşte gereksizdir. :-0

 
Sergey Voytsekhovsky :

Yorum için teşekkürler. Ooooh, dokümanları okurken, dokunarak yollar ve çözümler ararken, sanki bir sis içinde, öğretmen, akıl hocası, daha deneyimli arkadaş vb. yokken ne kadarını fark edemediğinizi hayal bile edemezsiniz. Çok teşekkür ederim, DRAW_COLOR_HISTOGRAM2'yi zaten buldum, anlamını anladım, hemen yeniden yapacağım.

Ekstra tamponlar hakkında daha detaylı pliz olabilir mi? Deneyim asla gereksiz değildir ve tamponlar görünüşte gereksizdir. :-0

Peki... Stokastikte 2 arabellek varsa, tüm bellek yongalarım yanmamışsa. Daha doğrusu, 2 yapı. Buna göre, yalnızca histogram şeklinde bir ekranla değiştirilerek kaydedilmeleri gerekir. Aslında, DRAW_COLOR_HISTOGRAM2'nin iki yapısı için 6 arabellek gerekecektir. Ancak miktar hakkında dememe rağmen, bu satırları kastettim.

 #property indicator_type1    DRAW_LINE
#property indicator_type2    DRAW_LINE
#property indicator_type3    DRAW_HISTOGRAM2
#property indicator_type4    DRAW_HISTOGRAM2

Bence olmalı

 #property indicator_buffers 5
#property indicator_plots    2
#property indicator_type1    DRAW_COLOR_HISTOGRAM2 // основная 
#property indicator_type2    DRAW_LINE              // сигнальная
#property indicator_color1    clrGreen , clrRed        // цвет гистограмм
#property indicator_color2    clrBlue                // цвет линии
 

Hepiniz hoşgeldiniz!
Biliyorsan söyle.

Görüyorsunuz, yeşil olan (Vigor=0.1154) kırmızı olanı bile geçmedi (Signal=0.1133), ancak satış gerçekleşti. Ve bu izole bir durum değil.

İşte başka...

Burada en azından "birleştiler", ancak yine de Vigor=0.0543 ve Signal=0.0525

Her şey her yerde "normalleştirildi".

Bu durum için kod: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S (Sinyal-kırmızı), sırasıyla RVI_S_M (Canlı-yeşil).

Biri değerli bir şey söyleyebilirse - çok minnettar olacağım.

 
KrasAleks :

Hepiniz hoşgeldiniz!
Biliyorsan söyle.

Görüyorsunuz, yeşil olan (Vigor=0.1154) kırmızı olanı bile geçmedi (Signal=0.1133), ancak satış gerçekleşti. Ve bu izole bir durum değil.

İşte başka...

Burada en azından "birleştiler", ancak yine de Vigor=0.0543 ve Signal=0.0525

Her şey her yerde "normalleştirildi".

Bu durum için kod: && RVI_S_S >0 && RVI_S_M < RVI_S_S && RVI_S_M1 > RVI_S_S1

RVI_S_S (Sinyal-kırmızı), sırasıyla RVI_S_M (Canlı-yeşil).

Biri değerli bir şey söyleyebilirse - çok minnettar olacağım.

Büyük olasılıkla bir kavşak vardı, ancak yeniden çizildi.
Mum kapandıktan sonra sinyali kontrol etmeniz gerekir.