Perguntas de um "boneco" - página 239

 
forward666:

Obrigado! Se me puder dar alguma dica, isso seria óptimo!

Vou ler mais sobre o estilizador.

Tente, em vez disso:

bool first;

escrever:

bool first=true;
 
Caríssimos Senhores! Por favor, aconselhe "manequins" como (ou melhor, onde) descarregar gratuitamente um Expert Advisor do Mercado? Sei onde instalar Expert Advisors padrão... Não o posso fazer a partir do Mercado - que aplicação devo utilizar?
 
Sokrat:

Caríssimos Senhores! Por favor, aconselhe "manequins" como (ou melhor, onde) descarregar gratuitamente um Expert Advisor do Mercado? Sei onde instalar uma EA comum... Não o posso fazer a partir do Mercado - que aplicação devo utilizar?
A forma mais fácil de o fazer a partir do terminal, a Caixa de Ferramentas tem o separador Mercado
 
Sokrat:

Caríssimos Senhores! Por favor, aconselhe "manequins" como (ou melhor, onde) descarregar gratuitamente um Expert Advisor do Mercado? Sei onde instalar Expert Advisors padrão... Não o posso fazer a partir do Mercado - que aplicação devo 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();
  }

Tem antes do primeiro tick: first===false, e as variáveis a e b não são inicializadas. É por isso que no primeiro tique a condição

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

não funciona, e as variáveis a e b permanecem não inicializadas.

Se após a resolução deste problema a posição ainda estiver aberta, imprimir os valores da matriz para MA, perguntar, licitar e variáveis a e b.

 

Olá.

Sou um verdadeiro boneco, por isso não me dêem pontapés).

A minha pergunta é: Como posso extrair dados de citações do Metatrader 5?

Converti as citações para ficheiro excelente e levei-o para o meu local de trabalho onde não tenho acesso à Internet e trabalhei com ele.

Mas em 5 metatrader não sei como converter os seus ficheiros para se sobressaírem. Pode dizer-me, por favor? Acontece que preciso de uma instrução passo a passo ou de um guião (não conheço a linguagem de programação, mas sei como utilizar guiões, conselheiros especializados ou indicadores), que poderiam ser iniciados num período de tempo necessário, mesmo que não seja normalizado (M3 ou M7, por exemplo). Gostaria também de lhe pedir que não me peça para começar a estudar a linguagem de programação, por favor.

Gostaria apenas de mudar permanentemente para o MT5 para não ter de trabalhar com dois metatraders.

Esperando realmente pela vossa ajuda, pessoas conhecedoras, ficariam gratas à sepultura =).

Cumprimentos, Alexey.

 
Hronoptal:

...

Em parte aqui encontrará o que precisa: Como preparar citações do MetaTrader 5 para outros programas

Se não quiser aprender, pode encomendar o que quiser na secção Trabalhos. ))

 

Muito obrigado, cara portagem64, pela dica.

Quanto à aprendizagem, ainda é, infelizmente, uma questão de falta de tempo.

Mais uma vez, muito obrigado.

Atenciosamente, Alexey.

 
É possível que o teste do indicador visual mostre 2 ou mais indicadores em vez de apenas 1?
 
paladin800:
É possível fazer 2 ou mais indicadores a serem mostrados durante o teste do indicador visual, e não apenas 1?
Guardar o modelo com o ficheiro file name tester.tpl com todos os indicadores necessários e activar o teste em modo de visualização.