[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 616
sllawa3: Acho que você está certo... Eu também tenho minhas dúvidas...
Você pode usar este método para monitorar o patrimônio líquido a fim de fechar todas as posições e excluir ordens assim que a porcentagem especificada de lucro do patrimônio líquido for atingida:
//--------------------------------------------------------------// Описание глобальных переменных советника// ----------------- Трал эквити -------------externdouble PercentEquityForClose=15;
double Equ_OLD,
Equ_NEW,
EquPerc,
Equ_Start;
// ---- Дальнейшее описание глобальных переменных советника//==========================================================int init() // Функция init
{
Equ_OLD=AccountEquity();
Equ_Start=Equ_OLD;
EquPerc=Equ_Start/100*PercentEquityForClose;
// ---- Дальнейший код функции ----return; // Выход из init()
}
//==========================================================// ---- В функции слежения за событиями ----// ---- вызываемой из функции start ----
Equ_NEW=AccountEquity(); // С новым тиком запоминаем текущее значение эквитиif (Equ_OLD!=Equ_NEW) // Если новое значение не равно старому, то
{
if (Equ_NEW>=Equ_OLD+EquPerc) // Если эквити увеличилось по отношению к своему прошлому значению на EquPerc процентов,
{
ClosePosFirstProfit(NULL, -1, -1); // то закрываем все позиции
DeleteOrders(NULL, -1, -1); // и удаляем все ордера
Equ_NEW=AccountEquity(); // Запоминаем текущее значение эквити
Equ_OLD=Equ_NEW; // и заносим его в "прошлое" значение для проверки на изменение на след. тике
}
}
Eu o escrevi no local, portanto, pode haver erros. Para acompanhar as mudanças no patrimônio em cada barra, basta verificar a abertura de uma nova barra e, se for o caso, executar este fragmento de código:
Equ_NEW=AccountEquity(); // С новым тиком запоминаем текущее значение эквитиif (Equ_OLD!=Equ_NEW) // Если новое значение не равно старому, то
{
if (Equ_NEW>=Equ_OLD+EquPerc) // Если эквити увеличилось по отношению к своему прошлому значению на EquPerc процентов,
{
ClosePosFirstProfit(NULL, -1, -1); // то закрываем все позиции
DeleteOrders(NULL, -1, -1); // и удаляем все ордера
Equ_NEW=AccountEquity(); // Запоминаем текущее значение эквити
Equ_OLD=Equ_NEW; // и заносим его в "прошлое" значение для проверки на изменение на след. тике
}
}
Roger: Naturalmente, você está certo. A implicação foi que você já tem um código para fazer leituras apenas uma vez por barra.
Não, não tenho, mas escrevi algo acima para verificar a equidade em cada carrapato. Basta fazer uma verificação na abertura de um novo bar e, em caso afirmativo, verificar o patrimônio... Eu não acho difícil fazer...
sllawa3: Estou interessado na reversão do patrimônio de crescente para decrescente, desde que o patrimônio seja maior que o equilíbrio... para fechar tudo o que está aberto...
Esta é a função para definir uma nova barra:
//+------------------------------------------------------------------+//| возвращает признак появления нового бара для указанного периода |//+------------------------------------------------------------------+bool isNewBar(int timeFrame)
{
bool res=false;
// массив содержит время открытия текущего (нулевого) бара// по 7 (семь) таймфреймамstaticdatetime _sTime[7];
int i=6;
switch (timeFrame)
{
case1 : i=0; break;
case5 : i=2; break;
case15 : i=3; break;
case30 : i=4; break;
case60 : i=5; break;
case240: break;
case1440:break;
default: timeFrame = 1440;
}
//----if (_sTime[i]==0 || _sTime[i]!=iTime(Symbol(),timeFrame,0))
{
_sTime[i] = iTime(Symbol(),timeFrame,0);
res=true;
}
//----return(res);
}
... interessados na reversão do patrimônio de subir para descer, desde que o patrimônio esteja acima do equilíbrio... para fechar qualquer coisa que esteja aberta...
Então precisamos verificar a equidade em cada carrapato. Afinal, se você trabalha com carrapatos, por exemplo, uma hora antes do próximo cheque de equidade, a equidade pode perder seu valor...
Portanto, não devemos comparar o aumento do patrimônio líquido em 1%, mas seu aumento ou diminuição em relação ao status do tick anterior, registrado na variável Equ-OLD com seu valor atual em Equ_NEW
sllawa3: interessados na reversão do patrimônio de cima para baixo, desde que o patrimônio esteja acima do equilíbrio... para fechar tudo o que está aberto...
Em algum lugar como este:
Equ_NEW=AccountEquity(); // С новым тиком запоминаем текущее значение эквитиif (Equ_OLD!=Equ_NEW) // Если новое значение не равно старому, то
{
if (NormalizeDouble(Equ_NEW-Equ_OLD,8)<0) // Если эквити уменьшилось по отношению к своему прошлому значению,
{
ClosePosFirstProfit(NULL, -1, -1); // то закрываем все позиции
DeleteOrders(NULL, -1, -1); // и удаляем все ордера.
Equ_NEW=AccountEquity(); // Запоминаем текущее значение эквити
Equ_OLD=Equ_NEW; // и заносим его в "прошлое" значение для проверки на изменение на след. тике
}
}
// (NormalizeDouble(Equ_NEW-Equ_OLD,8)<0) - возможно здесь нужно сравнивать не с нулём, а с каким-то числом, // а то может в последующем и не дать увеличиться балансу, // постоянно закрывая вновь открываемые позиции (они ведь требуют залога)
No entanto, esta é apenas uma informação a ser pensada, não um código pronto.
Claro. Só que não é chamado de parada, é chamado de ordem pendente. Abra um terminal. Pressione F1 nela. Na janela que aparece aberta Conteúdo - Comércio - Tipos de pedidos.
)))) obrigado, mas depois de fundos confusos/desacostumados à execução por licitação e perguntar em vez de comércio, quando algo está confuso - não tímido de fazer uma pergunta estúpida para tirar dúvidas. )))
Ajuda . o revendedor tem cinco casas decimais . a função iOpen (NULL,0,n) dá apenas quatro casas decimais (as leituras são feitas via impressão) . como resolver o problema .
Ajuda . o revendedor tem cinco casas decimais . função iOpen(NULL,0,n) dá apenas quatro casas decimais (as leituras são feitas via impressão) . como faço para resolver o problema . obrigado antecipadamente.
A impressão() arredonda até 4 dígitos para emitir corretamente para o console o tipo duplo(que retornaiOpen() 5 casas decimais, neste caso), você deve usar a função DoubleToStr()
stringDoubleToStr( valor duplo, dígitos int ) Converte um valor numérico para uma string de texto contendo uma representação de caracteres de um número no formato de precisão especificado.
Parâmetros:
value- Величина с плавающей точкой.
digits- Формат точности, число цифр после десятичной точки (0-8).
sllawa3: Estou interessado na reversão do capital próprio de subir para cair desde que o capital próprio esteja acima do equilíbrio... para fechar tudo o que está aberto...
E aqui está um exemplo de como funciona... Fiz deliberadamente uma abertura de posição em cada novo bar. Então, aqui temos "OC Killer"... :)
Relatório de teste fechado, onde não há limitadores e abertura de posições a cada tick - porcentagem enorme ... E sem drawdown :) É uma pena que ninguém o deixe trabalhar assim ...
Aqui está uma foto do relatório:
Ganhei muito dinheiro com estas "invasões", quase sem drawdowns. Nem sequer consegui chegar a aquisições (você pode vê-las acima):
Acho que você está certo... Eu também tenho minhas dúvidas...
Você pode usar este método para monitorar o patrimônio líquido a fim de fechar todas as posições e excluir ordens assim que a porcentagem especificada de lucro do patrimônio líquido for atingida:
Eu o escrevi no local, portanto, pode haver erros.
Para acompanhar as mudanças no patrimônio em cada barra, basta verificar a abertura de uma nova barra e, se for o caso, executar este fragmento de código:
Acho que é algo parecido com isto...
Naturalmente, você está certo. A implicação foi que você já tem um código para fazer leituras apenas uma vez por barra.
Estou interessado na reversão do patrimônio de crescente para decrescente, desde que o patrimônio seja maior que o equilíbrio... para fechar tudo o que está aberto...
Esta é a função para definir uma nova barra:
... interessados na reversão do patrimônio de subir para descer, desde que o patrimônio esteja acima do equilíbrio... para fechar qualquer coisa que esteja aberta...
Então precisamos verificar a equidade em cada carrapato. Afinal, se você trabalha com carrapatos, por exemplo, uma hora antes do próximo cheque de equidade, a equidade pode perder seu valor...
Portanto, não devemos comparar o aumento do patrimônio líquido em 1%, mas seu aumento ou diminuição em relação ao status do tick anterior, registrado na variável Equ-OLD com seu valor atual em Equ_NEW
interessados na reversão do patrimônio de cima para baixo, desde que o patrimônio esteja acima do equilíbrio... para fechar tudo o que está aberto...
Em algum lugar como este:
No entanto, esta é apenas uma informação a ser pensada, não um código pronto.
Claro. Só que não é chamado de parada, é chamado de ordem pendente. Abra um terminal. Pressione F1 nela. Na janela que aparece aberta Conteúdo - Comércio - Tipos de pedidos.
)))) obrigado, mas depois de fundos confusos/desacostumados à execução por licitação e perguntar em vez de comércio, quando algo está confuso - não tímido de fazer uma pergunta estúpida para tirar dúvidas. )))
Ajuda . o revendedor tem cinco casas decimais . a função iOpen (NULL,0,n) dá apenas quatro casas decimais (as leituras são feitas via impressão) . como resolver o problema .
Ajuda . o revendedor tem cinco casas decimais . função iOpen(NULL,0,n) dá apenas quatro casas decimais (as leituras são feitas via impressão) . como faço para resolver o problema . obrigado antecipadamente.
A impressão() arredonda até 4 dígitos para emitir corretamente para o console o tipo duplo(que retorna iOpen() 5 casas decimais, neste caso), você deve usar a função DoubleToStr()
string DoubleToStr( valor duplo, dígitos int )
Converte um valor numérico para uma string de texto contendo uma representação de caracteres de um número no formato de precisão especificado.
Parâmetros:
value - Величина с плавающей точкой.
digits - Формат точности, число цифр после десятичной точки (0-8).
Estou interessado na reversão do capital próprio de subir para cair desde que o capital próprio esteja acima do equilíbrio... para fechar tudo o que está aberto...
E aqui está um exemplo de como funciona... Fiz deliberadamente uma abertura de posição em cada novo bar. Então, aqui temos "OC Killer"... :)
Relatório de teste fechado, onde não há limitadores e abertura de posições a cada tick - porcentagem enorme ... E sem drawdown :) É uma pena que ninguém o deixe trabalhar assim ...
Aqui está uma foto do relatório:
Ganhei muito dinheiro com estas "invasões", quase sem drawdowns. Nem sequer consegui chegar a aquisições (você pode vê-las acima):