Imho, eu não criaria uma série de tickets para fechar, mas no circuito de enumeração de ordens de mercado, verificaria cada ordem, alimentando seu ticket com a entrada da função de fechamento com uma verificação das condições possíveis.
Talvez esta pergunta não seja para os novatos, mas eu não consegui encontrar outro fio onde pudesse fazer uma pergunta:
Como posso descarregar um relatório detalhado do MetaTrader 4 para ter equidade no gráfico em vez de equilíbrio? Não sei, se eu fizesse o upload a partir do MT4 ou de alguma outra forma conveniente, seria realista? Não sei se tenho o equilíbrio certo ou não, só quero saber os resultados do sorteio.
Não tenho a menor idéia de como utilizar estes corretores.
//-----------------Закрытие по истории в безубыток--------------------//---------------------расчет по истории ордеров номера очередной итерации-----------------------------------------------
Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
Sum_Loss = 0; // суммарный убыток по этим итерациямdatetime
Time_at_History_Current = 0,
Time_at_History_Previos = 0;
if(OrdersHistoryTotal() != 0)
{
for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
{
OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера// для последующего его анализа при подсчете количества итераций
{
double lastLoss = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
//Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));//Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
{
Time_at_History_Previos = Time_at_History_Current ;
Iteration++;
//Print("Iteration at History в условии сравнения = ", Iteration);
}
else// они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
{
if(OrderProfit() >= 0)
break;
}
}
}
}
}
if (Sum_Loss < 0.0) { // Имеем убыток по закрытым позамdouble money = Lots;
BuyLots = GetBuyLotsSum();
SellLots = GetSellLotsSum();
if(BuyLots > SellLots)money = BuyLots * 10;
if(BuyLots < SellLots)money = SellLots * 10;
if (((AccountEquity() + Sum_Loss + (Sum_Loss / money)) >= AccountBalance()) && (((totalSell > 0) && (totalBuy < 1)) || ((totalSell < 1) && (totalBuy > 0)))) { // Достигли безубытка// Здесь какой-то код, который необходимо выполнить при достижении безубытка
CloseAllBuy();
CloseAllSell();
Sum_Loss = 0.0;
Não tenho como abrir um loop quando um negócio foi fechado em menos e se o próximo pedido for fechado acima de zero, ou seja, saldo positivo, mas menos que negativo, adicionamos mais ao negativo e obtemos um novo valor negativo, que já é menor.
if(OrderProfit() >= 0 && Sum_Loss < 0.0)
double lastLoss_two = OrderProfit();
Sum_Loss=Sum_Loss+lastLoss_two; // считаем общий убыток по закрытым подряд убыточным ордерам
Time_at_History_Current = OrderCloseTime();
}
Se for mais negativo, de acordo com o sinal, fechamos a ordem e iniciamos o ciclo desde o início.
A situação é que quando este código fecha o negócio em prejuízo, então ele se lembra do saldo negativo, e quando fecha o negócio no mais, e o mais é menor que o saldo, então ele redefine Sum_Loss e eu preciso que ele não seja zerado, e cortado para baixo.
Portanto, é assim que funciona agora:
ele verifica uma ordem fechada, se o lucro da ordem fechada for menor que zero, então este lucro é adicionado à Soma_Perda, e assim por diante até que o lucro do comércio aberto exceda (será mais que) Soma_Perda, quando alcançado, o comércio é fechado, e a Soma_Perda é zerada e o ciclo começa novamente.
Eu preciso:
ordem fechada em menos, seu lucro negativo foi adicionado ao Sum_Loss, então se o próximo negócio fechado com lucro positivo, o Sum_Loss é reduzido pelo montante recebido do lucro, o que significa que o próximo pedido aberto Sum_Loss já é um montante menor, e assim por diante até que o lucro do pedido seja maior que o Sum_Loss, e então o Sum_Loss é limpo e um novo ciclo começa.
Soma_Perda = 0;
1ª ordem fechada: Lucro (-50) < 0
Soma_Perda + lucro (Soma_Perda + (-50))
Soma_Perda = -50;
2ª ordem fechada: Lucro (+40) > 0 e Soma_Perda < 0
Soma_Perda + lucro (Soma_Perda + 40)
Soma_Perda = -10
Talvez a variável Sum_Loss deva ser especificada como uma variável negativa? em geral estou confuso. Já tentei muitas variantes, mas não obtive o resultado certo. Pelo menos me guie na direção certa, me diga o que fazer, pois não entendo.
Coloquei um modificador de ordens pendentes, na EA, e isso me dá um erro - 1 ao testar no Diário.
Isto é - "Se eu passar valores inalterados como parâmetros de função, será gerado o erro 1 (ERR_NO_RSULT)".
Coloco um cheque antes da modificação, mas isso não ajuda. Qual é o erro? A EA está sendo testada, mas como posso peneirar os pedidos com valores inalterados?
Coloquei um modificador de ordens pendentes, na EA, e isso me dá um erro - 1 ao testar no Diário.
Isto é - "Se eu passar valores inalterados como parâmetros de função, será gerado o erro 1 (ERR_NO_RSULT)".
Coloco um cheque antes da modificação, mas isso não ajuda. Qual é o erro? A EA está sendo testada, mas como posso peneirar os pedidos com valores inalterados?
Imprima os valores pr, pare e leve para ver o que eles enviam para OrderModify
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Imho, eu não criaria uma série de tickets para fechar, mas no circuito de enumeração de ordens de mercado, verificaria cada ordem, alimentando seu ticket com a entrada da função de fechamento com uma verificação das condições possíveis.
Você pode mostrar isso no código?
Quero dizer, como isto pode ser implementado?
Boa tarde a todos!
Talvez esta pergunta não seja para os novatos, mas eu não consegui encontrar outro fio onde pudesse fazer uma pergunta:
Como posso descarregar um relatório detalhado do MetaTrader 4 para ter equidade no gráfico em vez de equilíbrio? Não sei, se eu fizesse o upload a partir do MT4 ou de alguma outra forma conveniente, seria realista? Não sei se tenho o equilíbrio certo ou não, só quero saber os resultados do sorteio.
Não tenho a menor idéia de como utilizar estes corretores.
Você pode mostrá-lo em código?
Quero dizer, como pode ser implementado?
Algo assim?
ajude, por favor.
Aqui está o código
Não tenho como abrir um loop quando um negócio foi fechado em menos e se o próximo pedido for fechado acima de zero, ou seja, saldo positivo, mas menos que negativo, adicionamos mais ao negativo e obtemos um novo valor negativo, que já é menor.
Se for mais negativo, de acordo com o sinal, fechamos a ordem e iniciamos o ciclo desde o início.
A situação é que quando este código fecha o negócio em prejuízo, então ele se lembra do saldo negativo, e quando fecha o negócio no mais, e o mais é menor que o saldo, então ele redefine Sum_Loss e eu preciso que ele não seja zerado, e cortado para baixo.
Portanto, é assim que funciona agora:
ele verifica uma ordem fechada, se o lucro da ordem fechada for menor que zero, então este lucro é adicionado à Soma_Perda, e assim por diante até que o lucro do comércio aberto exceda (será mais que) Soma_Perda, quando alcançado, o comércio é fechado, e a Soma_Perda é zerada e o ciclo começa novamente.
Eu preciso:
ordem fechada em menos, seu lucro negativo foi adicionado ao Sum_Loss, então se o próximo negócio fechado com lucro positivo, o Sum_Loss é reduzido pelo montante recebido do lucro, o que significa que o próximo pedido aberto Sum_Loss já é um montante menor, e assim por diante até que o lucro do pedido seja maior que o Sum_Loss, e então o Sum_Loss é limpo e um novo ciclo começa.
Soma_Perda = 0;
1ª ordem fechada: Lucro (-50) < 0
Soma_Perda + lucro (Soma_Perda + (-50))
Soma_Perda = -50;
2ª ordem fechada: Lucro (+40) > 0 e Soma_Perda < 0
Soma_Perda + lucro (Soma_Perda + 40)
Soma_Perda = -10
Talvez a variável Sum_Loss deva ser especificada como uma variável negativa? em geral estou confuso. Já tentei muitas variantes, mas não obtive o resultado certo. Pelo menos me guie na direção certa, me diga o que fazer, pois não entendo.Como posso testar uma EA sem levar em conta o spread? Isso é possível?
Quem tem um peru assim?
Por favor, ajude.
Coloquei um modificador de ordens pendentes, na EA, e isso me dá um erro - 1 ao testar no Diário.
Isto é - "Se eu passar valores inalterados como parâmetros de função, será gerado o erro 1 (ERR_NO_RSULT)".
Coloco um cheque antes da modificação, mas isso não ajuda. Qual é o erro? A EA está sendo testada, mas como posso peneirar os pedidos com valores inalterados?
Quem tem um peru como este?
Confira isto:
http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=45
Por favor, ajude.
Coloquei um modificador de ordens pendentes, na EA, e isso me dá um erro - 1 ao testar no Diário.
Isto é - "Se eu passar valores inalterados como parâmetros de função, será gerado o erro 1 (ERR_NO_RSULT)".
Coloco um cheque antes da modificação, mas isso não ajuda. Qual é o erro? A EA está sendo testada, mas como posso peneirar os pedidos com valores inalterados?