Boris.45: Boa tarde, estimados comerciantes! Por favor, ajudem um programador novato. Escrevi um bloco de programas usando fractais durante vários períodos de tempo para procurar canais móveis (SK) de Borispolz e comecei a escrever algoritmos para abertura de posições. Esta situação sugere o seguinte: é necessário trabalhar em prazos seleccionados na pesquisa e cálculo de parâmetros SK, enquanto a decisão de colocar encomendas ou posições em aberto deve ser feita em prazos muito pequenos. Aconselhar como organizar o programa de modo a que o bloco para calcular os parâmetros SK funcione apenas nos prazos seleccionados, por exemplo H1 e H4, e o bloco para tomar decisões sobre a colocação de encomendas funcione no prazo M1. Não encontrei soluções para isso nos artigos.
Obrigado pela vossa atenção.
Estou bastante longe dos fractais, mas aqui ficam algumas considerações gerais. Podemos tentar da forma mais simples: criar um indicador que calcule "parâmetros SK" em H4. Depois deixe o nosso Consultor Especialista verificar este indicador a cada vez que se verifica e tomar decisões sobre a colocação de encomendas.
#property indicator_label1 "LINE"#property indicator_type1 DRAW_LINE#property indicator_color1 clrGold#property indicator_style1 STYLE_SOLID#property indicator_width1 2inputint period = 10; //Период усреденияinputbool USE_LIMIT= false; //вкл/выкл лимитирование//Заключается в ограничении максимального изменения значения индикатораinputdouble use_limit= 0.00005; //Величина//на которую максимально может измениться индикаторdouble Buffer[];
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
SetIndexBuffer(0,Buffer,INDICATOR_DATA);
//PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
//--- вычисления значений индикатора//--- calculate the indicator valuesint start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate//--- if the calculation is made on a previous run of OnCalculateif(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations//--- заполняем индикаторный буфер значениями//--- fill indicator buffer valuesfor(int i=start;i<rates_total;i++)
{
Buffer[0]=price[0];
double delta=(price[i]-Buffer[i])/period;
if(USE_LIMIT && delta>use_limit)
{
delta=use_limit;
}
if(USE_LIMIT && delta<-use_limit)
{
delta=-use_limit;
}
Buffer[i+1]=Buffer[i]+delta;
}
//--- вернем значение prev_calculated для следующего вызова функции//--- return the value for the next call of prev_calculated functionreturn(rates_total);
}
//+------------------------------------------------------------------+
Para testes: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization
Ainda não foi encontrada ajuda para negociação ao vivo - basta tentar abrir e fechar uma posição numa conta de demonstração.
Obrigado pela vossa atenção.
Para testes: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization
Para negociação ao vivo ainda não encontrei qualquer ajuda - basta tentar abrir e fechar uma posição numa conta de demonstração.
Obrigado! Vou tentar!
Mas eu só preciso dele para visualização numa conta de demonstração)
Se não funcionar com uma conta demo, avisem-me.
Mas eu só preciso dele para visualização numa conta de demonstração)
A partir da história, pode puxar o rato para o gráfico (com o shifter - todos eles).
!!! Com um controlador irá repor as definições do gráfico.O que há de errado com o código?
Os gráficos estão bem, no testador surge o erro "Array Out Of Range".
O que há de errado com o código?
Os gráficos estão bem, no testador surge o erro "Array Out Of Range".
Loop vai até i<rates_total.Then there is Buffer[ i+1] .
Buffer[rates_total] Não existe tal coisa. O último índice é rates_total-1.
O que há de errado com o código?
Os gráficos estão bem, no testador surge o erro "Array Out Of Range".
Buffer[i+1] === +1 не делается проверка на выход за массивO laço vai até i<rates_total.Then there is Buffer[ i+1] .
Buffer[rates_total] Não existe tal coisa. O último índice é rates_total-1.
Mudou para isto
i<rates_total-1Parece funcionar