Ajuda na codificação - página 290

 
mladen:
É 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 :

double totalProfit=0;

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...

 
12BPRO:
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)

 
mladen:
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 :

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)

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...

 
12BPRO:
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...

 
mladen:
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....

 
12BPRO:
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...

 
mladen:
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:

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 && (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...

Razão: