Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1139
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Existe algum robô para andróide?
Não há auto-negociação na versão móvel do Metatrader e é improvável que ela apareça num futuro próximo. Se você quiser controlar o robô a partir de seu telefone, você precisa de um VPS que hospedará o terminal com o robô, + software para acesso remoto em seu telefone.
Abro dez gráficos semanais de pares de moedas em MT5 e o terminal carrega 800 megabytes de histórico de carrapatos. Ela é constantemente carregada, embora quase não haja mudanças nos gráficos. A questão é por que preciso de histórico de carrapatos, se eu uso apenas gráficos semanais? A propósito, no MT4 os gráficos semanais abrem instantaneamente sem nenhum atraso.
esta é uma característica do mt5 - carregar tudo no m1 e depois construir o período necessário... ....
e assim a cada vez, para cada símbolo
A idéia da EA é comprar ou vender quando o preço toca um nível horizontal ou uma linha de tendência traçada manualmente. Eu fiz um EA a partir de diferentes EAs e indicadores de trabalho. Mas a EA não funciona. Ou melhor, só abre a SELL sem nenhum sinal no primeiro tique. O que está errado?
/+------------------------------------------------------------------+
//| |
//| Copyright © 2010, MetaQuotes Software Corp.
//| http://www.mql4.com/ru/users/rustein |
//+------------------------------------------------------------------+
#define MAGIC 131313 // abrir canal interno
//---------------------------------------
TF=15 externo interno;
//+------------------------------------------------------------------+
StopLoss int externo = 300;
//--------------------------------------------
TakeProfit duplo externo = 3000;
//--------------------------------------
int externo Per_MA= 20;
//---- constantes
#define OP_BUY_ 0
#define OP_SELL_ 1
//-------------------------------------------------------------------+
Lotes duplos externos = 0,1;
duplo externo MaximumRisk = 1;
duplo fator de redução externo = 0;
bool b_1=verdadeiro, s_1=verdadeiro;
//+------------------------------------------------------------------+
//| Calcular posições abertas |
//+------------------------------------------------------------------+
duplo MA=iMA(NULL,TF,Per_MA,0,0,0,0,1);
int CalculateCurrentOrders(símbolo de corda)
{
int compra=0,vende=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==falso) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUY) compra++;
if(OrderType()==OP_SELL) vende++;
}
}
//---- volume de pedidos de devolução
if(compra>0) return(compra);
senão devolve(-sells);
}
//+------------------------------------------------------------------+
//| Calcular o tamanho ideal do lote |
//+------------------------------------------------------------------+
duplo LotsOptimized()
{
lote duplo=Lotes;
int orders=HistoryTotal(); // histórico total de ordens
int losses=0; // número de ordens de perdas sem intervalo
//---- selecione o tamanho do lote
//lot=NormalizarDuplo(AccountFreeMargin()*MaximumRisk/1000.0,2);
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/100/MarketInfo(Symbol(),MODE_TICKVALUE)/StopLoss,2);
//---- calcule o número de ordens de perdas sem uma pausa
if(DiminaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==falso) { Print("Erro na história!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continua;
//----
if(OrderProfit()>0) quebra;
if(OrderProfit()<0) perdas++;
}
if(perdas>1) lote=NormalizarDuplo(lote-lot*losses/DecreaseFactor,2);
}
//---- tamanho do lote de retorno
if(lote<0,01) lote=0,01;
retorno(lote);
}
//-------------------------------------------------
/* esta parte do indicador
int CheckBreakoutLines(int shift)
{
// Total de Objetos
int obj_total = ObjectsTotal();
// Hora do bar
data/hora agora = Hora[turno];
// Iterate
for(int i = obj_total - 1; i >= 0; i--)
{
// Nome do objeto
etiqueta de corda = ObjectName(i);
// Tipos
int OType = ObjectType(etiqueta);
bool trendline = falso;
bool hline = falso;
// Preço a avaliar
duplo cprice = 0;
// Linhas de tendência
if(OType == OBJ_TREND )
{
bool ray = ObjectGet(label, OBJPROP_RAY);
se(!ray)
{
data hora x1 = ObjectGet(etiqueta, OBJPROP_TIME1);
data hora x2 = ObjectGet(etiqueta, OBJPROP_TIME2);
if(x1 < agora &&& x2 < agora) continuar;
}
cprice = GetCurrentPriceOfLine(etiqueta, turno);
linha de tendência = verdadeiro;
} senão se(OType == OBJ_HLINE ) {
cprice = ObjectGet(label, OBJPROP_PRICE1);
hline = verdadeiro;
} senão {
continuar;
}
// Quebras e falsas quebras de linhas de tendência e linhas
if(MA>cprice &&Ask<cprice)
{
if(trendline) { return(OP_BUY_); } senão se(hline) { return(OP_BUY_); }
} senão se (MA>cprice &&Ask<cprice) {
if(trendline) { return(OP_SELL_); } senão se(hline) { return(OP_SELL_); }
}
}
return(EMPTY_VALUE);
}
duplo GetCurrentPriceOfLine(etiqueta de string, int shift)
{
preço duplo1 = ObjectGet(etiqueta, OBJPROP_PRICE1);
preço duplo2 = ObjectGet(etiqueta, OBJPROP_PRICE2);
datatime d1 = ObjectGet(label, OBJPROP_TIME1);
datetime d2 = ObjectGet(label, OBJPROP_TIME2);
int shiftfrom = iBarShift(Símbolo(), 0, d1, falso);
int shiftto = iBarShift(Símbolo(), 0, d2, falso);
int lapse = MathAbs(shiftto - shiftfrom);
int distância = MathAbs(shift - shiftfrom);
pendiente duplo = (preço2 - preço1) / lapso;
duplo cpoint = preço1 + (distância * pendiente);
retorno(cpoint);
}
//-------------------------------------------------------------------------------------------------------------
//+------------------------------------------------------------------+
//| Verifique as condições de pedidos em aberto |
//+------------------------------------------------------------------+
CheckForOpen()
{
int res;
//--------------------------------------------------------------------+
//--------------------------------------------------------------------+
//---- condições de compra
if(OP_BUY_&&b_1)
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-(StopLoss*Point),Ask+TakeProfit*Point," VV",MAGIC,0,Green);
b_1=falso; s_1=verdadeiro;
retornar;
}
//---- condições de venda
if(OP_SELL_&&s_1)
{
res=OrderSend(Symbol(),OP_SELLL,LotsOptimized(),Bid,3,Bid+(StopLoss*Point),Bid-TakeProfit*Point," VV",MAGIC,0,Red);
s_1=falso;b_1=verdadeiro;
retornar;
}
//----
}
//+------------------------------------------------------------------+
//| Função Start |
//+------------------------------------------------------------------+
início nulo()
{
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular pedidos em aberto pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
}
//+------------------------------------------------------------------+
//|---------------------------// END //------------------------------|
//+------------------------------------------------------------------+
A idéia da EA é comprar ou vender quando o preço toca um nível horizontal ou uma linha de tendência traçada manualmente. Eu fiz um EA a partir de diferentes EAs e indicadores de trabalho. Mas a EA não funciona. Ou melhor, só abre a SELL sem nenhum sinal no primeiro tique. O que está errado?
/+------------------------------------------------------------------+
//| |
//| Copyright © 2010, MetaQuotes Software Corp.
//| http://www.mql4.com/ru/users/rustein |
//+------------------------------------------------------------------+
#define MAGIC 131313 // abrir canal interno
//---------------------------------------
TF=15 externo interno;
//+------------------------------------------------------------------+
StopLoss int externo = 300;
//--------------------------------------------
TakeProfit duplo externo = 3000;
//--------------------------------------
int externo Per_MA= 20;
//---- constantes
#define OP_BUY_ 0
#define OP_SELL_ 1
.....................................
.....................................
//---- verificação de histórico e comércio
if(Bars<100 || IsTradeAllowed()==falso) retorna;
//---- calcular pedidos em aberto pelo símbolo atual
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
}
//+------------------------------------------------------------------+
//|---------------------------// END //------------------------------|
//+------------------------------------------------------------------+
Carregou o programa no bloco de notas e apagou as linhas em branco. Tornou-se possível cobrir com um relance. Pressionado o botão SRC e colado. Eis o que veio à tona. 1) Por que você precisaria definir
se já tivermos OP_BUY=0 e OP_SELL=1
2) A raiz de todo o mal está neste fragmento. Uma e a mesma condição (MA>cprice &&Ask<cprice) é verificada duas vezes, e decisões diferentes são tomadas.
3) Depois disso, cada filial realiza verificações, mas o resultado ainda é o mesmo
De modo geral, a cadeia acima pode ser simplificada e escrita da seguinte forma
if(trendline)return OP_BUY; if(hline) return OP_BUY; или еще проще if(trendline or hline) return OP_BUY;
Carregou o programa no bloco de notas e apagou as linhas em branco. Tornou-se possível cobrir com um relance. Pressionado o botão SRC e colado. Eis o que veio à tona. 1) Por que você precisaria definir
se já tivermos OP_BUY=0 e OP_SELL=1
2) A raiz de todo o mal está neste fragmento. Uma e a mesma condição (MA>cprice &&Ask<cprice) é verificada duas vezes, e decisões diferentes são tomadas.
3) Depois disso, cada filial realiza verificações, mas o resultado ainda é o mesmo
A linha acima pode ser simplificada e escrita da seguinte forma
Obrigado pela resposta, mas ainda abre apenas a venda, como eu vejo desde OP_SELL = 1. Esta condição é sempre satisfeita. Eu o reescrevi assim
As ordens deixaram de abrir, em minha opinião, a CheckBreakoutLines(int shift) não funciona.
Prezados Profissionais. O que devo fazer antes de instalar o MT4 ou depois dele para que depois o histórico de cotações seja escrito/lido a partir de qualquer disco, exceto o disco do sistema, ou isso NÃO é possível?
MT4 de todos os corretores descarrega tudo para C:\MAN\AppData\Roaming\MetaQuotes\Terminal\100....... 001history\downloads (para cada corretor e para cada terminal, respectivamente). Dois MT4 em dois corretores para 3-4 pares comeram 25GB, ou seja, toda a memória livre. Também as citações necessárias são carregadas na história do testador C:UUSADORES........
Por favor, ajude a aconselhar, não levando em conta a reinstalação do Windows (eu tenho 7) com a realocação de tamanhos de disco. Talvez eu esteja fazendo algo errado? Se eu perdi e já foi discutido em algum lugar - por favor, atire um link para mim...
Obrigado de antemão.
Prezados Profissionais. O que devo fazer antes de instalar o MT4 ou depois dele para que depois o histórico de cotações seja escrito/lido a partir de qualquer disco, exceto o disco do sistema, ou isso NÃO é possível?
MT4 de todos os corretores descarrega tudo para C:\MAN\AppData\Roaming\MetaQuotes\Terminal\100....... 001history\downloads (para cada corretor e para cada terminal, respectivamente). Dois MT4 em dois corretores para 3-4 pares comeram 25 GB, ou seja, toda a memória livre. Também as citações necessárias são carregadas na história do testador C:UUSADORES........
Por favor, ajude a não levar em conta a reinstalação do Windows (eu tenho 7) com a realocação de tamanhos de disco. Talvez eu esteja fazendo algo errado? Se eu perdi e já foi discutido em algum lugar - por favor, atire um link para mim...
Obrigado de antemão.
Basta copiar toda a pasta terminal para uma unidade sem sistema, criar um atalho para ela e escrever o interruptor /portátil