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
Ajuda - como modificar um EA para deixar os negócios existentes em aberto
Preciso de uma solução bastante simples se alguém puder ajudar
Tenho um EA que agora é lucrativo, mas que abre um comércio e fecha um comércio ao mesmo tempo, de modo que apenas 1 comércio é ativo de cada vez.
Quero agora administrá-la em uma conta existente que já tenha algumas negociações já abertas, quero deixar essas negociações em andamento, mas quero que a EA continue abrindo e fechando sua própria negociação, como uma questão secundária, quando qualquer uma das negociações existentes se tornar lucrativa, ela então as fecha.
Esta solicitação lateral de fechar as negociações existentes com lucro pode ser ignorada se isso for simples, eu posso fechá-las manualmente se necessário.
Aqui está o que minha EA usa no momento
if(val1 > val2) {trade_text = " BUY trade open";trend_text = "UP";BV=1;break;}
if(val1 < val2) {trade_text = " VENDER comércio em aberto";trend_text = "DOWN";SV=1;break;}}}
// gerenciamento de dinheiro especializado
if(MM){if(Risk100){Comentário("Valor de risco inválido.");return(0);}
else{MML=MathFloor((AccountFreeMargin()*AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_MINLOT)))*MarketInfo(Symbol(),MODE_MINLOT);}}}
if(MM==false){MML=Lots;}
// posições de expert init
int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0;CB=0;OP=0;for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if((OrderType()==OP_SELLL||OrderType()==OP_BUY)&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)||Magic==0))OP=OP+1;}
if(OP>=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0;// condições especializadas para abrir posição
if(SV>0){OS=1;OB=0;}if(BV>0){OB=1;OS=0;}
// condições especializadas para fechar posição
if((SV>0)||(RealSL_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealSL)|||(RealTP_Enabled&&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}
if((BV>0)||(RealSL_Enabled&&&(Ask-OrderOpenPrice())/Point>=RealSL)|||(RealTP_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}
for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)|||Magic==0))
{if(CB===1){OrderClose(OrderTicket(),OrderLots(),Bid,Slip,Aqua);temp = Bid;return(0);}}}
if(OrderType()==OP_SELLL&&OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)|||Magic==0)){
if(CS===1){OrderClose(OrderTicket(),OrderLots(),Ask,Slip,Gold);temp = Bid;return(0);}}}double SLI=0,TPI=0;int TK=0;
// valor da posição aberta de especialista
if((AddP()&&Add_Positions&&OP<=MaxOrders)|||(OP==0&&!Add_Positions)){
if(OS===1){if(TP==0)TPI=0;else TPI=Bid-TP*Point;if(SL==0)SLI=0;else SLI=Bid+SL*Point;OS=0;return(0);}
if(OB===1){if(TP==0)TPI=0;else TPI=Ask+TP*Point;if(SL==0)SLI=0;else SLI=Ask-SL*Point;{TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip,SLI,TPI,OrSt,Magic,0,Blue);OB=0;return(0);}}}
for(j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)){if(OrderSymbol()==Symbol()&&((OrderMagicNumber()==Magic)|||Magic==0)){TrP();}}}}retorno(0);}}
// número de ordens de especialistas
int CntO(int Type,int Magic){int _CntO;_CntO=0;
for(int j=0;j<OrdersTotal();j++){OrderSelect(j,SELECT_BY_POS,MODE_TRADES);if(OrderSymbol()==Symbol()){if((OrderType()==Type&&&(OrderMagicNumber()==Magic)|||Magic==0))_CntO+++;}}}retorno(_CntO);}
// breakeven de especialista
void TrP(){double pb,pa,pp;pp=MarketInfo(OrderSymbol(),MODE_POINT);if(OrderType()==OP_BUY){pb=MarketInfo(OrderSymbol(),MODE_BID);
if(BE>0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp);}}}}
// parada de rastreamento especializada
if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()<pb-(TS+TS_Step-1)*pp){ModSL(pb-TS*pp);return;}}}}
if(OrderType()==OP_SELL){pa=MarketInfo(OrderSymbol(),MODE_ASK);if(BE>0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}}}
if(TS>0){if(OrderOpenPrice()-pa>TS*pp){if(OrderStopLoss()>pa+(TS+TS_Step-1)*pp||OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}}
//expert stoploss
void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSL,OrderTakeProfit(),0,CLR_NONE);}
// função adicionar posições de especialista
bool AddP(){int _num=0; int _ot=0;
for (int j=0;j<OrdersTotal();j++){if(OrderSelect(j,SELECT_BY_POS)==verdadeiro && 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);}
/*
// condições especializadas para fechar posição
if((SV>0)||(RealSL_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealSL)|||(RealTP_Enabled&&&(Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;}
if((BV>0)||(RealSL_Enabled&&&(Ask-OrderOpenPrice())/Point>=RealSL)|||(RealTP_Enabled&&&(OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;}
for(cnt=0;cnt<OrdersTotal();cnt++){OrderSelect(cnt ,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&( (OrderMagicNumber()==Magic)||Magic==0))
{if(CB===1){OrderClose(OrderTicket(),OrderLots(),Bi d,Slip,Aqua);temp = Bid;return(0);}}}
if(OrderType()==OP_SELLL&&OrderSymbol()==Symbol()&& ((OrderMagicNumber()==Magic)|||Magic==0)){
if(CS===1){OrderClose(OrderTicket(),OrderLots(),Ask ,Slip,Gold);temp = Bid;return(0);}}}double SLI=0,TPI=0;int TK=0;
*/
apenas adicionar /* no início das condições de especialista para fechar posição
e */ no final
msn aboukalil ( at) hotmail.fr
Obrigado aboukalil pela resposta rápida, mas eu não entendo bem, se eu editar isso, não terei nenhum comando próximo, ele deixará meus negócios existentes, mas minha EA nunca fechará seu próprio negócio para abrir na direção oposta?
Você pode ajudar um pouco nisto
Howdy to all.....
Curioso se alguém conhece ou não um indicador genérico que permite chamar qualquer indicador de buffer único baseado em linha no iCustoms do genérico para que quando o indicador genérico for anexado a um gráfico, ele exiba como indicador de barra de histograma de cor dupla cuja mudança de cor é baseada na inclinação do iCustomed indy?
Toda e qualquer assistência é apreciada.
Senhoras e senhores,
Como posso transformar um indicador em arquivo csv? Obrigado.
Senhoras e senhores, como posso transformar um indicador em arquivo csv? Obrigado.
Você quer dizer como salvar em arquivo CSV?
Verifique isto:
Ferramentas - leitor .csv
ajude a modificar este pequeno roteiro
Hi,
Alguém poderia ajudar a modificar este pequeno roteiro de entrada de pedidos?
para que o tamanho do lote negociado seja uma função de um % de risco do tamanho da conta
eu sei que esta linha de código deve ser inserida em algum lugar, mas não faço idéia de como programá-la
risco duplo = RiskPercent / 100;
se (UseMoneyMgmt)
Lots=NormalizeDouble(AccountBalance()*Risk/stoploss/(MarketInfo(Symbol(),MODE_TICKVALUE)),2);
muito obrigado de antemão
ordem pendente
oi!
como faço para administrar os pedidos pendentes? (com mt4 api)
quando meu programa foi recebido um TT_ORDER_PENDING_OPEN (tipo comercial)
e foi recebida uma PUMP_UPDATE_ACTIVATION em notificação de bombeamento