[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 326

 
drknn:


Comece com a definição do problema.

- Use o roteiro para detectar a presença de uma linha no gráfico.

- Se a linha existir, imprimir seu preço inicial e final para as variáveis; imprimir os números de barras (ou tempo) para as variáveis.

- Faça os cálculos necessários usando o roteiro.

- Imprimir os resultados para a tela (ou para um documento de texto ou para o Jornal do Expert Advisor)

Se você não conseguir resolver estes 4 problemas de imediato, comece aprendendo a língua.


drknn! obrigado! Vou dar uma olhada nisso!!!
 
Zhunko:

Não é segredo. Há muita coisa escrita sobre isso. Não importa que ferramenta foi usada para criar a história. O objetivo é atualizar a tabela para que o Expert Advisor trabalhe nela.

Isto pode ser feito por meio do WinAPI. Já foi descrito aqui muitas vezes. Eu escrevi uma biblioteca. Eu afixei aqui.

Ele contém funções para controlar a atualização autônoma do gráfico. Não requer nenhum roteiro ou especialista. Mas não é para todos. Há também funções disponíveis a todos para atualizar o gráfico a partir de um Expert Advisor, um roteiro ou um indicador. É mais difícil utilizá-los. Porque você tem que pensar em qual de seus programas atualizará o quadro. Os exemplos estão no roteiro de teste.

Por acaso você tem uma solução pronta para "extrair" a última linha do arquivo de log para exibir nos comentários?
 

Ajude um nerd a sair. Apenas para esclarecer a essência da questão.

Tenho dois pontos no gráfico, ponto 2 - o mais próximo da barra zero e t.1 - o mais distante da barra zero da história. Eu tento traçar uma linha de tendência a partir destes dois pontos,

estendendo um segmento entre esses pontos por N (variável int RayLong) intervalos à frente. O código é o seguinte:

if (RayLong!=0 && point1s==true && point2s==true)
{
//расчет цены в будущем
if (price11s>price22s) {price11s=NormalizeDouble(price11s+((price11s-price22s)*RayLong),Digits);} 
if (price11s<price22s) {price11s=NormalizeDouble(price11s-((price22s-price11s)*RayLong),Digits);}
//расчет бара в будущем
int bis=iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true);
Print("Sup "+iBarShift(Symbol(),0,time22s,true)+" "+iBarShift(Symbol(),0,time11s,true)+" "+bis+
" sec="+bis*Period()*60*NormalizeDouble(RayLong,Digits)+" Time="+TimeToStr(time11s+(Period()*60*
(iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true)+1)*RayLong),TIME_DATE|TIME_SECONDS));
time11s=time11s+(Period()*60*((iBarShift(Symbol(),0,time22s,true)-iBarShift(Symbol(),0,time11s,true))*RayLong));
//time11s=time11s+((time11s-time22s)*RayLong); //альтернативный вариант предыдущей строки
}
O problema é que o ponto de cálculo está flutuando na data. O preço é OK. A data, por outro lado, ou é fina ou flutuante. A impressão mostra que isto acontece quando a data de liquidação não está na programação - fins de semana ou feriados. Por favor, sugira uma solução para o problema.
 
forexnew:
Por acaso você tem uma solução pronta para "extrair" a última linha do arquivo de log para exibir nos comentários?
Isto é inútil. O arquivo de registro é preenchido após o upload do MT4 ou quando o MT4 tem tempo para fazê-lo.
 
ZZZEROXXX:

Ajude um nerd a sair. Apenas para esclarecer a essência da questão.

Tenho dois pontos no gráfico, ponto 2 - o mais próximo da barra zero e t.1 - o mais distante da barra zero da história. Eu tento traçar uma linha de tendência a partir destes dois pontos,

ampliando o segmento entre esses pontos por intervalos N (variável int RayLong) adiante. O código é o seguinte:

O problema é que o ponto de cálculo está flutuando na data. Tudo está de acordo com o preço. A data, por outro lado, ou é fina ou flutuante. Eu uso Print para descobrir que isto acontece quando a data de liquidação não está na programação - fins de semana ou feriados. Por favor, me aconselhe como resolver este problema.

Eu não entendo o problema. Se você estiver desenhando por preço e barras Não há barras de fim de semana e de não fim de semana na tabela. Portanto, a tendência e deve continuar até as próximas barras correspondentes às datas dos dias de negociação.

Ou é diferente para você?

 

Você poderia me dizer se a matriz será preenchida com tikets de ordem pendente no seguinte código:

int tiket[];

int SetFunk()

{

para (i=0; i<=k-1; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}

?????
os nulos são devolvidos quando se tenta imprimir()

 
Para que serve a classe de memória estática? Se possível, você pode dar um bom exemplo de seu uso em código e destacar as características que o fazem se destacar de outras classes de memória? Esta coisa parece ser inútil, quem sabe o quê?
 
myrzila:

Você poderia me dizer se a matriz será preenchida com tikets de ordem pendente no seguinte código:

int tiket[];

int SetFunk()

{

para (i=0; i<=k-1; i++)

{
ticket[i]=OrderSend(Symbol(),OP_BUYSTOP,0.01*Lots,Ask+Step*i*Point,3,Bid-S_Loss*Point,0,",10000,0,Green);

ticket[i+k]=OrderSend(Symbol(),OP_SELLSTOP,0.01*Lots,Bid-Step*i*Point,3,Ask+S_Loss*Point,0,"",10000,0,Green);

}

}


os nulos são devolvidos quando se tenta imprimir()

primeiro defina o tamanho da matriz (ArrayResize) e depois trabalhe com ela
 

Olá.

Eu tenho um EA.

Como posso fazer para mostrar os níveis médios móveis mostrados na imagem?

Neste momento, ele mostra apenas zeros.


//+------------------------------------------------------------------+
//| função de inicialização especializada |
//+------------------------------------------------------------------+
int init()
{
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização de especialistas |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
retorno(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




 
emilien:


Olá.

Eu tenho um EA.

Como posso fazer para mostrar os níveis médios móveis mostrados na imagem?

Neste momento, ele mostra apenas zeros.


//+------------------------------------------------------------------+
//| função de inicialização especializada |
//+------------------------------------------------------------------+
int init()
{
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização de especialistas |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de início especializado |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0)-0.0015,0),Red,10,20,0,20);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),13,30,8,MODE_SMA,PRICE_CLOSE,0),0),Red,10,50,0,20);
//----
retorno(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}




duplo iMA( símbolo de string, int timeframe, int período, int ma_shift, int ma_method, int aplicado_preço, int shift)

Ainda não ouvi falar do cronograma 13

Razão: