Evet, ilginç!
Valera
bir danışman örneğinde , lütfen, kimse göstergelerle ilgilenmiyor.
O zaman ben bir hiçim.
))) Az önce söyledim - Ben bir forum aksaklığıyım, kurgu, fata morgana ...
O zaman ben bir hiçim.
))) Az önce söyledim - Ben bir forum aksaklığıyım, kurgu, fata morgana ...
Ama her zaman doğru zamanda ve doğru yerde. Bu beni mutlu ediyor!
Victor, sana bu başarıya ne ilham verdi? Bu forumda sadece mantıkla değil, yüzde 90'ı kafayla arkadaş değil.
Bu bataklığa saplanıp kalmaktan korkmuyor musun? Eh, sadece yeterli% 10 ile iletişim kurmanız gerekecek ...
===
Tebriklere katılıyorum ... Hatta sana içeceğim ve aynı zamanda umutsuz girişiminizin başarısına ...
"Yalnız git ve körleri iyileştir,
Şüphenin karanlık saatinde bilmek
Öğrencilerin kötü niyetli alayı
Ve kalabalığın kayıtsızlığı."
// Ahmetova
Aslında, her şey basit. Başkalarının optimal kodu yapmasına yardım etme ve başkalarından kendim öğrenme arzusu vardı.
Zamanla, bazen (çoğunlukla) yardımcı olan ve bazen engelleyen, iyi tanımlanmış klişelerin geliştirildiği bir sır değildir.
Göstergenin bir versiyonunu hazırlayacağım ve ne yapıldığını ve neden yapıldığını açıklamaya çalışacağım. Eğer ilginçse tabii.
//+-------------------------------------------------------------------------+ //| ver.RA all1.mq4 | //| Copyright © 2010, age_nt | //+-------------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 5 #property indicator_color1 Green #property indicator_color2 Blue #property indicator_color3 Red #property indicator_color4 LightGray #property indicator_color5 DarkOrange #property indicator_level1 40 #property indicator_level2 20 #property indicator_level3 0 #property indicator_level4 - 20 #property indicator_level5 - 40 extern int MA = 10 ; extern bool all = FALSE; //---- Буферы индикатора double EUR_Buffer[]; double USD_Buffer[]; double GBP_Buffer[]; double CHF_Buffer[]; double JPY_Buffer[]; //---- Переменные int BarsMin= 1000 ; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers( 5 ); IndicatorDigits(MarketInfo( Symbol (),MODE_DIGITS)); //---- indicator line SetIndexBuffer ( 0 ,EUR_Buffer); SetIndexBuffer ( 1 ,USD_Buffer); SetIndexBuffer ( 2 ,GBP_Buffer); SetIndexBuffer ( 3 ,CHF_Buffer); SetIndexBuffer ( 4 ,JPY_Buffer); bool showEUR, showUSD, showGBP, showCHF, showJPY, showRAVI; if ( StringFind ( Symbol (), "EUR" , 0 ) != - 1 ) showEUR = TRUE; if ( StringFind ( Symbol (), "USD" , 0 ) != - 1 ) showUSD = TRUE; if ( StringFind ( Symbol (), "GBP" , 0 ) != - 1 ) showGBP = TRUE; if ( StringFind ( Symbol (), "CHF" , 0 ) != - 1 ) showCHF = TRUE; if ( StringFind ( Symbol (), "JPY" , 0 ) != - 1 ) showJPY = TRUE; if ( all== TRUE || showEUR == TRUE ) SetIndexStyle( 0 , DRAW_LINE , STYLE_SOLID , 1 , DodgerBlue ); else SetIndexStyle( 0 , DRAW_LINE , STYLE_SOLID , 0 , CLR_NONE ); if ( all == TRUE || showUSD == TRUE ) SetIndexStyle( 1 , DRAW_LINE , STYLE_SOLID , 1 , ForestGreen ); else SetIndexStyle( 1 , DRAW_LINE , STYLE_SOLID , 0 , CLR_NONE ); if ( all == TRUE || showGBP == TRUE ) SetIndexStyle( 2 , DRAW_LINE , STYLE_SOLID , 1 , FireBrick ); else SetIndexStyle( 2 , DRAW_LINE , STYLE_SOLID , 0 , CLR_NONE ); if ( all == TRUE || showCHF == TRUE ) SetIndexStyle( 3 , DRAW_LINE , STYLE_SOLID , 1 , LightBlue ); else SetIndexStyle( 3 , DRAW_LINE , STYLE_SOLID , 0 , CLR_NONE ); if ( all == TRUE || showJPY == TRUE ) SetIndexStyle( 4 , DRAW_LINE , STYLE_SOLID , 1 , Orange ); else SetIndexStyle( 4 , DRAW_LINE , STYLE_SOLID , 0 , CLR_NONE ); SetIndexLabel( 0 , "EUR" ); SetIndexLabel( 1 , "USD" ); SetIndexLabel( 2 , "GBP" ); SetIndexLabel( 3 , "CHF" ); SetIndexLabel( 4 , "JPY" ); SetIndexDrawBegin( 0 , 0 ); SetIndexDrawBegin( 1 , 0 ); SetIndexDrawBegin( 2 , 0 ); SetIndexDrawBegin( 3 , 0 ); SetIndexDrawBegin( 4 , 0 ); IndicatorShortName( "all1" ); //---- return ( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return ( 0 ); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int limit,i; // string S=Symbol(); int counted_bars=IndicatorCounted(); //---- проверка на возможные ошибки if (counted_bars< 0 ) return (- 1 ); //---- вычисление минимального кол-ва баров (длины отображаемого графика) if (counted_bars== 0 ) { BarsMin=iBars( "GBPUSD" , NULL ); if (BarsMin>iBars( "USDCHF" , NULL )) BarsMin=iBars( "USDCHF" , NULL ); if (BarsMin>iBars( "EURUSD" , NULL )) BarsMin=iBars( "EURUSD" , NULL ); if (BarsMin>iBars( "USDJPY" , NULL )) BarsMin=iBars( "USDJPY" , NULL ); if (BarsMin>iBars( "EURGBP" , NULL )) BarsMin=iBars( "EURGBP" , NULL ); if (BarsMin>iBars( "EURCHF" , NULL )) BarsMin=iBars( "EURCHF" , NULL ); if (BarsMin>iBars( "EURJPY" , NULL )) BarsMin=iBars( "EURJPY" , NULL ); if (BarsMin>iBars( "GBPCHF" , NULL )) BarsMin=iBars( "GBPCHF" , NULL ); if (BarsMin>iBars( "GBPJPY" , NULL )) BarsMin=iBars( "GBPJPY" , NULL ); if (BarsMin>iBars( "CHFJPY" , NULL )) BarsMin=iBars( "CHFJPY" , NULL ); } // Message(Vl( Symbol (), 0 , 0 )); //---- последний посчитанный бар будет пересчитан if (counted_bars> 0 ) counted_bars--; limit= Bars -counted_bars; if (limit>BarsMin- 2 ) limit=BarsMin- 2 ; //---- основной цикл // for (i = 0; i<=limit;i++) // { // USD_Buffer[i]=USD(i); // EUR_Buffer[i]=EUR(i); // GBP_Buffer[i]=GBP(i); // CHF_Buffer[i]=CHF(i); // JPY_Buffer[i]=JPY(i); // } //---- Вычисление индексов for (i = 0 ; i<=limit;i++) { USD_Buffer[i]=USD(i); EUR_Buffer[i]=EUR(i); GBP_Buffer[i]=GBP(i); CHF_Buffer[i]=CHF(i); JPY_Buffer[i]=JPY(i); } //---- return ( 0 ); } //+------------------------------------------------------------------+ double USD( int j) { double val = 0 ; double GBP_USD=-Cl( "GBPUSD" ,j); double USD_CHF=Cl( "USDCHF" ,j); double EUR_USD=-Cl( "EURUSD" ,j); double USD_JPY=Cl( "USDJPY" ,j); val=(GBP_USD+USD_CHF+EUR_USD+USD_JPY)/ 4 ; return (val); } //+------------------------------------------------------------------+ double GBP( int j) { double val = 0 ; double GBP_USD=Cl( "GBPUSD" ,j); double EUR_GBP=-Cl( "EURGBP" ,j); double GBP_CHF=Cl( "GBPCHF" ,j); double GBP_JPY=Cl( "GBPJPY" ,j); val=(EUR_GBP+GBP_USD+GBP_CHF+GBP_JPY)/ 4 ; return (val); } //+------------------------------------------------------------------+ double EUR( int j) { double val = 0 ; double EUR_USD=Cl( "EURUSD" ,j); double EUR_GBP=Cl( "EURGBP" ,j); double EUR_CHF=Cl( "EURCHF" ,j); double EUR_JPY=Cl( "EURJPY" ,j); val=(EUR_USD+EUR_GBP+EUR_CHF+EUR_JPY)/ 4 ; return (val); } //+------------------------------------------------------------------+ double CHF( int j) { double val = 0 ; double USD_CHF=-Cl( "USDCHF" ,j); double EUR_CHF=-Cl( "EURCHF" ,j); double GBP_CHF=-Cl( "GBPCHF" ,j); double CHF_JPY=Cl( "CHFJPY" ,j); val=(USD_CHF+EUR_CHF+GBP_CHF+CHF_JPY)/ 4 ; return (val); } //+------------------------------------------------------------------+ double JPY( int j) { double val = 0 ; double USD_JPY=-Cl( "USDJPY" ,j); double EUR_JPY=-Cl( "EURJPY" ,j); double GBP_JPY=-Cl( "GBPJPY" ,j); double CHF_JPY=-Cl( "CHFJPY" ,j); val=(USD_JPY+EUR_JPY+GBP_JPY+CHF_JPY)/ 4 ; return (val); } //+------------------------------------------------------------------+ double Cl( string symb, int shift) { double SMA1,SMA2,result,a,b; double k = 100 *Vl(symb, 0 ,shift); double point = MarketInfo(symb,MODE_POINT); double digits = MarketInfo(symb,MODE_DIGITS); SMA1= iMA (symb, 0 ,( 101 -k), 0 , MODE_LWMA , PRICE_TYPICAL ,shift); SMA2= iMA (symb, 0 ,k, 0 , MODE_LWMA , PRICE_TYPICAL ,shift); result=((SMA1-SMA2)/(SMA2+ 0.000000001 ))* 100 ; a= 50 *( MathExp ( 2 *result)- 1 )/( MathExp ( 2 *result)+ 1 ); double norm = (a/point/ 100 ); double target= NormalizeDouble (a,digits); return (target); } double Vl( string symb, int tf, int Shi) { double v; //double k = Vol(symb,0,Bar); if (iVolume(symb, 0 ,Shi+ 1 )<iVolume(symb, 0 ,Shi+ 2 )) v= iVolume(symb, 0 ,Shi+ 1 )/( 0.0000001 +iVolume(symb, 0 ,Shi+ 2 )); else v= iVolume(symb, 0 ,Shi+ 2 )/( 0.0000001 +iVolume(symb, 0 ,Shi+ 1 )); double fff= NormalizeDouble (v, 2 ); return (fff); } //+------------------------------------------------------------------+ //| Comment | //+------------------------------------------------------------------+ // void Message( string m) { Comment (m); if ( StringLen (m)> 0 ) Print (m);} //+------------------------------------------------------------------+Victor! Eğer doğru anladıysam yardım etmeye hazırsınız .... Nerede “mantık yok” anlamıyorum
Victor! Eğer doğru anladıysam yardım etmeye hazırsınız .... Nerede “mantık yok” anlamıyorum
İlginiz için teşekkürler Dmitry ... Bilginize saygı duyuyorum .... ve elbette mizah.
Derecelendirilemedi - MSoffffffis yüklü değil
İlginiz için teşekkürler Dmitry ... Bilginize saygı duyuyorum .... ve elbette mizah.
Derecelendirilemedi - MSoffffffis yüklü değil
Biliyorsun, hiçbir sorunumuz yok. Özellikle SİZİN için metin formatında. Arşivleyici zip'i, belli ki sende var.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Aslında, her şey basit. Başkalarının optimal kodu yapmasına yardım etme ve başkalarından kendim öğrenme arzusu vardı.
Zamanla, bazen (çoğunlukla) yardımcı olan ve bazen engelleyen, iyi tanımlanmış klişelerin geliştirildiği bir sır değildir.
Göstergenin bir versiyonunu hazırlayacağım ve ne yapıldığını ve neden yapıldığını açıklamaya çalışacağım. Eğer ilginçse tabii.