학습 논리

 

사실 모든 것이 간단합니다. 다른 사람들이 최적의 코드를 만들 수 있도록 돕고 싶고, 나 자신도 다른 사람들에게서 배우고 싶은 마음이 있었습니다.

시간이 지남에 따라 잘 정의된 고정 관념이 개발되어 때로는 (가장 자주) 도움이되고 때로는 방해가된다는 것은 비밀이 아닙니다.

지표의 버전을 준비하고 수행된 작업과 이유를 설명하려고 합니다. 물론 흥미롭다면.

 

예, 흥미롭습니다!

발레라

 

고문의 예 에서 아무도 지표에 관심이 없습니다.

 

글쎄, 그럼 난 아무도 아니에요.

))) 나는 지금 말했다 - 나는 포럼 글리치, 픽션, 파타 모르가나 ...

 
Svinozavr :

글쎄, 그럼 난 아무도 아니에요.

))) 나는 지금 말했다 - 나는 포럼 글리치, 픽션, 파타 모르가나 ...

그러나 항상 적절한 시간과 적절한 장소에 있습니다. 이것은 나를 행복하게 만든다!

 

빅터, 이 위업을 하게 된 동기는 무엇입니까? 이 포럼에서는 논리뿐 아니라 90%가 머리로는 친구가 아닙니다.

이 늪에 빠지는 것이 두렵지 않습니까? 글쎄, 당신은 적절한 10 %뿐만 아니라 의사 소통해야합니다 ...

===

나는 축하에 동참합니다 ... 나는 당신에게 술을 마실 것입니다. 동시에 희망없는 사업의 성공을 위해 ...

"혼자 가서 맹인을 고쳐라.
의심의 어두운 시간에 알기 위해
학생들의 악의적인 조롱
그리고 군중의 무관심."
// 아크마토바

 
Vinin :

사실 모든 것이 간단합니다. 다른 사람들이 최적의 코드를 만들 수 있도록 돕고 싶고, 나 자신도 다른 사람들에게서 배우고 싶은 마음이 있었습니다.

시간이 지남에 따라 잘 정의된 고정 관념이 개발되어 때로는 (가장 자주) 도움이되고 때로는 방해가된다는 것은 비밀이 아닙니다.

지표의 버전을 준비하고 수행된 작업과 이유를 설명하려고 합니다. 물론 흥미롭다면.

 //+-------------------------------------------------------------------------+
//| 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);} 
//+------------------------------------------------------------------+     
승리자! 내가 올바르게 이해하면 도울 준비가 된 것입니다 .... "논리 없음"이 어디에 있는지 이해할 수 없습니다.
 
age_nt :
승리자! 내가 올바르게 이해하면 도울 준비가 된 것입니다 .... "논리 없음"이 어디에 있는지 이해할 수 없습니다
파일:
logika.zip  254 kb
 

관심을 가져 주신 Dmitry에게 감사드립니다 ... 귀하의 지식을 존중합니다. 물론 유머도 있습니다.

평가할 수 없음 - MSoffffff가 설치되지 않았습니다.

 
age_nt :

관심을 가져 주신 Dmitry에게 감사드립니다 ... 귀하의 지식을 존중합니다. 물론 유머도 있습니다.

평가할 수 없음 - MSoffffff가 설치되지 않았습니다.

우리는 아무 문제가 없습니다. 특히 텍스트 형식의 당신을 위해. Archiver zip, 분명히 있습니다.

파일:
logika2.zip  90 kb
 
또한 사무실이나 우편번호가 없는 특히 수완이 있는 사람들을 위한 것입니다.
파일:
logika3.mq4  277 kb