Preguntas de un "tonto" - página 239

 
forward666:

Gracias! Si puedes darme algún consejo, sería genial!

Voy a leer más sobre el estilizador.

Inténtalo en su lugar:

bool first;

escribir:

bool first=true;
 
Estimados señores. Por favor, aconseja a los "dummies" cómo (o más bien dónde) descargar un Asesor Experto gratuito del Mercado? Sé dónde instalar los Asesores Expertos estándar... no puedo hacerlo desde Market - ¿qué aplicación debo usar?
 
Sokrat:

Estimados señores. Por favor, aconseja a los "dummies" cómo (o más bien dónde) descargar un Asesor Experto gratuito del Mercado? Sé dónde instalar un EA ordinario... no puedo hacerlo desde el Market - ¿qué aplicación debo utilizar?
La forma más fácil de hacerlo desde el terminal, la caja de herramientas tiene la pestaña Mercado
 
Sokrat:

Estimados señores. Por favor, aconseja a los "dummies" cómo (o más bien dónde) descargar un Asesor Experto gratuito del Mercado? Sé dónde instalar los Asesores Expertos estándar... no puedo hacerlo desde Market - ¿qué aplicación debo usar?



 

forward666: У меня при запуске робота сразу открывается позиция,которая явно не отражает реалии графика,соответственно она уходит в глубокий минус. Как сделать,что при запуске робота эта позиция не открывалась сразу?где в коде нужно что-то добавить?

#include <Trade/Trade.mqh>
#include <Trade/SymbolInfo.mqh>
#include <Trade/PositionInfo.mqh>

CTrade Trade;
CSymbolInfo Sym;
CPositionInfo Pos;

input int Shift=10; /*Shift*/ // Величина скачка цены для открытия позиции
input int Limit=100; /*Limit*/ // Величина убытка в пунктах для закрытия позиции
input int Prof=10;
input int MA_Period=50; // Период Moving Average 
int maHandle; // хэндл индикатора Moving Average
double maVal[3]; // статический массив для хранения значений индикатора Moving Average
bool first;
double a,b,Lots;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
  {
   maHandle=iMA(NULL,0,MA_Period,2,MODE_SMA,PRICE_CLOSE);
   if(maHandle<0)
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }
   first=false;
   if(!Sym.Name(_Symbol))
     {
      Alert("Ошибка инициализации CSymbolInfo, поворите попытку");
      return(-1);
     }
   Print("Инициализация эксперта выполнена");
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   IndicatorRelease(maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CopyBuffer(maHandle,0,0,3,maVal)<0)
     {
      Alert("Ошибка копирования буферов индикаторов - номер ошибки:",GetLastError());
      return;
     }
   if(!Sym.RefreshRates()) return;
   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }
   Lots=AccountInfoDouble(ACCOUNT_FREEMARGIN)*0.66/1000/SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE);
   Lots=MathMin(999,MathMax(1,Lots));
   Lots=NormalizeDouble(Lots,2);
   if(Pos.Select(_Symbol))
     {
      if(Pos.Profit()>2)
        {
         Trade.PositionClose(_Symbol,Sym.Spread()*2);
        }
      else
        {
         if(Pos.PositionType()==POSITION_TYPE_BUY)
           {
            if((Pos.PriceOpen()-Sym.Ask())/Sym.Point()>Limit)// || Sym.Bid()<maVal[0]-0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
         else if(Pos.PositionType()==POSITION_TYPE_SELL)
           {
            if((Sym.Bid()-Pos.PriceOpen())/Sym.Point()>Limit)// || Sym.Ask()>maVal[0]+0.0005)
              {
               Trade.PositionClose(_Symbol,Sym.Spread()*2);

              }
           }
        }
     }
   else
     {
      if(b-Sym.Bid()>=Shift*Sym.Point() && maVal[0]>maVal[1] && maVal[1]>maVal[2] && Sym.Bid()<maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lots,Sym.Bid(),0,0,""); //Sym.Bid()+0.0030
                                                                            // Trade.Sell(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Sell");
        }
      if(Sym.Ask()-a>=Shift*Sym.Point() && maVal[0]<maVal[1] && maVal[1]<maVal[2] && Sym.Ask()>maVal[0])
        {
         Trade.SetDeviationInPoints(Sym.Spread()*2);
         Trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lots,Sym.Ask(),0,0,""); //Sym.Ask()-0.0030
                                                                           // Trade.Buy(Lots,_Symbol,0,0,0,"");
         Print(__FUNCTION__,"():Buy");
        }
     }
   a=Sym.Ask();
   b=Sym.Bid();
  }

Tiene antes del primer tick: first==false, y las variables a y b están sin inicializar. Por eso, en el primer tic la condición

   if(first)
     {
      a=Sym.Ask();
      b=Sym.Bid();
      first=false;
      return;
     }

no funciona, y las variables a y b permanecen sin inicializar.

Si después de arreglar este problema la posición sigue abierta, imprima los valores del array para MA, ask, bid y las variables a y b.

 

Hola.

Soy un auténtico tonto, así que no me des una patada).

Mi pregunta es: ¿Cómo puedo extraer datos de cotización de Metatrader 5?

He convertido los presupuestos en un archivo de Excel y me lo he llevado a mi lugar de trabajo, donde no tengo acceso a Internet, y he trabajado con él.

Pero en 5 metatrader no sé cómo convertir sus archivos a excel. ¿Puede decirme, por favor. Resulta que necesito una instrucción paso a paso o un script (no conozco el lenguaje de programación, pero sé cómo utilizar scripts, asesores expertos o indicadores), que podría iniciarse en un marco de tiempo necesario, incluso si no es estándar (M3 o M7, por ejemplo). También me gustaría pedirle que no me pida que empiece a estudiar el lenguaje de programación, por favor.

Me gustaría cambiar permanentemente a MT5 para no tener que trabajar con dos metatrader.

Realmente esperando su ayuda, gente conocedora, estaría agradecido a la tumba =).

Saludos, Alexey.

 
Hronoptal:

...

En parte, aquí encontrará lo que necesita: Cómo preparar las cotizaciones de MetaTrader 5 para otros programas

Si no quieres aprender, puedes pedir lo que quieras en la sección de Trabajos. ))

 

Muchas gracias, querido tol64, por el consejo.

En cuanto al aprendizaje, sigue siendo una cuestión de falta de tiempo, por desgracia.

Muchas gracias de nuevo.

Sinceramente, Alexey.

 
¿Es posible que la prueba del indicador visual muestre 2 o más indicadores en lugar de sólo uno?
 
paladin800:
¿Es posible hacer que se muestren 2 o más indicadores durante la prueba del indicador visual y no sólo 1?
Guarde la plantilla con el nombre de archivo tester.tpl con todos los indicadores necesarios y habilite la prueba en modo de visualización.