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

 
eddy:
Não estou interessado. Só quero traçar uma linha...
Os pontos na foto são max min ?
 
Não, clozes
 
costy_:

Это для не стандартного подхода, того чего нет в отчете оптимизатора. файл здесь terminal\tester\files

Сохраняйте отчет из "Результаты оптим." сохран как>>


Agora eu entendo como salvar algo. Por favor, me diga como salvar automaticamente os resultados da otimização. Basicamente, eu só me preocupo com o máximo de drawdown e lucro.
 
001:

Agora eu entendo como salvar algo de que preciso. Por favor, informe como salvar automaticamente os resultados da otimização. Em princípio, eu só me preocupo com o máximo de drawdown e lucro.

Em Deinit, conte através da OrderHistoryTotal a soma de todos os lucros, não-lucrativos, drawdown, lucro e para o arquivo ;)

Algo como isto

   for(i=0;i<OrdersHistoryTotal();i++)
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol())
    if(OrderProfit()>=0)
     profit+=OrderProfit();
     else noprof+=OrderProfit();
   прибыль = profit  -  noprof;



 
eddy:
não, cloze.

Da mesma forma, no período inferior você pode visualizar o vetor do mais antigo no gráfico H1 nas configurações do ind H4.

E para que serve?!

Arquivos anexados:
maxvekt.mq4  2 kb
 
costy_:

Em Deinit, use OrderHistoryTotal para contara soma de todos os lucros, não-lucrativos, drawdown, lucro e arquivá-lo ; )

Algo como isto




Sim, há isso. Infelizmente, este método fornece dados diferentes da MT. Basta salvar atomicamente os resultados da otimização em um arquivo e pronto...
 
Eu não entendo o cálculo. você pode me explicar usando meu desenho como exemplo?
 
costy_:

Você percorre as ordens abertas e pendentes em ordem de número de posição na lista, seleciona a que lhe interessa e vai buscar seu bilhete

e continuar trabalhando com o bilhete.



Se você não sabe o que fazer com ele, simplesmente não sabe o que fazer com ele.

Por favor, me diga por que precisamos fazer isso se já selecionamos a mesma ordem?

Ou talvez eu não entenda algo: ESTE código :

símbolo de seqüência = Symbol();int cnt;
for(cnt = OrderTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

e este aqui:

símbolo de string = Symbol();int cnt;
for(cnt = OrderTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

fará a mesma coisa?

 
Aleksandr_8:

Obrigado por sua resposta.

Por que precisamos fazer isso se já selecionamos a mesma ordem?

Ou talvez eu não entenda algo: ESTE código :

símbolo de seqüência = Symbol();int cnt;
for(cnt = OrderTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES); lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

e este aqui:

símbolo de string = Symbol();int cnt;
for(cnt = OrderTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

fará a mesma coisa?

O código marcado em vermelho é redundante, pois o pedido já foi selecionado e você não precisa selecioná-lo novamente para processá-lo.

 
Aleksandr_8:

Obrigado por sua resposta.

Por que precisamos fazer isso se já selecionamos a mesma ordem?

Ou talvez eu não entenda algo: ESTE código :

símbolo de seqüência = Symbol();int cnt;
for(cnt = OrderTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

e este aqui:

símbolo de string = Symbol();int cnt;
for(cnt = OrderTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

fará a mesma coisa?

Na primeira variante, a segunda OrderSelect na compra de bilhetes, usa um segundo cheque, suponho (se ele escorregar em um pendente ou +1 ordertotal...).

No post anterior foram encontrados corretamente erros (exceto verde).

A compra de bilhetes não está marcada na segunda. Precisamos identificar

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
ticketbuy=OrderTicket();
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }