[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 207

 

O cálculo da margem por 1 lote é muito simples:

  double МАРЖА=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
  double МАРЖАИНИ=MarketInfo(Symbol(),MODE_MARGININIT);
  double МАРЖАПОДД=MarketInfo(Symbol(),MODE_MARGINMAINTENANCE);
  double МАРЖАЛОК=(MarketInfo(Symbol(),MODE_MARGINHEDGED)*2)/MarketInfo(Symbol(),MODE_LOTSIZE);

Os valores de retorno estão na moeda do depósito.

Observe que eles podem retornar 0 e esta é a norma.

Algumas mesas de negociação não utilizam margens de inicialização e/ou suporte.

Eles também usam a "margem zero" da sobreposição.

*

Cálculo do tipo de informação de opção sobreposta, em princípio:

  string МАРЖАЛОКИД="na";
  if( МАРЖАЛОК==0)    МАРЖАЛОКИД="0";
  if( МАРЖАЛОК==1)    МАРЖАЛОКИД="1";
  if( МАРЖАЛОК==0.5)  МАРЖАЛОКИД="1D";
  if( МАРЖАЛОК==2)    МАРЖАЛОКИД="2";  
 
kombat >> :

O cálculo da margem por lote é muito simples:....

Não era isso que ele queria. Ele precisa calcular a margem das ordens abertas separadamente por instrumento. Ou seja, somar os lotes por instrumento e multiplicar pela margem do instrumento.

 
granit77 >> :

Isto não é o que ele queria. Ele precisa calcular a margem das ordens abertas separadamente por instrumento. Isto significa somar os lotes por instrumento e multiplicar pela margem do instrumento.

Bem, é simples, cada instrumento tem seu próprio summolot*margin

Conhecemos a margem, conhecemos o bruto:

double SumLot(){ double buy=0, sell=0, sl; int y;
for( y=0; y<OrdersTotal(); y++) {OrderSelect( y, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol() && OrderType()==0) buy+=OrderLots();
if(OrderSymbol()==Symbol() && OrderType()==1) sell+=OrderLots();
} return( buy- sell);}
 
kombat писал(а) >>

O cálculo da margem por 1 lote é muito simples:

Os valores de retorno estão na moeda do depósito.

Observe que eles podem retornar 0 e esta é a norma.

Algumas mesas de negociação não utilizam margens de inicialização e/ou suporte.

Além disso, são usadas sobreposições de "margem zero".

*

Cálculo do tipo de informação sobreposta, por princípio, uma opção:

Obrigado.

Qual é a diferença entre a inicialização e a margem de apoio e a margem normal - para que são utilizadas?

 
Finbest >> :

Obrigado.

Qual é a diferença entre as margens de inicialização e de apoio e as margens regulares - para que são utilizadas?

Este é o kit de ferramentas para o futuro.

m.init = margem necessária para abrir

m.subd = exibido após a abertura

Os cálculos são bastante complexos e específicos, portanto, sou guiado pelas condições de negociação.

m.subd geralmente ~75% do m.ini, exemplos aqui...

 

Outra opção é olhar para as margens separadamente por instrumento.

(ligeiramente afinada iExposure )

Arquivos anexados:
 

Hi. Ajude, por favor.

Eu escrevi este programa... não funciona...


double ves[][6], hour[][6];
ArrayCopyRates(ves, Symbol(), Period());// array tem todos os dados do gráfico

int day= Day();
int hou= Hour();
da= day;
for (; q<= da; q++, w--){
if (TimeDay(ves[q][0])== w && TimeHour(ves[q][0])== hou){
ArrayCopy(hour, ves, e, q);
e++;
}
}

Tenho duas arrays. ves array é uma array de tempo.

o que eu preciso........

tomar a hora atual. de ves cópia para hora. todos os 6 dados.

tomar o dia de ontem na mesma hora (dia de ontem) de ves copiado para hora.

e assim por diante...

 

Pessoal, ajudem, não sei como fazer isso.

Tenho um loop que calcula os níveis entre LOW e HI com Step.

para ( duplo c = BAIXO; c < HI; c = c + Passo)

Agora eu preciso armazenar cada nível em algum lugar para que seja fácil puxá-lo para fora mais tarde e compará-lo com o preço atual. Muito obrigado na forma de código, não por preguiça, mas porque até ver o exemplo, ainda não entendo como fazê-lo. Obrigado!

 

Olá, Estimados Connoisseurs. Continuo fazendo perguntas para as quais não consigo encontrar respostas no livro e no fórum. Como pode ser esta situação?

Por que no teste, mostrando um lucro de 0, no terceiro comércio o tamanho do lote subitamente aumentou?

É calculado assim Lots=MathMin(20,NormalizeDouble(MathMax(Lots,AccountEquity( ) /3000),1)));

TESTE


Símbolo EURCHF (Euro vs Franco Suíço)
Período 1 Minuto (M1) 2009.08.30 23:02 - 2009.08.31 09:34 (2009.08.30 - 2009.09.05)
Modelo Todos os carrapatos (método mais preciso baseado em todos os menores períodos de tempo disponíveis)
Parâmetros min=0,1;

Bares na história 1519 Carrapatos modelados 2156 Qualidade de modelagem 24.95%
Erros de descasamento de cartas 0




Depósito inicial 450.00



Lucro líquido -8.00 Lucro total 0.00 Perda total -8.00
Rentabilidade 0.00 Pagamento previsto -2.00

Sorteio Absoluto 32.00 Máximo de drawdown 38.00 (8.33%) Drawdown relativo 8.33% (38.00)

Total de negócios 4 Posições curtas (% ganho) 1 (0.00%) Posições longas (% ganho) 3 (100.00%)

Ofícios rentáveis (% de todos) 3 (75.00%) Perdas comerciais (% do total) 1 (25.00%)
A maior comércio lucrativo 0.00 transação perdida -8.00
Média negócio lucrativo 0.00 Perda do negócio -8.00
Número máximo ganhos contínuos (lucro) 3 (0.00) Perdas contínuas (perda) 1 (-8.00)
Máximo Lucro contínuo (número de vitórias) 0.00 (0) Perda contínua (número de perdas) -8.00 (1)
Média prêmios contínuos 3 Perda contínua 1

Hora Tipo Ordem Volume Preço S / L T / P Lucro Balanço
1 2009.08.31 00:16 compre 1 0.30 1.5161 1.5127 1.5163
2 2009.08.31 00:37 fechar 1 0.30 1.5161 1.5127 1.5163 0.00 450.00
3 2009.08.31 00:44 compre 2 0.30 1.5158 1.5124 1.5161
4 2009.08.31 02:58 fechar 2 0.30 1.5158 1.5124 1.5161 0.00 450.00
5 2009.08.31 03:14 compre 3 0.40 1.5152 1.5118 1.5154
6 2009.08.31 03:30 fechar 3 0.40 1.5152 1.5118 1.5154 0.00 450.00
7 2009.08.31 06:45 vender 4 0.40 1.5151 1.5185 1.5149
8 2009.08.31 08:18 fechar 4 0.40 1.5153 1.5185 1.5149 -8.00 442.00








































































 
001 >> :

Pessoal, ajudem, não sei como fazer isso.

Tenho um loop que calcula os níveis entre LOW e HI com Step.

para ( duplo c = BAIXO; c < HI; c = c + Passo)

Agora preciso salvar cada nível em algum lugar para que seja fácil tirá-lo mais tarde e compará-lo com o preço atual. Muito obrigado na forma de código, não por preguiça, mas porque até ver o exemplo, ainda não entendo como fazê-lo. Obrigado!

Como opção:

double c, levels[];
int nCount = 1+( HI - LOW)/ Step;
ArrayResize( levels, nCount);

for ( c = LOW, nCount = 0; c < HI; c += Step, nCount++) {
    levels[ nCount] = c;
}

// Use:
for (int j = 0; j < nCount; j++) {
    if ( levels[ j] > ...) {
        //...
    }
}