[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 521
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
Como eu verificaria isso?
Obrigado.
É possível fazer o ajuste da MaxEquity funcionar, por exemplo, 500 vezes sem reiniciar a EA?
Por exemplo, se eu escrever 500 no balcão, que seja da seguinte forma: Suponha que o capital inicial seja de 10 000,
Após adicionar ao patrimônio inicial de 10.000 (especificando nos ajustes), os grandes inconvenientes se fecharão.
Será feito 500 vezes (por exemplo) (ainda é impossível multiplicar o patrimônio inicial 500 vezes).
Essa é a diferença que se verificará com sua versão - que após incrementos de 10 000 para o patrimônio inicial = 10 000 -
A EA não precisa ser reiniciada, e o ciclo continuará - para 20 000 mais 10 000 serão acrescentados, para 30 000 + 10 000 e assim por diante 500 vezes (por exemplo). Bem
e após cada incremento = 10 000, a ordem perdida com o maior menos (ou várias ordens - a serem especificadas nos ajustes) será fechada ?
Obrigado.
É possível fazer a configuração da MaxEquity funcionar, por exemplo, 500 vezes sem reiniciar a EA?
Por exemplo, se eu escrever 500 no balcão, deixe-o trabalhar assim: Suponha que o capital inicial seja de 10 000,
Após adicionar ao patrimônio inicial de 10.000 (especificando nos ajustes), os grandes inconvenientes se fecharão.
Da mesma forma, digamos 500 vezes (por exemplo) (afinal, é impossível multiplicar o patrimônio inicial 500 vezes).
Em outras palavras, a diferença aparecerá em sua versão: após adicionar 10 000 ao patrimônio inicial = 10 000.
O Expert Advisor não precisa ser reiniciado, e o ciclo continuará - a 20 000 será adicionado 10 000, a 30 000 + 10 000 e assim por diante (por exemplo) 500 vezes. Por exemplo:
E, após cada incremento igual a 10 000, a ordem perdida com a maior perda será fechada (ou várias ordens perdidas de acordo com as configurações) ?
Não há necessidade de fazer qualquer reinício. É necessário atualizar os dados iniciais do patrimônio líquido após o fechamento das posições e esperar que o patrimônio líquido aumente a partir do novo patrimônio líquido inicial.
Mas, pelo que entendi, tudo isso é feito em código de programação. Eu não tenho o poder de programar).
Naturalmente. Há apenas uma função que irá monitorar continuamente a equidade e enviar um comando para fechar posições não lucrativas se o valor especificado for excedido. Então, depois que todas as posições forem fechadas com sucesso, o novo status patrimonial deve ser registrado e continuar a monitorá-lo.
Você pode me dizer qual pode ser o problema?
Presumo que minha pergunta não contenha informações suficientes para me ajudar). Vou completar minha pergunta. Abaixo eu forneço uma estrutura com as principais funções de meu Consultor Especialista. Talvez isto revele o problema que descrevi.
No momento, tenho que recompilar a EA toda vez após habilitar/desabilitar a função de gerenciamento de dinheiro nos parâmetros da EA, para que o relatório seja gerado corretamente.
P.S. Talvez tenha algo a ver com o terminal variável global fxprop_lot?
Presumo que não haja informações suficientes em minha pergunta para me ajudar). Vou completar minha pergunta. Abaixo estou fornecendo estrutura com funções básicas de minha EA. Talvez desta forma seja possível identificar o problema, o que eu tenho destacado.
No momento, eu tenho que recompilar a EA toda vez após habilitar/desabilitar a função de gerenciamento de dinheiro nos parâmetros da EA para que o relatório seja gerado corretamente.
P.S. Talvez tenha a ver com o terminal variável globalfxprop_lot?
Se você acha que isso é o suficiente, acho que é. Teremos apenas que esperar por uma resposta. Eu não tenho um.
Se você acha que isso é suficiente, eu acho que sim. Estou esperando por uma resposta. Eu não tenho um.
E no próximo posto a função de geração de relatórios...Minha experiência até agora infelizmente não me permite julgar se as informações fornecidas são ou não suficientes para tratar de uma questão específica. Eu não o faço de propósito e peço desculpas se o fizer). A questão é que, em minha opinião, o ponto-chave do problema que salientei é que tudo funciona corretamente quando recompilamos o Expert Advisor. Mas isto novamente devido à minha experiência imatura. Por favor, informe quais informações precisam ser fornecidas para resolver esta questão. A função de administração do dinheiro ou de geração de relatórios obviamente aparece no problema. É por isso que eu lhe darei a função de gerenciamento de dinheiro:
void Short_Trade_Report(int Mgc_Src_LP_TS№1,int Mgc_LP01_TS№1,int Mgc_LP02_TS№1,int Mgc_LP03_TS№1,int Mgc_LP04_TS№1,int Mgc_LP05_TS№1,int Mgc_LP06_TS№1, int Mgc_Src_SP_TS№1,int Mgc_SP01_TS№1,int Mgc_SP02_TS№1,int Mgc_SP03_TS№1,int Mgc_SP04_TS№1,int Mgc_SP05_TS№1,int Mgc_SP06_TS№1, int Mgc_Src_LP_TS№2,int Mgc_LP01_TS№2,int Mgc_LP02_TS№2,int Mgc_LP03_TS№2,int Mgc_LP04_TS№2,int Mgc_LP05_TS№2,int Mgc_LP06_TS№2, int Mgc_Src_SP_TS№2,int Mgc_SP01_TS№2,int Mgc_SP02_TS№2,int Mgc_SP03_TS№2,int Mgc_SP04_TS№2,int Mgc_SP05_TS№2,int Mgc_SP06_TS№2, int Mgc_Src_LP_TS№3,int Mgc_LP01_TS№3,int Mgc_LP02_TS№3,int Mgc_LP03_TS№3,int Mgc_LP04_TS№3,int Mgc_LP05_TS№3,int Mgc_LP06_TS№3, int Mgc_Src_SP_TS№3,int Mgc_SP01_TS№3,int Mgc_SP02_TS№3,int Mgc_SP03_TS№3,int Mgc_SP04_TS№3,int Mgc_SP05_TS№3,int Mgc_SP06_TS№3) { #define RA 10000 // Range Array - Размер массива для отчёта double Acc_Bal_Close[RA]; // Массив для баланса на закрытии сделки(-ок) double Acc_Bal_Open[RA]; // Массив для баланса на открытии сделки(-ок) double Price_Open_Pos[RA]; double Price_Stop_Loss[RA]; double TS№1_DS[RA], TS№2_TA[RA], TS№3_SBH[RA]; int pos, handle, dgt, Magic, sign, index; double Swap_P; double Profit_P; double Commission; double Open_Price; double Stop_Loss; string Type_Pos; string comment; string Str_Stop_Loss; //--- ПРОВЕРКА НА КОЛ-ВО ЗНАКОВ В СИМВОЛЕ ДЛЯ РАСЧЁТА ОТСТУПА В СТРОКАХ КОММЕНТАРИЕВ --------------------------------// int digit_string; int digit = MarketInfo(Symbol(),MODE_DIGITS); switch(digit) { case 2 : digit_string = 4; dgt = 100; break; case 3 : digit_string = 5; dgt = 100; break; case 4 : digit_string = 6; dgt = 10000; break; case 5 : digit_string = 7; dgt = 10000; break; default: Print("Неизвестный символ! Количество знаков = ",digit); return(0); } handle = FileOpen("ShortReport.csv",FILE_CSV|FILE_WRITE); if(handle > 0) //1 { FileWrite(handle,"Time Close"+","+"Symbol"+","+"Type"+","+"Lots"+","+"Balance($)"+","+"Stop Loss(p)"+","+"Profit(p)"+","+"TS#1_DS(p)"+","+"TS#2_TA(p)"+","+"TS#3_SBH(p)"); for(pos = 0; pos < OrdersHistoryTotal(); pos++) // 2 { OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY); Commission = OrderCommission(); Swap_P = (OrderSwap()/10)/OrderLots(); Profit_P = (OrderProfit()/10)/OrderLots()+(OrderSwap()/10)/OrderLots(); Open_Price = NormalizeDouble(OrderOpenPrice(),Digits); index = StringFind(OrderComment(),"[sl]",0); if(index != -1) { comment = StringSubstr(OrderComment(),0,StringLen(OrderComment())-4); } else { comment = StringSubstr(OrderComment(),0,StringLen(OrderComment())); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№1 || OrderMagicNumber() == Mgc_Src_SP_TS№1 || OrderMagicNumber() == Mgc_LP01_TS№1 || OrderMagicNumber() == Mgc_LP02_TS№1 || OrderMagicNumber() == Mgc_LP03_TS№1 || OrderMagicNumber() == Mgc_LP04_TS№1 || OrderMagicNumber() == Mgc_LP05_TS№1 || OrderMagicNumber() == Mgc_LP06_TS№1 || OrderMagicNumber() == Mgc_SP01_TS№1 || OrderMagicNumber() == Mgc_SP02_TS№1 || OrderMagicNumber() == Mgc_SP03_TS№1 || OrderMagicNumber() == Mgc_SP04_TS№1 || OrderMagicNumber() == Mgc_SP05_TS№1 || OrderMagicNumber() == Mgc_SP06_TS№1)) { TS№1_DS[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№2 || OrderMagicNumber() == Mgc_Src_SP_TS№2 || OrderMagicNumber() == Mgc_LP01_TS№2 || OrderMagicNumber() == Mgc_LP02_TS№2 || OrderMagicNumber() == Mgc_LP03_TS№2 || OrderMagicNumber() == Mgc_LP04_TS№2 || OrderMagicNumber() == Mgc_LP05_TS№2 || OrderMagicNumber() == Mgc_LP06_TS№2 || OrderMagicNumber() == Mgc_SP01_TS№2 || OrderMagicNumber() == Mgc_SP02_TS№2 || OrderMagicNumber() == Mgc_SP03_TS№2 || OrderMagicNumber() == Mgc_SP04_TS№2 || OrderMagicNumber() == Mgc_SP05_TS№2 || OrderMagicNumber() == Mgc_SP06_TS№2)) { TS№2_TA[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() < 2 && OrderCloseTime() == TimeCurrent() && (OrderMagicNumber() == Mgc_Src_LP_TS№3 || OrderMagicNumber() == Mgc_Src_SP_TS№3 || OrderMagicNumber() == Mgc_LP01_TS№3 || OrderMagicNumber() == Mgc_LP02_TS№3 || OrderMagicNumber() == Mgc_LP03_TS№3 || OrderMagicNumber() == Mgc_LP04_TS№3 || OrderMagicNumber() == Mgc_LP05_TS№3 || OrderMagicNumber() == Mgc_LP06_TS№3 || OrderMagicNumber() == Mgc_SP01_TS№3 || OrderMagicNumber() == Mgc_SP02_TS№3 || OrderMagicNumber() == Mgc_SP03_TS№3 || OrderMagicNumber() == Mgc_SP04_TS№3 || OrderMagicNumber() == Mgc_SP05_TS№3 || OrderMagicNumber() == Mgc_SP06_TS№3)) { TS№3_SBH[pos] = Profit_P + Swap_P + Commission; Acc_Bal_Close[pos] = AccountBalance(); Str_Stop_Loss = StringSubstr(comment,StringLen(comment)-digit_string,digit_string); Price_Stop_Loss[pos] = MathAbs((StrToDouble(Str_Stop_Loss)-Open_Price)*dgt); } if(OrderType() == OP_BUY) { Type_Pos = "buy"; } if(OrderType() == OP_SELL) { Type_Pos = "sell"; } if(OrderType() < 2) { FileWrite(handle,TimeToStr(OrderCloseTime(),TIME_DATE|TIME_MINUTES)+","+Symbol()+","+Type_Pos+"," +DoubleToStr(OrderLots(),2)+","+DoubleToStr(Acc_Bal_Close[pos],2)+","+DoubleToStr(Price_Stop_Loss[pos],2)+"," +DoubleToStr(Profit_P+Swap_P+Commission,2)+","+DoubleToStr(TS№1_DS[pos],2)+","+DoubleToStr(TS№2_TA[pos],2)+","+DoubleToStr(TS№3_SBH[pos],2)); } } FileClose(handle); // 2\ } //1 }
Por favor, ajude a resolver a questão.Tentei chamar a função de gestão de capital durante a inicialização:
Mas isso não resolve o problema...