예, 흥미롭습니다!
발레라
글쎄, 그럼 난 아무도 아니에요.
))) 나는 지금 말했다 - 나는 포럼 글리치, 픽션, 파타 모르가나 ...
글쎄, 그럼 난 아무도 아니에요.
))) 나는 지금 말했다 - 나는 포럼 글리치, 픽션, 파타 모르가나 ...
그러나 항상 적절한 시간과 적절한 장소에 있습니다. 이것은 나를 행복하게 만든다!
빅터, 이 위업을 하게 된 동기는 무엇입니까? 이 포럼에서는 논리뿐 아니라 90%가 머리로는 친구가 아닙니다.
이 늪에 빠지는 것이 두렵지 않습니까? 글쎄, 당신은 적절한 10 %뿐만 아니라 의사 소통해야합니다 ...
===
나는 축하에 동참합니다 ... 나는 당신에게 술을 마실 것입니다. 동시에 희망없는 사업의 성공을 위해 ...
"혼자 가서 맹인을 고쳐라.
의심의 어두운 시간에 알기 위해
학생들의 악의적인 조롱
그리고 군중의 무관심."
// 아크마토바
사실 모든 것이 간단합니다. 다른 사람들이 최적의 코드를 만들 수 있도록 돕고 싶고, 나 자신도 다른 사람들에게서 배우고 싶은 마음이 있었습니다.
시간이 지남에 따라 잘 정의된 고정 관념이 개발되어 때로는 (가장 자주) 도움이되고 때로는 방해가된다는 것은 비밀이 아닙니다.
지표의 버전을 준비하고 수행된 작업과 이유를 설명하려고 합니다. 물론 흥미롭다면.
//+-------------------------------------------------------------------------+ //| 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);} //+------------------------------------------------------------------+승리자! 내가 올바르게 이해하면 도울 준비가 된 것입니다 .... "논리 없음"이 어디에 있는지 이해할 수 없습니다.
관심을 가져 주신 Dmitry에게 감사드립니다 ... 귀하의 지식을 존중합니다. 물론 유머도 있습니다.
평가할 수 없음 - MSoffffff가 설치되지 않았습니다.
관심을 가져 주신 Dmitry에게 감사드립니다 ... 귀하의 지식을 존중합니다. 물론 유머도 있습니다.
평가할 수 없음 - MSoffffff가 설치되지 않았습니다.
우리는 아무 문제가 없습니다. 특히 텍스트 형식의 당신을 위해. Archiver zip, 분명히 있습니다.
사실 모든 것이 간단합니다. 다른 사람들이 최적의 코드를 만들 수 있도록 돕고 싶고, 나 자신도 다른 사람들에게서 배우고 싶은 마음이 있었습니다.
시간이 지남에 따라 잘 정의된 고정 관념이 개발되어 때로는 (가장 자주) 도움이되고 때로는 방해가된다는 것은 비밀이 아닙니다.
지표의 버전을 준비하고 수행된 작업과 이유를 설명하려고 합니다. 물론 흥미롭다면.