Lógica de aprendizaje

 

En realidad es muy sencillo. Hay un deseo de ayudar a los demás a hacer el mejor código, y de aprender de los demás.

No es ningún secreto que uno acaba por desarrollar ciertos estereotipos que a veces (la mayoría de las veces) ayudan y otras veces entorpecen.

Prepararé una variante del indicador e intentaré explicar lo que se ha hecho y por qué. Si está interesado, por supuesto.

 

¡Da, interesno!

Valera

 

en el ejemplo de un EA por favor, nadie está interesado en los indicadores.

 

Bueno, entonces soy un don nadie.

))) Te lo dije el otro día, soy un fallo del foro, un fantasma, una fata morgana...

 
Svinozavr:

Bueno, eso me convierte en un don nadie.

))) Te lo dije el otro día: soy un fallo del foro, una ficción, una fata-morgana...

Pero siempre en el lugar adecuado en el momento adecuado. ¡Qué bien!

 

Víctor, ¿qué te ha inspirado a realizar esta hazaña? En este foro, no se trata sólo de lógica, el 90% de nosotros no estamos en contacto con la cabeza.

¿No tienes miedo de quedarte empantanado en este pantano? Tendrá que lidiar con algo más que el 10% que es competente...

===

Me uno a las felicitaciones... Incluso brindaré por ti, y por el éxito de tu desesperada empresa...

"Ve solo y cura a los ciegos,
Para saber, en la hora de la duda.
"La burla de los discípulos
Y la indiferencia de la multitud".
// Ajmátova

 
Vinin:

En realidad es muy sencillo. Hay un deseo de ayudar a los demás a hacer el mejor código, y de aprender de los demás.

No es ningún secreto que uno acaba por desarrollar ciertos estereotipos que a veces (la mayoría de las veces) ayudan y otras veces entorpecen.

Prepararé una variante del indicador e intentaré explicar lo que se ha hecho y por qué. Si está interesado, por supuesto.

//+-------------------------------------------------------------------------+
//| 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! Si he entendido bien, usted está dispuesto a ayudar.... no puedo entender donde tengo "ninguna lógica"
 
age_nt:
¡Victor! Si he entendido bien, usted está dispuesto a ayudar.... no puedo entender donde tengo "ninguna lógica"
Archivos adjuntos:
logika.zip  254 kb
 

Gracias Dimitri por tu atención...respeto tu conocimiento....y tu humor por supuesto.

No se puede apreciar - no hay MSoffffffis instalados

 
age_nt:

Gracias Dimitri por tu atención...respeto tu conocimiento....y tu humor por supuesto.

No se puede apreciar - no hay MSoffffffis instalados.

No tenemos ningún problema. Especialmente para TI en formato de texto. Obviamente tienes la cremallera.

Archivos adjuntos:
logika2.zip  90 kb
 
También para los especialmente ingeniosos que no tienen oficina ni cremallera.
Archivos adjuntos:
logika3.mq4  277 kb
Razón de la queja: