Gösterge içindeki metin - sayfa 4

 
investeo :

Farklı tuş vuruşlarını kullanarak değiştirilen geçici bir global değişkenler aracılığıyla bir göstergeyle etkileşime giren bir kavram kanıtı EA yaptım.

Köşeler işe yarar, ancak alt köşelerin zaman çizelgesine değil gösterge çerçevesine göre olduğunu hatırlamak gerekir - videoyu izleyin.

Maalesef video yükleme bu forumda çalışmıyor gibi görünüyor :(


şimdilik takıyorum

http://www.youshare.com/Guest/c94bb3e9cfe6a424.flv.html

(en iyi sonuçlar için tam ekrana bakın)

en iyi dileklerimle,

Merhaba

Bu videoya eklenmiş ses yok.

SampleTextIndicator kodunu gönderebilir misiniz?

Saygılarımızla

 
walb99 :

Merhaba

Bu videoya eklenmiş ses yok.

SampleTextIndicator kodunu gönderebilir misiniz?

Saygılarımızla


Merhaba

Video, ses parçası içermiyor. Kodu bugün akşam yayınlayacağım çünkü başka bir dizüstü bilgisayarda unuttum.

 

Kod çok zarif olmayabilir, ancak düzgün çalışıyor


 //+------------------------------------------------------------------+
//|                                          SampleTextIndicator.mq5 |
//|                                            Copyright Investeo.pl |
//|                                                      Investeo.pl |
//+------------------------------------------------------------------+
#property copyright "Investeo.pl"
#property link       "http://Investeo.pl"
#property version   "1.00"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
#property indicator_minimum 0
#property indicator_maximum 100


string label2_name= "indicator_label" ;
int window=- 1 ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
//---
   IndicatorSetString ( INDICATOR_SHORTNAME , "Hello... PRESS A-W-S-D-C TO PLAY" );
   
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
{
//---
//--- return value of prev_calculated for next call
 
   if (( ENUM_PROGRAM_TYPE ) MQL5InfoInteger ( MQL5_PROGRAM_TYPE )== PROGRAM_INDICATOR )
     {
      window= ChartWindowFind ();
       Print (window);
     }
     
     if ( ObjectFind ( 0 ,label2_name)< 0 )
     {
       ObjectCreate ( 0 ,label2_name, OBJ_LABEL ,window, 0 , 0 );         
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_XDISTANCE , 10 );
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_YDISTANCE , 10 );
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_COLOR , LightPink );
       ObjectSetString ( 0 ,label2_name, OBJPROP_TEXT , "HELLO WORLD" );
       ObjectSetString ( 0 ,label2_name, OBJPROP_FONT , "Arial" );
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_FONTSIZE , 14 );
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_SELECTABLE ,false);
       ChartRedraw (window);                                      
     } 
     else
     {
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_XDISTANCE ,( int ) GlobalVariableGet ( "prop_x" ));
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_YDISTANCE ,( int ) GlobalVariableGet ( "prop_y" ));
       ObjectSetString ( 0 ,label2_name, OBJPROP_TEXT , "x: " 
                                    + IntegerToString (( int ) GlobalVariableGet ( "prop_x" )) 
                                    + " y: " 
                                    + IntegerToString (( int ) GlobalVariableGet ( "prop_y" )));
       ObjectSetInteger ( 0 ,label2_name, OBJPROP_CORNER ,( int ) GlobalVariableGet ( "corner" ));
                                          
     }
     
   
   
   return (rates_total);
}
  
void OnDeinit( const int reason)
{
   if ( ObjectFind (window,label2_name)>= 0 )
       ObjectDelete (window,label2_name);
      
 

Merhaba

kodu gönderdiğiniz için teşekkürler,

Lütfen kodu, göstergenin sağ üst köşeye bir tür metin koyacağı şekilde değiştirebilir misiniz?

ayrı pencerede her gösterge için kullanılabilecek bir örnek

 
walb99 :

Merhaba

kodu gönderdiğiniz için teşekkürler,

Lütfen kodu, göstergenin sağ üst köşeye bir tür metin koyacağı şekilde değiştirebilir misiniz?

ayrı pencerede her gösterge için kullanılabilecek bir örnek


Kodu açıklayıcı yorumlarla koydum

BR,

Yatırım


 //+------------------------------------------------------------------+
//|                                         UpperRightCornerText.mq5 |
//|                                      Copyright 2010, Investeo.pl |
//|                                               http://Investeo.pl |
//+------------------------------------------------------------------+
#property copyright "2010, Investeo.pl"
#property link       "http://Investeo.pl"
#property version   "1.00"
#property indicator_separate_window
#property indicator_plots   1

string label_info= "label1" ;
int window=- 1 ;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- initialize a label in upper right corner

   // find indicator's window handle
   if (( ENUM_PROGRAM_TYPE ) MQL5InfoInteger ( MQL5_PROGRAM_TYPE )== PROGRAM_INDICATOR )
     window= ChartWindowFind ();

   // check if label object does not already exist and create it
   if ( ObjectFind ( 0 ,label_info)< 0 )
  {
       // Create label in indicator's window 
       ObjectCreate ( 0 ,label_info, OBJ_LABEL ,window, 0 , 0 );         
       // Set X and Y distance from UPPER RIGHT CORNER
       ObjectSetInteger ( 0 ,label_info, OBJPROP_XDISTANCE , 200 );
       ObjectSetInteger ( 0 ,label_info, OBJPROP_YDISTANCE , 20 );
       ObjectSetInteger ( 0 ,label_info, OBJPROP_CORNER , CORNER_RIGHT_UPPER );
       // Set text properties: colour, font and font size
       ObjectSetInteger ( 0 ,label_info, OBJPROP_COLOR , LightPink );
       ObjectSetString ( 0 ,label_info, OBJPROP_FONT , "Arial" );
       ObjectSetInteger ( 0 ,label_info, OBJPROP_FONTSIZE , 14 );
       // Set text to display
       ObjectSetString ( 0 ,label_info, OBJPROP_TEXT , "HELLO I am a label" );
  } else Print ( "label_info already exists" ); 
  

//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+

void OnDeinit( const int reason)
  {
//---
   if (! ObjectFind ( 0 ,label_info)< 0 )
       ObjectDelete ( 0 , label_info);
  }
 

Basit bir gösterge için bir öneriye ihtiyacım var:

Kapat > EMA 34 = yeşil histogam veya ....line veya....ok...

Kapat< EMA 34 = kamış histogramı veya...çizgisi veya...ok...

Yardım için teşekkürler

 
investeo :


Kodu açıklayıcı yorumlarla koydum

BR,

Yatırım


Merhaba Investeo

çok teşekkürler, kodunuz çalışıyor, yani etiket görünüyor, ancak değer güncellenmiyor. Bir hata mı yaptım?

İşte kodum.

 //+------------------------------------------------------------------+
//|                                                                                                                                                     Color MA |
//|                                                                                        Copyright 2009, EarnForex.com |
//|                                                                                                       http://www.earnforex.com |
//+------------------------------------------------------------------+
#property copyright "2009, EarnForex.com"
#property link "http://www.earnforex.com"
#property version "1.00"

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots 1

//---- plot MA
#property indicator_label1 "Color MA1"
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_color1 Lime, Red
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1



//#include <MovingAverages.mqh>

//--- input parameters
input int MA1_Period = 10 ;
input ENUM_MA_METHOD MA1_Mode = MODE_EMA ;
input ENUM_APPLIED_PRICE MA1_Price = PRICE_CLOSE ;
input int MA1_Shift = 0 ;

input int CountBars= 200 ;

string label_info= "" ; 
int window=- 1 ;




color label_color;
double MA_Value;
double myPrice;
double myMAnow;


int nDigits;





//--- indicator buffers
double MA1TempBuffer[];
double MA1Buffer[];
double MA1ColorBuffer[];





int ma1_handle;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                                                            |
//+------------------------------------------------------------------+
void OnInit()
{
         SetIndexBuffer ( 0 , MA1Buffer, INDICATOR_DATA );
         SetIndexBuffer ( 1 , MA1ColorBuffer, INDICATOR_COLOR_INDEX );
         PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0.0 );
         PlotIndexSetInteger ( 0 , PLOT_SHIFT ,MA1_Shift);
        

        
        
         IndicatorSetString ( INDICATOR_SHORTNAME , "Color_MA[" + IntegerToString (MA1_Period)+ "]" );
         IndicatorSetInteger ( INDICATOR_DIGITS , _Digits );
   
 if ( Symbol ()== "EURUSD" || Symbol ()== "GBPUSD" || Symbol ()== "EURCHF" || Symbol ()== "USDCAD" || Symbol ()== "EURGBP" || Symbol ()== "AUDUSD" || Symbol ()== "USDCHF" || Symbol ()== "6S_CONT" )  nDigits = 4 ; else nDigits = 2 ;

         ma1_handle = iMA ( NULL , 0 , MA1_Period, 0 , MA1_Mode, MA1_Price); 
        
        
  
   label_info= "myMA" + IntegerToString (MA1_Mode)+ IntegerToString (MA1_Period);
        
   
   //--- initialize a label in upper right corner

           // find indicator's window handle
   if (( ENUM_PROGRAM_TYPE ) MQL5InfoInteger ( MQL5_PROGRAM_TYPE )== PROGRAM_INDICATOR )
     window= ChartWindowFind ();
     
     
        
   
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                                                                                 |
//+------------------------------------------------------------------+
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 limit;
         if (CountBars >= rates_total) limit = 0 ; else limit = rates_total - CountBars; 
        

         CopyBuffer (ma1_handle, 0 , 0 , rates_total, MA1TempBuffer);
        

         for ( int i = rates_total - 1 ; i > limit; i--)
        {
                MA1Buffer[i] = MA1TempBuffer[i];
           double myMA_now = MA1TempBuffer[i];
                 double myMA_previous = MA1TempBuffer[i - 1 ]; //MA One bar ago
                
                
                 
                 if (myMA_now >= myMA_previous) MA1ColorBuffer[i] = 0 ;
                 else if (myMA_now < myMA_previous) MA1ColorBuffer[i] = 1 ;
                        
        }
                

        myMAnow=MA1TempBuffer[rates_total- 1 -MA1_Shift]; 
        


          
   myPrice = SymbolInfoDouble ( _Symbol , SYMBOL_BID );
   
   if (myPrice>myMAnow)label_color= Lime ;   else label_color= Red ; 

   
   


   // check if label object does not already exist and create it
 
   if ( ObjectFind ( 0 ,label_info)< 0 )
  {
       // Create label in indicator's window 
       ObjectCreate ( 0 ,label_info, OBJ_LABEL ,window, 0 , 0 ); 
         // Set X and Y distance from UPPER RIGHT CORNER      
       ObjectSetInteger ( 0 ,label_info, OBJPROP_XDISTANCE , 100 );
       ObjectSetInteger ( 0 ,label_info, OBJPROP_YDISTANCE , 20 );
       ObjectSetInteger ( 0 ,label_info, OBJPROP_CORNER , CORNER_RIGHT_UPPER ); 
          
       // Set text properties: colour, font and font size
       ObjectSetInteger ( 0 ,label_info, OBJPROP_COLOR ,label_color);
       ObjectSetString ( 0 ,label_info, OBJPROP_FONT , "Arial" );
       ObjectSetInteger ( 0 ,label_info, OBJPROP_FONTSIZE , 14 );   
    
       // Set text to display
       ObjectSetString ( 0 ,label_info, OBJPROP_TEXT , DoubleToString (myMAnow,nDigits));

      
     
  } else Print ( "label_info already exists" ); 
  

 
         return (rates_total);
}
//+------------------------------------------------------------------+ 

void OnDeinit( const int reason)
  {
//---
   if (! ObjectFind ( 0 ,label_info)< 0 )
       ObjectDelete ( 0 , label_info);
  }
  
   //------------------------------------------------------------------------
 
supermagix :

Basit bir gösterge için bir öneriye ihtiyacım var:

Kapat > EMA 34 = yeşil histogam veya ....line veya....ok...

Kapat< EMA 34 = kamış histogramı veya...çizgisi veya...ok...

Yardım için teşekkürler


Bu amaçla MACD'yi deneyebilirsiniz
Dosyalar:
 
walb99 :
Bu amaçla MACD'yi deneyebilirsiniz

Evet, ancak "göstergenin eğrisini" takip etmemeli, yalnızca değişen rengi göstermelidir.

teşekkürler walb

 
supermagix :

Evet, ancak "göstergenin eğrisini" takip etmemeli, yalnızca değişen rengi göstermelidir.

teşekkürler valb

MT4 için göstergeye rus renkleri denir, istediğiniz

/go?link=https://www.forexfactory.com/showthread.php?t=173962

Yalnızca HMA'yı EMA34 ile değiştirmeniz gerekir