Kodlama yardımı - sayfa 675

 
traderduke :
Genel eğilim için 1 2ma ve kısa vadeli yüksek ve düşük yeniden giriş için bir tane kullanırsınız.
Bu, iki voltluk kanal göstergesi olması gerektiği anlamına mı geliyor?
 

Merhaba kodlayıcılar.

Bu soru hakkında yardıma ihtiyacım var: Basit bir ma çapraz göstergesinin ok sinyallerini yatay olarak nasıl kaydırırım?

Bunu denedim ama sadece sola kayıyor, hatta sağa ihtiyacım var.

teşekkürler

 //+------------------------------------------------------------------+
//|                                                   ma crosses.mq4 |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1  Blue
#property indicator_color2  Red
#property indicator_color3  LimeGreen
#property indicator_color4  Magenta

//
//
//
//
//

extern int     FastMa             = 13 ;
extern int     FastMaShift        = 0 ;
extern int     FastMAMethod       = MODE_EMA ;
extern int     FastMAPrice        = PRICE_CLOSE ;
extern int     SlowMa             = 68 ;
extern int     SlowMaShift        = 0 ;
extern int     SlowMAMethod       = MODE_SMA ;
extern int     SlowMAPrice        = PRICE_CLOSE ;
extern bool    ShowMaLines        = true ;

extern string note               = "turn on Alert = true; turn off = false" ;
extern bool    alertsOn           = true ;
extern bool    alertsOnCurrent    = true ;
extern bool    alertsMessage      = true ;
extern bool    alertsSound        = true ;
extern bool    alertsEmail        = false ;
extern string soundfile          = "alert2.wav" ;

extern string note7              = "Arrow Type" ;
extern string note8              = "0=default,1=Thick,2=Thin,3=Hollow" ;
extern string note9              = "4=Round,5=Fractal,6=Diagonal Thin" ;
extern string note10             = "7=Diagonal Thick,8=Diagonal Hollow" ;
extern string note11             = "9=Thumb,10=Finger" ;
extern int     ArrowType          = 2 ;
extern int     arrowthickness     = 2 ;
extern double arrowsDisplacement = 2.0 ;
extern int     arrowHshift        = 0 ;

//
//
//
//
//

double CrossUp[];
double CrossDn[];
double fastMA[];
double slowMA[];
double trend[];

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
{
   IndicatorBuffers ( 5 );   
   
   if (ArrowType == 0 ) {
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 119 );
   SetIndexBuffer ( 1 , CrossDn );   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 119 );
   }
   if (ArrowType == 1 ) {
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 233 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 234 );
   }
   else if (ArrowType == 2 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 225 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 226 );
   }
   else if (ArrowType == 3 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 241 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 242 );
   }
   else if (ArrowType == 4 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 221 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 222 );
   }
   else if (ArrowType == 5 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 217 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 218 );
   }
   else if (ArrowType == 6 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 228 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 230 );
   }
   else if (ArrowType == 7 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 236 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 238 );
   }
   else if (ArrowType == 8 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 246 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 248 );
   }
   else if (ArrowType == 9 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 67 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 68 );
   }
   else if (ArrowType == 10 ) { 
   SetIndexBuffer ( 0 , CrossUp);   SetIndexStyle ( 0 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 0 , 71 );
   SetIndexBuffer ( 1 , CrossDn);   SetIndexStyle ( 1 , DRAW_ARROW , 0 ,arrowthickness); SetIndexArrow ( 1 , 72 );
   }
   SetIndexBuffer ( 2 , fastMA);
   SetIndexBuffer ( 3 , slowMA);
   SetIndexBuffer ( 4 , trend);
   
   if (ShowMaLines)
   {
     SetIndexStyle ( 2 , DRAW_LINE ); 
     SetIndexStyle ( 3 , DRAW_LINE ); 
   }
   else
   {
     SetIndexStyle ( 2 , DRAW_NONE );
     SetIndexStyle ( 3 , DRAW_NONE );
   }       
   
return ( 0 );
}

//
//
//
//
//

int deinit() {   return ( 0 ); }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//

int start() {
   int counted_bars= IndicatorCounted ();
   int i,limit;

   if (counted_bars< 0 ) return (- 1 );
   if (counted_bars> 0 ) counted_bars--;
         limit = MathMin ( Bars -counted_bars, Bars - 1 );
         
   //
   //
   //
   //
   //
            
   for (i=limit; i>= 0 ; i--)
   {
      fastMA[i]  = iMA ( NULL , 0 ,FastMa,FastMaShift,FastMAMethod,FastMAPrice,i);
      slowMA[i]  = iMA ( NULL , 0 ,SlowMa,SlowMaShift,SlowMAMethod,SlowMAPrice,i);
       double gap = iATR ( NULL , 0 , 20 ,i); 
      
      trend[i] = trend[i+ 1 ];
         if (fastMA[i]>slowMA[i]) trend[i] = 1 ;
         if (fastMA[i]<slowMA[i]) trend[i] =- 1 ;

         //
         //
         //
         //
         //
      
         CrossUp[i] = EMPTY_VALUE ;
         CrossDn[i] = EMPTY_VALUE ;
         if (trend[i]!= trend[i+ 1 ])
         if (trend[i] == 1 )
               CrossUp[i+arrowHshift] = Low [i]  - arrowsDisplacement * gap;
         else   CrossDn[i+arrowHshift] = High [i] + arrowsDisplacement * gap; 
         }
         
         if (alertsOn)
         {
         if (alertsOnCurrent)
               int whichBar = 0 ;
         else      whichBar = 1 ;

         //
         //
         //
         //
         //
         
         if (trend[whichBar] != trend[whichBar+ 1 ])
         if (trend[whichBar] == 1 )
               doAlert( "uptrend" );
         else   doAlert( "downtrend" );       
   }
   
   return ( 0 );
}
//+------------------------------------------------------------------+


void doAlert( string doWhat)
{
   static string    previousAlert= "nothing" ;
   static datetime previousTime;
   string message;
   
       if (previousAlert != doWhat || previousTime != Time [ 0 ]) {
          previousAlert  = doWhat;
          previousTime   = Time [ 0 ];

           //
           //
           //
           //
           //

          message =   StringConcatenate ( Symbol (), " at " , TimeToStr ( TimeLocal (), TIME_SECONDS ), " ma cross " ,doWhat);
             if (alertsMessage) Alert (message);
             if (alertsEmail)   SendMail ( StringConcatenate ( Symbol (), " ma cross " ),message);
             if (alertsSound)   PlaySound (soundfile);
      }
}

 
thefxpros :

Merhaba kodlayıcılar.

Bu soru hakkında yardıma ihtiyacım var: Basit bir ma çapraz göstergesinin ok sinyallerini yatay olarak nasıl kaydırırım?

Bunu denedim ama sadece sola kayıyor, hatta sağa ihtiyacım var.

teşekkürler

Tek değeri kaydırmak yerine arabelleği kaydırmayı denediniz mi?

Gibi bir şey :

   SetIndexShift ( 0 ,arrowHshift);
   SetIndexShift ( 1 ,arrowHshift);

Ve sonra bu satırları hiç kayma olmayacak şekilde geri alın

 //
// instead of 
//


         if (trend[i] == 1 )
               CrossUp[i+arrowHshift] = Low [i]  - arrowsDisplacement * gap;
         else   CrossDn[i+arrowHshift] = High [i] + arrowsDisplacement * gap; 

//
// it has to be
//

         if (trend[i] == 1 )
               CrossUp[i] = Low [i]  - arrowsDisplacement * gap;
         else   CrossDn[i] = High [i] + arrowsDisplacement * gap; 
 
thefxpros :

Merhaba kodlayıcılar.

Bu soru hakkında yardıma ihtiyacım var: Basit bir ma çapraz göstergesinin ok sinyallerini yatay olarak nasıl kaydırırım?

Bunu denedim ama sadece sola kayıyor, hatta sağa ihtiyacım var.

teşekkürler

Not: şimdi değerleri kaydırmak için okları sağa kaydırmak için + değerleri ve değerleri sola kaydırmak için - değerleri kullanmanız gerekir (test kodunu eklemek ve okları kaydırmak için herhangi bir durumda - sola veya sağa doğru çalışır) )

Dosyalar:
_test.mq4  8 kb
 
mladen :
Bu, iki voltluk kanal göstergesi olması gerektiği anlamına mı geliyor?

mladen

Daha erken cevap veremediğim için üzgünüm, gösterge sorusuna bir çözümle geri dönmeyi umuyordum ama bu olmadı

Evet doğru. yanlış anlaşılma için üzgünüm. Steven'a 2MA göstergesi hakkında cevap veriyordum. MR Tools'un PrCh göstergesi için yaptığı gibi, hem giriş hem de yeniden giriş için mevcut göstergeyi kullanamadım, ancak EA'm yeniden girişi hiçbir zaman doğru alamadı, Dumanda sallanmak gibi.

Her neyse, EA'da 2 volt ile yapabilirim, bu yüzden bu göstergeyi oluşturmaya gerek yok.


Yardım için teşekkürler

Işın

 
lütfen bu göstergeyi EA'ya kodlamama yardım eder misiniz? Ok göründüğünde yalnızca bir mum takas etmesini ve mum kapandığında kapatmasını istiyorum pls bunu bir seçenek haline getirebilirim, buna ihtiyacım var
 

Merhaba.

Stokastik çaprazlama göre azalan arz - talep göstergesine göre uyarı yapmaya çalışıyorum. Bu göstergenin arabelleklerde bilgi depoladığı için EA'ları kasaya koymak için kullanılabileceği konusunda bilgilendirildim, ancak henüz mql4'ü okuyup anladığımdan pek emin değilim ve 2-3 aydan daha fazla deneme süresi yok.

Bu nedenle, umarım dışarıdaki biri, fiyatın zoene dahilinde olup olmadığını kontrol etmek için iCustom satırını yazmama yardım edebilir.

 //+------------------------------------------------------------------+
//|                                              Indicator: chan.mq4 |
//|                                       Created with EABuilder.com |
//|                                             http://eabuilder.com |
//+------------------------------------------------------------------+
#property copyright "Created with EABuilder.com"
#property link        "http://eabuilder.com"
#property version    "1.00"
#property description ""

#include <stdlib.mqh>
#include <stderror.mqh>

//--- indicator settings
#property indicator_chart_window
#property indicator_buffers 2

#property indicator_type1 DRAW_ARROW
#property indicator_width1 5
#property indicator_color1 0xFFAA00
#property indicator_label1 "Buy"

#property indicator_type2 DRAW_ARROW
#property indicator_width2 5
#property indicator_color2 0x1A00FF
#property indicator_label2 "Sell"

//--- indicator buffers
double Buffer1[];
double Buffer2[];

double myPoint; //initialized in OnInit

void myAlert( string type, string message)
  {
   if (type == "print" )
       Print (message);
   else if (type == "error" )
     {
       Print (type+ " | chan @ " + Symbol ()+ "," + Period ()+ " | " +message);
     }
   else if (type == "order" )
     {
     }
   else if (type == "modify" )
     {
     }
  }

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {   
   IndicatorBuffers ( 2 );
   SetIndexBuffer ( 0 , Buffer1);
   SetIndexEmptyValue ( 0 , 0 );
   SetIndexArrow ( 0 , 241 );
   SetIndexBuffer ( 1 , Buffer2);
   SetIndexEmptyValue ( 1 , 0 );
   SetIndexArrow ( 1 , 242 );
   //initialize myPoint
   myPoint = Point ();
   if ( Digits () == 5 || Digits () == 3 )
     {
      myPoint *= 10 ;
     }
   return ( INIT_SUCCEEDED );
  }

//+------------------------------------------------------------------+
//| 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 = rates_total - prev_calculated;
   //--- counting from 0 to rates_total
   ArraySetAsSeries (Buffer1, true );
   ArraySetAsSeries (Buffer2, true );
   //--- initial zero
   if (prev_calculated < 1 )
     {
       ArrayInitialize (Buffer1, 0 );
       ArrayInitialize (Buffer2, 0 );
     }
   else
      limit++;
   
   //--- main loop
   for ( int i = limit- 1 ; i >= 0 ; i--)
     {
       if (i >= MathMin ( 5000 - 1 , rates_total- 1 - 50 )) continue ; //omit some old rates to prevent "Array out of range" or slow calculation   
       //Indicator Buffer 1
       if ( iStochastic ( NULL , PERIOD_CURRENT , 5 , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , i) < 20
      && iStochastic ( NULL , PERIOD_CURRENT , 5 , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , i+ 1 ) > 20 //Stochastic Oscillator crosses below fixed value
          !!!!!  && iCustom ( NULL , PERIOD_CURRENT , "shved_supply_and_demand" , i ***************** check if price is in upper zone
      )
        {
         Buffer1[i] = Low [i]; //Set indicator value at Candlestick Low
        }
       else
        {
         Buffer1[i] = 0 ;
        }
       //Indicator Buffer 2
       if ( iStochastic ( NULL , PERIOD_CURRENT , 5 , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , i) > 80
      && iStochastic ( NULL , PERIOD_CURRENT , 5 , 3 , 3 , MODE_SMA , 0 , MODE_MAIN , i+ 1 ) < 80 //Stochastic Oscillator crosses above fixed value
           !!!! && iCustom ( NULL , PERIOD_CURRENT , "shved_supply_and_demand" , i ***************  check if price is in lower zone
      )
        {
         Buffer2[i] = High [i]; //Set indicator value at Candlestick High
        }
       else
        {
         Buffer2[i] = 0 ;
        }
     }
   return (rates_total);
  }
//+------------------------------------------------------------------+

Kimsenin bana yardım etmek için zaman ayırmasını beklemiyorum, ama eğer gönderi atmazsam hiç şansım yok, bu yüzden denemeyi düşündüm.

Barış ve sevgi dost tüccarlar

Dosyalar:
 
NWFstudent :

Merhaba.

Stokastik çaprazlama göre azalan arz - talep göstergesine göre uyarı yapmaya çalışıyorum. Bu göstergenin arabelleklerde bilgi depoladığı için EA'ları kasaya koymak için kullanılabileceği konusunda bilgilendirildim, ancak henüz mql4'ü okuyup anladığımdan pek emin değilim ve 2-3 aydan daha fazla deneme süresi yok.

Bu nedenle, umarım dışarıdaki biri, fiyatın zoene dahilinde olup olmadığını kontrol etmek için iCustom satırını yazmama yardım edebilir.

Kimsenin bana yardım etmek için zaman ayırmasını beklemiyorum, ama eğer gönderi atmazsam hiç şansım yok, bu yüzden denemeyi düşündüm.

Barış ve sevgi dost tüccarlar

Bunun gibi bir şey yapın (yorumları da kontrol edin )

   //
   //
   // checking if the price is withing the lower zone
   //
   //
   
   if ( Close [i] <= iCustom ( NULL , PERIOD_CURRENT , "shved_supply_and_demand" , 6 ,i) &&
       Close [i] >= iCustom ( NULL , PERIOD_CURRENT , "shved_supply_and_demand" , 7 ,i))
   //
   //
   // checking if the price is withing the upper zone
   //
   //
   
   if ( Close [i] <= iCustom ( NULL , PERIOD_CURRENT , "shved_supply_and_demand" , 4 ,i) &&
       Close [i] >= iCustom ( NULL , PERIOD_CURRENT , "shved_supply_and_demand" , 5 ,i))
       
   //
   //
   // PS: that indicator stores values only for current bar in the buffers, so it works only for i==0
   //
   //
   //       
 
mladen :

Bunun gibi bir şey yapın (yorumları da kontrol edin)

Teşekkürler, herhangi bir sayfanın en nazik yöneticisi olmalısınız. Çalışmanız çok takdir ediliyor.

Dikkatli ol.

 
dotmund :
lütfen bu göstergeyi EA'ya kodlamama yardım eder misiniz? Ok göründüğünde yalnızca bir mum takas etmesini ve mum kapandığında kapatmasını istiyorum pls bunu bir seçenek haline getirebilirim, buna ihtiyacım var

lütfen bana yardım et