[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 303
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
Há
muitas opções, por exemplo, registrar os tempos abertos em um arquivo, mas é mais fácil percorrer as ordens abertas e comparar os tempos de vida.
Em geral, reformular a frase .
"É necessário fechar todas as posições abertas após um intervalo de tempo
O roteiro não encontrará o tempo do testador tão facilmente (mas o indicador encontrará), você pode anexar o conselheiro de teste ao início
de forma rápida e confiável ...
Tentando escrever um inikator. Não entendo por que ele refileira. Além disso, ela se baseia apenas na renderização. Por favor, me ajude. Sou novo em programação.
#janela_do_cartão_indicador de propriedade
#property indicator_buffers 2
#indicador de propriedade_color1 Magenta
#indicador de propriedade_color2 Vermelho
//---- parâmetros de entrada
int. externo N;
datetime some_time=D'1971.01.11 00:00';
datatime some_time_1=D'1971.01.11 00:00';
//---- buffers
duplo RLB_Buffer[];
duplo RLB_Buffer_1[];
duplo Real_Linha_Balanse=0,x=0,último_alto,último_baixo,RLB, Real_Linha_Balanse_1=0,x1=0,último_alto_1,último_baixo_1,RLB_1;
bool dirlong,primeiro;
int i,ii,bar_alto,bar_baixo,first_t_bar,now_bar,first_t_bar_1,now_bar_1;
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
nome_curto_de_filtro;
//---- linha indicadora
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 159);
SetIndexBuffer(0,RLB_Buffer);
//----;
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1.159);
SetIndexBuffer(1,RLB_Buffer_1);
retorno(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
Comentário(i," ",ii);
//----
if(Bars < 3)
retorno(0);
//----------
first_t_bar=iBarShift(NULL,0,some_time,false); //bars trend upwards
now_bar=iBarShift(NULL,0,TimeCurrent(),false); //longa barra, mais à direita
i=bares_contados_t_bar+1;
//------------
first_t_bar_1=iBarShift(NULL,0,some_time_1,false); //trend start bar
now_bar_1=iBarShift(NULL,0,TimeCurrent(),false); //longa barra, mais à direita
ii=bares_contados_t_bar_1+1;
// if(IsVisualMode()==TRUE) i=first_t_bar-counted_bars-1; //if(counted_bars), then trend start bar
if(counted_bars == 0)
{
primeiro = falso;
i=first_t_bar+1;
ii=primeiro_t_bar_1+1;
}
//------------ //minus barras contadas
dirlong = falso;
if(iMA(NULL,0,1,0,MODE_SMA,PRICE_MEDIAN,0)>iMA(NULL,0,2,0,MODE_SMA,PRICE_MEDIAN,0))dirlong = verdadeiro;
if(dirlong == true) // se a tendência for para cima
{
while(i>=0)
{
x++; //contagem de barras desde o início da tendência
Real_Line_Balanse=Fechar[i+5]; //contar a soma das barras da tendência
RLB=Real_Line_Balanse;
if(RLB<Low[1]) RLB_Buffer[i]=Real_Line_Balanse; //show the line only if the price is up
//-------
if(RLB>Close[i]&& x>50) //se o preço tiver cruzado RLB de cima para baixo
{
bar_high=iHighest(NULL,0,MODE_HIGH,first_t_bar,now_bar);//then determine HIGH entre
//longa barra e início da tendência
some_time_1=Time[bar_high]; //novo início da tendência descendente
x=0; //zeroing do contador de barras desde o início da tendência
Real_Linha_Balanse=0;
}
i--;
}// entretanto
//-------
}//dirlong
//---------------------
//---------------------
if(dirlong == falso) // se a tendência for para baixo
{
enquanto(ii>=0)
{
x1++; //contagem de barras desde o início da tendência
Real_Line_Balanse_1=Fechar[ii+10]; //contar a quantidade de barras da tendência
RLB_1=Real_Line_Line_Balanse_1;
if(RLB_1>High[1]) RLB_Buffer_1[ii]=Real_Line_Balanse_1;
//-------
if(RLB_1<Close[ii]&& x1>50) //se o preço tiver cruzado o RLB de cima para baixo
{
bar_low=iLowest(NULL,0,MODE_LOW,first_t_bar_1,now_bar_1);//então determinar o LOW entre
//longa barra e início da tendência
some_time=Time[bar_low]; //novo início da tendência para cima
x1=0; //zeroing do contador de barras desde o início da tendência
Real_Linha_Balanse_1=0;
}
ii--;
} // entretanto
//-------
}//dirlong
//---------------------
retorno(0);
}
//+------------------------------------------------------------------+
Isto é um absurdo. Em vez de
i=bares_contados_t_bar+1;
Eu coloquei um desenho que conta as barras que ela mesma conta. TODOS começaram a funcionar sem problemas. IndicatorCounted(); falhas ou não entendo...
como informar uma variável sobre o status de uma ordem fechada?
Isto é um absurdo. Em vez de
i=bares_contados_t_bar+1;
Coloquei em uma construção que conta as próprias barras contadas. Tudo vai bem. IndicatorCounted(); falhas ou não entendo...
Você usa while(i>=0), então quando uma nova vela aparece, i=1 (para garantir que os dados da vela anterior sejam contados pelos dados registrados uma vez).
Por que entrar some_time=D'1971.01.11 00:00'; use Bars , IndicatorCounted não funciona para mim (bem, o erro é provavelmente por causa da primeira_t_bar).
Seu algoritmo e você deve consertá-lo.
"Sou novo na programação."Desde 2007").
como informar uma variável sobre o status de uma ordem fechada?
:)
+ ...
Para a Vitaluha:
https://docs.mql4.com/ru/trading/OrderStopLoss
https://docs.mql4.com/ru/trading/OrderTakeProfit
O problema é que a EA reabre constantemente os pedidos, ou seja, há um sinal de compra - ela abre um pedido, depois o fecha com lucro, e as condições ainda são preservadas, ela o abre novamente.
Pensei que poderia ser tratado com o contador tradicional de compra e venda - se uma ordem de compra tiver aberto o contador +1 e uma nova compra não puder ser aberta até que o contador seja 0 e o contador seja reinicializado somente quando for fechado.