Ajuda na codificação - página 161

 

2 pedidos de cada vez

Olá, estou tentando codificar um EA, e tenho um problema, não sei como resolvê-lo :?

então o problema é que eu quero abrir 2 ordens (OPENSTOP e SELLSTOP) no momento atual, mas neste EA ele abre o maby deles cerca de 100 ou mais, então como resolvê-lo para abrir apenas 2 :???

Lotes duplos externos=1;

extern double h_beg=10;

duplo h_end=23 externo;

duplo externo TakeProfit=20;

duplo externo StopLoss=90;

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

int start()

{

duplo prevbar_H;

double prevbar_L;

double bar_H;

double bar_L;

venda dupla;

compra dupla;

bool trade_time;

bool sell_opened;

bool buy_opened;

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

se (Hora()==h_beg)

{

trade_time = true;

for(int h=1; h<=11; h++)

{

bar_H = iHigh(NULL,0,h);

if (prevbar_H==0 || prevbar_H<bar_H)

{

prevbar_H = bar_H;

}

}

for(int l=1; l<=11; l++)

{

bar_L = iLow(NULL,0,l);

if (prevbar_L==0 || prevbar_L>bar_L)

{

prevbar_L = bar_L;

}

}

}

se (Hour()==h_end)

{

trade_time = falso;

prevbar_H = 0;

prevbar_L = 0;

DeletePending();

DeleteBUY();

sell=0;

comprar=0;

}

//+--------------------------------------------------------buy or sell----------+

if(Hora()==h_beg)

{

if(venda==0)

{

OrderSend(Symbol(),OP_SELLSTOP,Lots,prevbar_L,3,prevbar_L+L+200*Point,prevbar_L-200*Point, "MA sample",16384,0,Green);

sell=1;

}

if(comprar==0)

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,prevbar_H,3,prevbar_H-200*Point,prevbar_H+200*Point, "MA sample",16384,0,Green);

buy=1;

}

}

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

retorno(0);

}

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

nulo DeletePending()

{

for(int i=0; i<OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

OrderDelete(OrderTicket());

}

}

}

vazio DeleteBUY()

{

for(int i=0; i<OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

se (OrderType() == OP_BUY)

{

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Vermelho );

}

}

}

}
 
carbonmimetic:
HI Mladen,

se eu quero contar barras entre 2 mínimos, como posso evitar barras de domingo das 23h00 às 00h00?

porque no gráfico de 4h existe essa barra e dura apenas uma hora..... e aparece também no gráfico diário.

agradecimentos com antecedência

carbonmimético

Acrescente um dia da semana de verificação semelhante a este :

if (TimeDayOfWeek(Time[yourCounter])!=0)

0 é domingo e nesse caso você tem que pular essa barra

 

porque o sistema que eu uso é como um sistema de comércio de martingale, uma vez que eu coloco o pedido é cerca de 1 ordem de trabalho e 4 ordem pendente, quando perder a 2ª ordem pendente se tornará ordem de trabalho, então eu preciso mover o TP prev prev igual à ordem atual, portanto eu espero que possa ter EA para automatizar isso, então eu não preciso continuar observando, pois algum dia precisarei sair para almoçar ou jantar . eu tento me codificar, mas não sei como selecionar novo pedido e modificar o prev pedido .

 
mladen:
carbonmimético

Acrescente um dia da semana de verificação semelhante a este :

if (TimeDayOfWeek(Time[yourCounter])!=0)
0 é domingo e nesse caso você tem que pular essa barra

ok....bancos muito!

 

oi mladen,

Por favor, você poderia ajudar a olhar para o código, eu vejo no gráfico ao vivo, ele pode repintar a linha de sinal passado, quando eu pressiono a atualização do menu mt4, a linha pode mudar completamente de posição, ou seja, a linha de sinal passado.

você poderia corrigir este problema, não para repintar passado ou não pode repintar problemas de autorefresh. é algo como contar barras tendo problemas ou formas de loop interno? Eu sou apenas um iniciante superficial do código. Muito obrigado pela ajuda.

Arquivos anexados:
 
kenwa:
oi mladen,

Por favor, você poderia ajudar a olhar para o código, eu vejo no gráfico ao vivo, ele pode repintar a linha de sinal passado, quando eu pressiono a atualização do menu mt4, a linha pode mudar completamente de posição, ou seja, a linha de sinal passado.

você poderia consertar este problema, não para repintar problemas do passado ou para não poder repintar problemas de autorefresh. é algo como contar barras tendo problemas ou formas de loop interno? Eu sou apenas um iniciante superficial do código. Muito obrigado pela ajuda.

kenwa

Substitua o init e comece com estes :

double CCI_idx[];

double CCI_idt[];

int init()

{

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,CCI_idx);

SetIndexBuffer(1,CCI_idt);

return(0);

}

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

//| |

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

int start()

{

int i,counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(i=limit;i>=0;i--) CCI_idt = iCCI(abc,0,CCI_Period,applied_price,i);

for(i=limit;i>=0;i--) CCI_idx = iMAOnArray(CCI_idt,Bars,MA_Period,0,MA_Method,i);

return(0);

}

Você não pode usar o mesmo tampão para coletar valores de cci e depois armazenar médias desses cci - isso estava causando a repintura. Além disso, removido o prazo de referência da chamada CCI. Se você desejar que ele também calcule no modo multi-prazo, ele tem que ser escrito de forma diferente

__________________________

PS: esse mesmo conselho poderia ser aplicado ao uso de símbolos diferentes em um gráfico atual. O número de barras alteradas de um símbolo atual não tem que ser o mesmo que o número de barras de algum outro símbolo alvo para que você possa obter um efect de repintura novamente, mas deixou isso como está

 

Oi mladen,

Consulte o número 1606 acima, uma vez que sou muito superficial iniciante ou, na verdade, sei muito pouco, não consigo entender seu significado, poderia anexar aqui um indicador funcional? poderia usar um buffer para calcular o valor CCI e depois fazer a média, em vez de usar dois buffers? você menciona símbolos diferentes, seria possível escrever uma versão simples para acomodar dois símbolos no mesmo gráfico? se for mtf, como escrever em vez disso, muito obrigado pela ajuda.

 
kenwa:
Oi mladen,consulte o número 1606 acima, uma vez que sou muito superficial iniciante ou, na verdade, sei muito pouco, não consigo entender seu significado, poderia anexar aqui um indicador funcional? posso usar um buffer para calcular o valor CCI e depois fazer a média, em vez de usar dois buffers? você menciona símbolos diferentes, seria possível escrever uma versão simples para acomodar dois símbolos no mesmo gráfico? se for mtf, como escrever em vez disso, muito obrigado pela ajuda.

kenwa

Você não pode usar o mesmo buffer para calcular o buffer e então armazenar os resultados da média daquela CCI no mesmo buffer - a média mudará os valores passados

A partir do indicador multi-símbolo (aquele que pode acessar outros símbolos de um gráfico atual): se eu postar a solução para isso, temo que não seja simples. Não há solução simples para isso e primeiro é preciso esclarecer o que acontece com dois símbolos diferentes ao mesmo tempo.

Anexando a versão que funciona corretamente em um símbolo atual e no prazo atual (esta é a única maneira de calcular uma média de um cci se você quiser usar a função iMAOnArray())

Arquivos anexados:
 

kenwa

Esta seria a maneira mais simples possível de fazê-lo funcionar em vários períodos de tempo e de poder escolher qualquer símbolo. Você verá que não é tão simples quanto parece à primeira vista, mas esta faz tudo o que é necessário para coletar dados corretos e evitar a repintura quando ela faz isso.

 

oi mladen,

Muito obrigado, consulte acima, como se seu mtf se escrever em versão nãotf? eu não posso me modificar devido ao meu nível de codificação do jardim de infância. a propósito, porque você parece ter usado 2 buffers para calcular, mas o mt4 só permite 8 buffers no máximo, é isso?se eu quiser gostar do indicador de referência anexo (que não é de forma alguma um bom indicador (tem bugs dentro, eu acho, não tão funcional ao vivo)), apenas para sua referência, ele pode mostrar oito símbolos ao mesmo tempo, não é a moeda necessária ou quaisquer símbolos que eu queira inserir externamente, (eu acho que sobrepor o mesmo indicador em sw não é funcionar, pois a escala vertical não é corrigida lá) como você pode me ajudar a criar um cci mtf como o do indicador de referência (não é necessário tão complexo, mas tem funções similares?) Muito obrigado novamente pela gentil ajuda.

Arquivos anexados:
reference.mq4  17 kb
Razão: