Como codificar? - página 58

 

Pensei que o tinha consertado, mas não.

O que estou tentando fazer é ter um comentário no gráfico e no diário declarando qual condição de entrada foi usada para abrir a posição atual.

Isto já foi feito antes e como você o faz porque já estou tentando há algum tempo, mas sem sorte e não é tão fácil como eu pensava.

Abaixo está minha última tentativa.

qualquer ajuda seria ótima

compra = Long ||| Long2 ||| Long3 || Long4;

vendeig = Curto ||| Curto2 ||| Curto3 || Curto4;

closebuy=sellsig;

closesell=compra=sellig;

if (curprof>=AccountEquity()*ProfitExit/100.0) {

exit=true;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true;

}

}

CheckForOpen() {

int res,tr;

//---- condições de venda

co=CalculateCurrentOrders(Symbol());

if(sellig && lastsig!=-1) {

se ("Short === verdadeiro)Imprimir(" Short signal taken ");

if ("Short2 == verdadeiro)Print(" Short2 signal taken ");

if ( Curta3 == verdadeiro)Imprimir(" Curta3 sinal tomada ");

if ( Curta4 == verdadeiro)Impressão(" Curta4 sinal tomada ");

co=CalculateCurrentOrders(Symbol());

if (co==0) {

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

lastsig=-1;

last=Time[0];

retornar;

}

//---- condições de compra

co=CalculateCurrentOrders(Symbol());

if(compra && dura!=1) {

se ("Long === verdadeiro) Imprimir(" Long signal taken ");

if ("Long2 == verdadeiro)Imprimir(" Long2 sinal tomado ");

if ("Longo3 == verdadeiro) Impressão(" Sinal longo3 tomado ");

if ("Long4 == verdadeiro)Print(" Sinal de Long4 tomado ");

co=CalculateCurrentOrders(Symbol());

if (co==0) {

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

}

last=Time[0];

lastsig=1;

retorno;

}

}

bool CloseAtMarket(int ticket,lote duplo) {

// fechamento de ordem de mercado tolerante a falhas

bool bres=falso; int tr;

try=0;

enquanto (!bres && tries<OrderTriesNumber) {

RefreshRates();

bres=OrderClose(ticket,lote,OrderClosePrice(),slippage,White);

try++;

tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

}

se (!bres) Imprimir ("Ordem de fechamento de erro : "Descrição do Erro(GetLastError()));

}

int OpenStop(int mode,double lot, double prc, int SL, int TP) {

int res,tr,col;

correio em cadeia;

duplo preço aberto,sl,tp,stlev;

try=0;

stlev=(1+MarketInfo(Symbol(),MODE_STOPLEVEL))*Ponto;

while (res<=0 && tries<OrderTriesNumber) {

tr=0; enquanto (tr<5 && !IsTradeAllowed()) { tr++; Sleep(2000); }

RefreshRates();

if (mode==OP_SELLSTOP) {

se (prc<=Bid-stlev) openprice=prc;

caso contrário, openprice=Bid-stlev;

if (SL>0) sl=openprice+SL*Point;

if (TP>0) tp=open priceTP*Point;

col=Red;

} else

if (mode===OP_BUYSTOP) {

se (prc>=Ask+stlev) openprice=prc;

caso contrário, openprice=Ask+stlev;

if (SL>0) sl=openprice-SL*Point;

if (TP>0) tp=openprice+TP*Point;

col=azul;

} else return;

Print(Ask," ",Bid," ",Symbol()," ",mode," ",lot," ",openprice," ",sl," ",tp," ");

res=OrderSend(Symbol(),mode,lot,openprice,slippage,sl,tp,EAName+"_"+ MagicNumber, MagicNumber,0,col);

try++;

}

se (res<=0) Imprimir("Erro abrindo ordem pendente: "Descrição do Erro(GetLastError()));

return(res);

 

Esta EA não compilará, nem mesmo roubará, deve ser a mais pequena de suas preocupações. Há 5 variáveis que têm espaços aleatórios ou a primeira letra não é maiúscula!

 
jturns23:
Esta EA não vai nem mesmo compilar, o stoploss deve ser a menor de suas preocupações. Há 5 variáveis que têm espaços aleatórios ou a primeira letra não é maiúscula!

Aqui a versão fixa.

Mas isto ainda não pode abrir nenhuma posição porque não há lógica no código para decidir como abrir posições longas / curtas.

Arquivos anexados:
 
 

Ajuda com esta EA

Michel:
Quem é este CHinGsMAroonCLK ?

Como me lembro, esta EA nada mais é do que 10p3 da elCactus, mas talvez eu esteja errado...

Verifique a linha, você provavelmente encontrará o que está procurando: https://www.mql5.com/en/forum/174975

Ok... então agora a coisa é que eu posso colocar um stoploss para esta EA... o que o código... pode me ajudar... do quex

 

nenhuma zona de comércio - código ajuda

Olá a todos,

Tento ajustar um código, mas depois de muito esforço ainda não consegui acertar... se algum de vocês não se importa, podem dar uma olhada nisto... apreciem...

A idéia é parar a próxima troca se a faixa de preço estiver na mesma zona que a troca anterior. O comércio longo verificará zona para a última OPEN POSITION comércio longo, e o comércio curto verificará zona para a última OPEN POSITION comércio curto.

Ou seja, se o primeiro LONGO em 1,4000, então o segundo LONGO só será acionado se o preço sair da zona (zona de 20 pips) menos de 1,3990 && mais de 1,4010

Obrigado a todos...

//+------------------------------------------------------------------------------------------------------------------------+

//| Filtro para o mercado lateral - impedindo o comércio múltiplo em faixa de preço semelhante e criando zona de não-comércio |

//+------------------------------------------------------------------------------------------------------------------------+

externa int Zona1 = -10; // (zona inferior)

externa int Zona2 = 10; // (zona superior)

// nenhuma zona de comércio entre -10 e +10 do comércio anterior

bool CheckZone(tipo int)

{

int cnt = OrderTotal();

para (int i=0; i < cnt; i++)

{

se (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continuar;

se (OrderSymbol() != Symbol()) continuar;

se (OrderMagicNumber() != Magic) continuar;

if (OrderType() != type) continue;

if (type == OP_BUY)

{

if( (Bid - OrderOpenPrice()) > Zone1*Point && (Bid - OrderOpenPrice()) < Zone2*Point ) return(false);

}

se (tipo == OP_SELL)

{

if( (OrderOpenPrice()-Ask) > Zone1*Point && (OrderOpenPrice()-Ask) < Zone2*Point ) return(false);

}

}

retorno (verdadeiro);

}

 

Resolver o problema da EA

Olá a todos os programadores da MQL,

Por favor, verifique o seguinte código e me diga por que isto não está colocando os negócios na minha conta demo. Sua boa EA em GJ 1m, mas infelizmente não está funcionando. Qualquer um pode consertá-lo por favor e torná-lo utilizável como um EA livre de erros.

Felizmente, estou agradecido antecipadamente!

Cumprimentos.

//+------------------------------------------------------------------+

Externo int Comprimento1 = 3;

Exterior int Comprimento2 = 10;

Exterior int Comprimento3 = 16;

duplo Histo[];

duplo MaHisto[];

duplo up[];

duplo dn[];

duplo upMode[];

duplo dnMode[];

int alertBar;

int init()

{

retorno(0);

}

int deinit()

{

retorno(0);

}

int start()

{

limite int;

int counted_bars=IndicatorCounted();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

for(int i = 0 ;i <= limite ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i);

for(int j = 0 ;j <= limite ;j++)MaHisto[j] = iMAOnArray(Histo,0,Comprimento3,0,MODE_EMA,j);

for(int m = 0 ;m <= limite ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Aberto[m]-(5*Ponto);

if(Bars > alertBar && m == 0)

{

//Alerta(Símbolo()+" "+Periodo()+" KI LONG ",Perguntar);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,0,0,Red);

barra de alerta = Barras;

}

}

senão se(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Point);

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,0,Vermelho);

barra de alerta = Barras;

}

}

senão

{

up[m] = VAZIO_VALOR;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = Alto[m];

dnMode[m] = Baixo[m];

}

senão se( MaHisto[m] < 0 )

{

dnMode[m] = Alto[m];

upMode[m] = Baixo[m];

}

}

retorno(0);

}

//+------------------------------------------------------------------+

 
arsenic786:
Olá a todos os programadores MQL,

Por favor, verifique o seguinte código e me diga por que isto não está colocando os negócios na minha conta demo. Sua boa EA em GJ 1m, mas infelizmente não está funcionando. Qualquer um pode consertá-lo por favor e torná-lo utilizável como um EA livre de erros.

Felizmente, estou agradecido antecipadamente!

Cumprimentos.

//+------------------------------------------------------------------+

Externo int Comprimento1 = 3;

Exterior int Comprimento2 = 10;

Exterior int Comprimento3 = 16;

duplo Histo[];

duplo MaHisto[];

duplo up[];

duplo dn[];

duplo upMode[];

duplo dnMode[];

int alertBar;

int init()

{

retorno(0);

}

int deinit()

{

retorno(0);

}

int start()

{

limite int;

int counted_bars=IndicatorCounted();

if(counted_bars<0) counted_bars=0;

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

for(int i = 0 ;i <= limite ;i++)Histo = iMA(Symbol(),0,Length1,0,MODE_EMA,PRICE_CLOSE,i) - iMA(Symbol(),0,Length2,0,MODE_EMA,PRICE_CLOSE,i);

for(int j = 0 ;j <= limite ;j++)MaHisto[j] = iMAOnArray(Histo,0,Comprimento3,0,MODE_EMA,j);

for(int m = 0 ;m <= limite ;m++)

{

if(MaHisto[m+1] 0)

{

up[m] = Aberto[m]-(5*Ponto);

if(Bars > alertBar && m == 0)

{

//Alerta(Símbolo()+" "+Periodo()+" KI LONG ",Perguntar);

OrderSend(Symbol(),OP_BUY,0.1,Ask,3,25,15,0,0,0,0,0,Red);

barra de alerta = Barras;

}

}

senão se(MaHisto[m+1] >= 0 && MaHisto[m]< 0)

{

dn[m] = Open[m]+(5*Point);

if(Bars > alertBar && m == 0)

{

OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,0,Vermelho);

barra de alerta = Barras;

}

}

senão

{

up[m] = VAZIO_VALOR;

dn[m] = EMPTY_VALUE;

}

if( MaHisto[m] > 0 )

{

upMode[m] = Alto[m];

dnMode[m] = Baixo[m];

}

senão se( MaHisto[m] < 0 )

{

dnMode[m] = Alto[m];

upMode[m] = Baixo[m];

}

}

retorno(0);

}

//+------------------------------------------------------------------+

"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,R ed); "

Você está vendendo ao preço Ask, deve ser Bid.

O campo Comentário deve ser "", e não 0.

25, pois SL deve ser Bid+25*Point.

15 como TP deve ser Bid-15*Ponto.

"R ed" não é uma cor.

 
Michel:
"OrderSend(Symbol(),OP_SELL,0.1,Ask,3,25,15,0,0,0,0,R ed); "

Você está vendendo pelo preço Ask, deve ser Bid.

O campo Comentário deve ser "", e não 0.

25, pois SL deve ser Bid+25*Point.

15 como TP deve ser Bid-15*Point.

"R ed" não é uma cor.

Muito obrigado por seu apoio!

Mas, ainda estou enfrentando problemas conhecimento zero de MQL. Você pode por favor copiar o código em arquivo mq4 e testá-lo em demo e depois me dizer se funciona bem. Seu apoio será contado como Kindest Help Michel.

Cumprimentos,

Kashif.

 

Não, desculpe, por enquanto não tenho tempo suficiente.

Em poucas horas eu pego um barco para voltar para minha família para o Natal... e não tenho mais pc...

Razão: