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
É simples :
Coloque algo como isto no início do procedimento de início() de sua EA e isso impedirá que ela funcione se a perda (ou lucro) já realizada naquele dia exceder alguma quantia :
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]Prezado Senhor MLADEN....
MUITO OBRIGADO pelos códigos acima.... IOU 2 créditos.....
[PHP]
dobro TotalProfit=0;
para (int i =OrdensHistóriaTotal()-1; i>=0; i--)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continuar;
se (OrderSymbol() == Symbol()) continuar;
se (OrderMagicNumber() == algumMagicNumber) continuar;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
se (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderComission()+OrderSwap();
}
se (totalProfit < someProfitLossLimit) retornar(0);
Apenas para verificar..... este código impedirá mais pedidos de um par de moedas específico e MagicNumber.... se a PERDA ACCUMULATADO de hoje exceder algumaProfitLossLimit....
Obrigado pela resposta muito rápida....
melhores regrads
AZRUL...
Prezado Senhor MLADEN....
MUITO OBRIGADO para os códigos acima.... IOU 2 créditos.....
double totalProfit=0;
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalProfit += OrderProfit()+OrderCommission()+OrderSwap();
}
if (totalProfit < someProfitLossLimit) return(0);
[/PHP]
Just to check..... will this code prevent any more orders from a specific currency pair and MagicNumber.... if today's ACCUMULATED LOSS exceed someProfitLossLimit....
Thanks for the very-very fast reply....
best regrads
AZRUL...Sim
Impedirá o processamento de códigos adicionais se o lucro acumulado dos pedidos fechados for inferior a algum valor. Você pode substituir a última linha por esta :
[PHP]if (totalProfit < 0 && totalProfit < someProfitLossLimit) return(0);Para garantir que isso seja feito somente nos casos em que o "lucro" acumulado seja negativo (quando houve perdas)
Sim
Impedirá o processamento de códigos adicionais se o lucro acumulado dos pedidos fechados for inferior a algum valor. Você pode substituir a última linha por esta :
Caro Senhor MLADEN...
Desculpe, senhor... Acho que não deixei claro o suficiente para o senhor.....
Minha intenção é que um código para manter o controle da perda acumulada somente para um par de moedas específico e MagicNumber.... Não incluindo o lucro que ele está obtendo... SOMENTE A PERDA conta...
DESCULPE PELA CONFUSÃO...
Com os melhores cumprimentos...
AZRUL...
Caro Senhor MLADEN...
Desculpe, senhor... Acho que não deixei claro o suficiente para o senhor.....
Minha intenção é que um código para manter o controle da perda acumulada somente para um par de moedas específico e MagicNumber.... Não incluindo o lucro que ele está obtendo... SOMENTE A PERDA conta...
DESCULPE PELA CONFUSÃO...
Com os melhores cumprimentos...
AZRUL...AZRUL
O lucro pode ser negativo (==perda) Na lista fechada de otrders há um arquivo chamado Order() profit que mantém o "lucro": positivo para ordens de ganho e negativo para ordens de perda. Essa paz de código faz exatamente o que você precisa
Prezado Senhor MLADEN,
A Teoria é esta.... se hoje for um mercado SIDEWAY, acabarei perdendo parte do lucro (se houver) que foi feito e X$ RISK no meu capital.... Isso não é uma proteção contra um MUITO BAD DAY de negociação.....
A razão disso é que estou disposto a RISK a X$ por dia a partir de hoje....
Os códigos acima comerão todos os lucros (se houver) do dia mais também comerão meu RISK (capital)...
AGRADECIMENTOS
Com os melhores cumprimentos...
AZRUL...
AZRULLucro pode ser negativo (==perda) Na lista de otrders fechada há um arquivo chamado Order() profit que mantém o "lucro": positivo para ordens de ganho e negativo para ordens de perda. Essa paz de código faz exatamente o que você precisa
Caro Senhor MLADEN...
Obrigado por me esclarecer sobre a sugestão acima...
Tentarei procurar por qualquer resultado....
Com os melhores cumprimentos
AZRUL...
Prezado Senhor MLADEN,
Será que os seguintes códigos farão o truque...
Mantendo o controle da perda acumulada apenas para um par de moedas específico e MagicNumber.... Não incluindo o lucro que está obtendo... SOMENTE A PERDA conta...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Seu conhecimento é muito apreciado...
seu verdadeiro
AZRUL....
Prezado Senhor MLADEN,
Será que os seguintes códigos farão o truque...
Mantendo o controle da perda acumulada somente para um par de moedas específico e MagicNumber.... Não incluindo o lucro que está obtendo... SOMENTE A PERDA conta...
extern double LossAmount = -500.00
...............
int start()
if(LossRisk()<=LossAmount)
return(0);
...............
void LossRisk()
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL)
totalLoss -= OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
[/PHP]
Your Knowledge is highly appreciated...
yours truly
AZRUL....Não, não vai
Se você quer somar apenas perdas, você tem que adicionar
&& (OrderProfit()+OrderComission()+OrderSwap()<0)
Portanto, a função terá este aspecto:
[PHP]void LossRisk()
dobroLoss total=0;
{
para (int i =OrdensHistóriaTotal()-1; i>=0; i--)
{
se (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continuar;
se (OrderSymbol() == Symbol()) continuar;
se (OrderMagicNumber() == algumMagicNumber) continuar;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
se (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderComission()+OrderSwap())<0)
TotalLoss += OrderProfit()+OrderComission()+OrderSwap();
}
retorno (totalLoss);
}
Prezado Senhor MLADEN....
Atualmente estou usando estes códigos em minha EA que está rodando em um cronograma M15...
Ele abrirá uma nova ordem após o prazo M15...
bool AddP()
{int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++)
{if(OrderSelect(j,SELECT_BY_POS)==true && OrderSymbol()==Symbol() && OrderType()<3 && ((OrderMagicNumber()==Magic) || Magic==0))
{
_num++;if(OrderOpenTime()>_ot) _ot=OrderOpenTime();
}
}
if(_num==0) return(true);
if(_num>0 && ((Time[0]-_ot))>0)
return(true);
else return(false);
}
Você poderia alterar este código para fazer um pedido a cada 5 minutos após o pedido anterior....
embora eu esteja em um M15 timeframe....
ESPERO QUE VOCÊ NÃO FIQUE OFENDIDO AO ENVIAR TANTAS PERGUNTAS....
Com os melhores cumprimentos
AZRUL...
Não, não vai
Se você quer somar apenas perdas, você tem que adicionar
&& (OrderProfit()+OrderComission()+OrderSwap()<0)
Portanto, a função terá este aspecto:
double totalLoss=0;
{
for (int i =OrdersHistoryTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() == Symbol()) continue;
if (OrderMagicNumber() == someMagicNumber) continue;
if (iBarShift(Symbol(),PERIOD_D1,OrderCloseTime())==0)
if (OrderType()==OP_BUY || OrderType()==OP_SELL && (OrderProfit()+OrderCommission()+OrderSwap())<0)
totalLoss += OrderProfit()+OrderCommission()+OrderSwap();
}
return(totalLoss);
}
Prezado Senhor MLADEN,
Você conhece suas maneiras de fazer as coisas por aqui....
Eu sou MUITO MUITO GLAD para obter alguma resposta de você SIR....
PM me se houver algo que eu possa fazer em troca... exceto codificações....
SIR Obrigado
Com os melhores cumprimentos
AZRUL...