[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 38

 
nuan:

A carta significa que ela fecha a ordem no mesmo segundo, não em 30 minutos.


Eu coloquei o código como em seu exemplo


O robô não fecha por outros motivos, ou seja, não fecha em parada ou com lucro.


1 2011.07.29 00:00 comprar 1 0.01 1.4328 1.3328 1.5328 0.00 1000.00
2 2011.07.29 00:01 fechar 1 0.01 1.4327 1.3328 1.5328 -0.10 999.90
3 2011.07.29 00:01 comprar 2 0.01 1.4329 1.3329 1.5329 0.00 999.90
4 2011.07.29 00:01 fechar 2 0.01 1.4326 1.3329 1.5329 -0.30 999.60
5 2011.07.29 00:01 comprar 3 0.01 1.4328 1.3328 1.5328 0.00 999.60
6 2011.07.29 00:03 fechar 3 0.01 1.4327 1.3328 1.5328 -0.10 999.50
7 2011.07.29 00:03 comprar 4 0.01 1.4329 1.3329 1.5329 0.00 999.50
8 2011.07.29 00:03 fechar 4 0.01 1.4329 1.3329 1.5329 0.00 999.50


Coloque tudo isso no final da função start(). Suas operações devem vir antes disso.

datetime TimeM30=iTime(NULL,30,0);
    if(TimeM30==prevtime) return(0); 
    prevtime = TimeM30;   
    CloseAllPosTime();
 
nuan:
Substitua em start() por esta opção:
 datetime CloseTime;
//=====================
 int start(){

   if(TimeCurrent()-CloseTime > 30*60){CloseAllPos();CloseTime=TimeCurrent();}//Можно поставить в любом месте функции старт.
  return(0);
 }
//====================
 
forexnew:

Eu entendo.

E se você considerar a abertura de uma conta com $0 como início, e a 1ª recarga como recarga? É possível determinar programmaticamente todas as recargas (incluindo a primeira) que foram feitas para a conta?


:-Р

Você está remando na direção errada... :-)))

Há uma função

double AccountBalance( ) 

com sua ajuda, você define o estado do saldo de sua conta por negócios fechados em algum momento.

Então - vamos supor que você entrou no mercado - déficit flutuante em sua conta com posições abertas, e então você deposita fundos em sua conta... Aqui devemos determinar a quantidade de divisão (se houver) para corrigir o volume (para cima) das posições abertas, a fim de manter a "tolerância" inicial ao saque/lucro, digamos, em pontos percentuais do capital, a partir do qual o volume das posições "iniciais" de mercado (antes da divisão) foi calculado. Qual é a solução para esta questão?

 
CloseTime 
Нужно задавать этот параметр? если да то как?
 
nuan:


Não o faça. É uma variável de tempo "intermediária", sempre igual à última hora de fechamento.

O tempo de operação é definido em segundos. No seu caso, é 30*60.
Você pode substituir 30 por alguma variável, digamos, exstern int closetime = 30.
Então a hora será a seguinte: hora de fechar*60.

 
charter:


Não o faça. É uma variável de tempo "intermediária", sempre igual à última hora de fechamento.

O tempo de operação é definido em segundos. No seu caso, é 30*60.
Você pode substituir 30 por alguma variável, digamos, exstern int closetime = 30.
Então a hora será a seguinte: hora de fechar*60.

Tentei o mesmo, está no final do corpo start.... Eu não entendo porque é assim. Talvez haja outra opção?
 
Roman.:


:-Р

Você está remando na direção errada... :-)))

Há uma função

com sua ajuda para determinar o estado de equilíbrio de sua conta comercial para negócios fechados em algum momento.

Então - vamos supor que você entrou no mercado - déficit flutuante em sua conta com posições abertas, e então você deposita fundos em sua conta... Aqui devemos determinar a quantidade de divisão (se houver) para corrigir o volume (para cima) das posições abertas, a fim de manter a "tolerância" inicial ao saque/lucro, digamos, em pontos percentuais do capital, a partir do qual o volume das posições "iniciais" de mercado (antes da divisão) foi calculado. Qual é a solução para esta questão?


Se você determinou inicialmente a relação do StartBalance (saldo inicial) para StarLots (lote inicial) de acordo com os riscos especificados, então o valor do patrimônio líquido deve ser determinado:

if(AccountEquity()<StartBalance) Top-up = (AccountBalance()+(StartBalance-AccountEquity()))*Novo Lote/StarLots

Isto é excluindo AccountCredit(). Se o entendi corretamente, é claro.

 
nuan:
Tentei a mesma coisa, está no final do corpo start.... Não entendo por que é este o caso. Talvez haja outra opção?
Procure por um erro em outra coisa.
Ambas as opções devem funcionar.
 
muito obrigado!
 

Olá a todos. Tenho uma pergunta para você. Preciso encontrar o máximo e mínimo mais próximo. Mas que devem estar a + - 10 pontos de Open[0];

Tenho-o assim agora:

para (int i=1;i<100;i++)

se (Alto[i+1]<Alto[i] && Alto[i]>Alto[i-1] quebra;

encontra o máximo próximo,

Se eu adicionar a comparação High[i]>(Open[0]+0,0010) e High[i]<(Open[0]+0,0020) é o que parece

if (Alto[i+1]<Alto[i] && Alto[i]>Alto[i-1] && Alto[i]>(Aberto[0]+0,0010) && Alto[i]<(Aberto[0]+0,0020) quebra;

O programa busca o máximo errado. Qual é o problema?

Eu ainda não tentei o mínimo.