Kodlama yardımı - sayfa 743

 
mladen :
Tekil spektrum analizi (SSA), bir uç nokta versiyonu olmadığı sürece yeniden hesaplar. Bu gösterge "normal" SSA kullandığından, aynı zamanda yeniden hesaplar
ÇOK TEŞEKKÜRLER
 
mladen :

Korkarım ki koddan niyetinizin ne olduğunu göremiyorum

Seviyeli ortalamalar elde etmeye çalışıyorsanız, şablon olarak gönderdiğimi kullanın.

Merhaba,

evet ileri seviyeli ma'nızı kullanacağım,(daha fazla fiyatı var vs. renkli ma vs..)

ama özel göstergelerin nasıl oluşturulacağını anlamak için kendi başıma bir tane oluşturmaya çalıştım,

benim fikrim aynı bileşeni oluşturmaktır (temelde 2 seviyeli bir MA ..)

Seviyelerle aynı etkiyi vermek için merkezi bir MA ve nokta çizgileri kullanılarak çizilen 2 MA daha kullanıyorum ...
her seviye için arabelleği hesaplama olayını kullanarak dolduruyorum... bana söylediğin gibi, ama bir şeyler yanlış ;-(
seviyeyi simüle eden 2 MA dikey olarak kaydırılacak... ama çalışmıyor

 
baraozemo :

Merhaba,

evet ileri seviyeli ma'nızı kullanacağım,(daha fazla fiyatı var vs. renkli ma vs..)

ama özel göstergelerin nasıl oluşturulacağını anlamak için kendi başıma bir tane oluşturmaya çalıştım,

benim fikrim aynı bileşeni oluşturmaktır (temelde 2 seviyeli bir MA ..)

Seviyelerle aynı etkiyi vermek için merkezi bir MA ve nokta çizgileri kullanılarak çizilen 2 MA daha kullanıyorum ...
her seviye için arabelleği hesaplama olayını kullanarak dolduruyorum... bana söylediğin gibi, ama bir şeyler yanlış ;-(
seviyeyi simüle eden 2 MA dikey olarak kaydırılacak... ama çalışmıyor

Evet, demek istediğim buydu

Olay olabildiğince basit:

  • ma oluştur (ortalama)
  • seviye 1 için yukarı ve aşağı biraz fark ekleyin (iki tampon daha yapın)
  • seviye 2 için yukarı ve aşağı biraz fark ekleyin (iki tampon daha yapın)

Ortalama hesaplamasında veya başka bir şeyde herhangi bir şeyi değiştirmeye gerek yoktur: sadece merkezi (ma) tampondan basit bir toplama veya çıkarma

 

double pipLevel1 = - 10 ;
double pipLevel2 = 10 ;


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//--- indicator buffers mapping
   SetIndexBuffer ( 0 ,ExtLineBuffer, INDICATOR_DATA ); //MA Buffer
   SetIndexBuffer ( 1 ,ExtLv1Buffer, INDICATOR_DATA ); //MA lv1 Buffer
   SetIndexBuffer ( 2 ,ExtLv2Buffer, INDICATOR_DATA ); //MA lv2 Buffer
//--- set accuracy
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits + 1 );
//--- sets first bar from what index will be drawn

   PlotIndexSetInteger ( 0 , PLOT_LINE_STYLE , STYLE_SOLID ); //MA Style
   PlotIndexSetInteger ( 1 , PLOT_LINE_STYLE , STYLE_DOT );   //MA lvl1 Style
   PlotIndexSetInteger ( 2 , PLOT_LINE_STYLE , STYLE_DOT );   //MA lvl2 Style

                                                       //IndicatorSetInteger(INDICATOR_LEVELS,1,InpLevel1); //MA lvl1 Value
//IndicatorSetInteger(INDICATOR_COLOR2,1,Cyan);
//IndicatorSetInteger(INDICATOR_STYLE2,1,STYLE_DOT);
//IndicatorSetInteger(INDICATOR_IDTH,1,1);

//IndicatorSetInteger(INDICATOR_LEVELS,2,InpLevel2); //MA lvl2 Value
//IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,Cyan);
//IndicatorSetInteger(INDICATOR_LEVELSTYLE,2,STYLE_DOT);
//IndicatorSetInteger(INDICATOR_LEVELWIDTH,2,1);  

   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,InpMAPeriod); //MA
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN ,InpMAPeriod); //MA lvl1
   PlotIndexSetInteger ( 2 , PLOT_DRAW_BEGIN ,InpMAPeriod); //MA lvl2
//---- line shifts when drawing

   PlotIndexSetInteger ( 0 , PLOT_SHIFT ,InpMAShift); //MA
   PlotIndexSetInteger ( 1 , PLOT_SHIFT ,InpMAShift); //MA lvl1
   PlotIndexSetInteger ( 2 , PLOT_SHIFT ,InpMAShift); //MA lvl2

//--- name for DataWindow
   string short_name= "unknown ma" ;
   switch (InpMAMethod)
     {
       case MODE_EMA :  short_name= "EMA" ;   break ;
       case MODE_LWMA : short_name= "LWMA" ; break ;
       case MODE_SMA :  short_name= "SMA" ;   break ;
       case MODE_SMMA : short_name= "SMMA" ; break ;
     }
   IndicatorSetString ( INDICATOR_SHORTNAME ,short_name+ "(" + string (InpMAPeriod)+ ")" );
//---- sets drawing line empty value--
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0.0 );   //MA
   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , 0.0 );   //MA lvl1
   PlotIndexSetDouble ( 2 , PLOT_EMPTY_VALUE , 0.0 );   //MA lvl2
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Moving Average                                                  |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
  {
   double pipMultiplier= _Point * MathPow ( 10 , MathMod ( _Digits , 2 ));
   pipLevel1 = InpLevel1 * pipMultiplier;
   pipLevel2 = InpLevel2 * pipMultiplier;
//Print("point:"+_Point+" Digits:"+_Digits+ "pipMul:"+pipMultiplier);
//pipLevel1 = InpLevel1 / 10;
//pipLevel2 = InpLevel2 / 10;  

//--- check for bars count
   if (rates_total<InpMAPeriod- 1 +begin)
       return ( 0 ); // not enough bars for calculation
//--- first calculation or number of bars was changed
   if (prev_calculated== 0 )
     {
       ArrayInitialize (ExtLineBuffer, 0 );   //MA
       ArrayInitialize (ExtLv1Buffer, 1 );   //MA level1
       ArrayInitialize (ExtLv2Buffer, 2 );   //MA level2
     }
//--- sets first bar from what index will be draw
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN ,InpMAPeriod- 1 +begin); //MA
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN ,InpMAPeriod- 1 +begin); //MA lvl1
   PlotIndexSetInteger ( 2 , PLOT_DRAW_BEGIN ,InpMAPeriod- 1 +begin); //MA lvl2

//--- calculation
   switch (InpMAMethod)
     {
       case MODE_EMA :  
                      CalculateEMA(rates_total,prev_calculated,begin,price);
                      ExtLv1Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel1;
                      ExtLv2Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel2;
                       //Print ("rates_total:"+rates_total+" prev:"+prev_calculated+" begin:"+begin+" price:"+price[rates_total-1]);
                       break ;
       case MODE_LWMA :
                      CalculateLWMA(rates_total,prev_calculated,begin,price);
                      ExtLv1Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel1;
                      ExtLv2Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel2;
                       break ;
       case MODE_SMMA :
                      CalculateSmoothedMA(rates_total,prev_calculated,begin,price);
                      ExtLv1Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel1;
                      ExtLv2Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel2;
                       break ;
       case MODE_SMA :  
                      CalculateSimpleMA(rates_total,prev_calculated,begin,price);
                      ExtLv1Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel1;
                      ExtLv2Buffer[rates_total- 1 ]=price[rates_total- 1 ]+pipLevel2;
                       break ;
     }
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
mladen :

Evet, demek istediğim buydu

Olay olabildiğince basit:

  • ma oluştur (ortalama)
  • seviye 1 için yukarı ve aşağı biraz fark ekleyin (iki tampon daha yapın)
  • seviye 2 için yukarı ve aşağı biraz fark ekleyin (iki tampon daha yapın)

Ortalama hesaplamasında veya başka bir şeyde herhangi bir şeyi değiştirmeye gerek yoktur: sadece merkezi (ma) tampondan basit bir toplama veya çıkarma

ma eklemek/çıkarmak için (dikey olarak) bir örnek kod gösterebilir misiniz? Denedim ama kodum başarısız..

 
baraozemo :

ma eklemek/çıkarmak için (dikey olarak) bir örnek kod gösterebilir misiniz? Denedim ama kodum başarısız..

Gönderdiğim sürümde bu var. Lütfen kodu tekrar kontrol edin
 
mladen :
Bu gösterge, ortalanmış TMA'yı kullanır - yeniden hesaplar. Uyarılar anlamsız olurdu

tamam renk değiştiğinde ok ne olacak

 
dotmund :

tamam renk değiştiğinde ok ne olacak

Yeniden hesaplama/yeniden boyama özelliği nedeniyle sinyaller (oklar) anlamsız olacaktır.
 
mladen :
Yeniden hesaplama/yeniden boyama özelliği nedeniyle sinyaller (oklar) anlamsız olacaktır.

Sevgili @mladen,

Ecn desteği olmayan bir uzman, Ecn tipi bir broker ile sorunsuz bir şekilde kullanılabilir mi?

Bazı uzmanlarda Ecn tipi brokerler için seçenekler vardır.

Bu, Ecn tipi brokerler için bazı kodları optimize etmenin veya eklemenin daha iyi olabileceğini düşünmeme neden oldu.

 
oguz :

Sevgili @mladen,

Ecn desteği olmayan bir uzman, Ecn tipi bir broker ile sorunsuz bir şekilde kullanılabilir mi?

Bazı uzmanlarda Ecn tipi brokerler için seçenekler vardır.

Bu, Ecn tipi brokerler için bazı kodları optimize etmenin veya eklemenin daha iyi olabileceğini düşünmeme neden oldu.

Evet, emir açarken zarar durdur ve kar al kullanmazsanız

Diğer tarafta ecn/stp için yapılmışsa, herhangi bir komisyoncuda sorunsuz çalışacaktır. Tek fark, siparişlerin açıldığı andır - başka hiçbir değişikliğe (veya optimizasyona) gerek yoktur.

 
oguz :

Cevabınız için teşekkür ederim.

Bildiğim kadarıyla ekli dosyada Ecn tipi broker desteği yok.

Bu ea'yı SL ve TP kullanarak Ecn tipi brokerde kullanmak istiyorum.

Ecn tipi broker desteği verirseniz çok sevinirim.

Herkesin anlaması için bu parçanın yeniden yazılması gerekecek.

Ancak kullanılan dili bilmediğim için yardımcı olamam. Afedersiniz