Como codificar? - página 248

 
 

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.

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

Arquivos anexados:
 

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