Como codificar? - página 167

 
 

Ainda tentando adicionar um alerta sonoro a este indicador...... Alguém pode verificar o código para mim, pois ele não está funcionando?

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

//|

//|

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

#property copyright "niva"

#property indicator_chart_window

#property indicator_buffers 2

#property indicator_color1 White

#property indicator_color2 Red

extern bool Email_Enabled = false;

extern bool Alert_Enabled = true;

//---- input parameters

int CountBars=10000;

//---- buffers

double uptrend[];

double downtrend[];

bool AlertSent,EmailSent;

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

//| Custom indicator initialization function |

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

int init()

{

//---- indicator line

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,217);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,218);

SetIndexBuffer(0,val1);

SetIndexBuffer(1,val2);

//----

return(0);

}

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

//| AltrTrend_Signal_v2_2 |

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

int start()

{

if (CountBars>=Bars) CountBars=Bars;

int i,shift,counted_bars=IndicatorCounted();

int uptrend, downtrend;

for (shift = CountBars; shift>=0; shift--)

{

if(High[shift-1]>High[shift]&&Low[shift-1]>Low[shift]&&uptrend!=3){

uptrend = uptrend+1;

downtrend=0;

}else if(High[shift-1]<High[shift]&&Low[shift-1]<Low[shift]&&downtrend!=3){

downtrend=downtrend+1;

uptrend=0;

}

else{

uptrend=0;

downtrend=0;

}

if (uptrend==3)

{

val1[shift]=Low[shift];

}

if (downtrend==3)

{

val2[shift]=High[shift];

}

}

return(0);

}

//----

if (Alert_Enabled && (uptrend[0] != 0 || uptrend[0] !=0) && !AlertSent)

{

Alert(Symbol() + "HiLow+3");

AlertSent=true;

}

if (Email_Enabled && (downtrend[0] != 0 || downtrend[0] !=0) && !EmailSent)

{

SendMail(Symbol() + "HiLow+3","HiLow+3 indicator triggered");

EmailSent=true;

}

if(downtrend[0] == 0 && uptrend[0] == 0 )

{

EmailSent=false;

AlertSent=false;

}

return(0);

}

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

Obrigado

mrwobbles:
Em algum lugar no código, os parênteses estão desequilibrados. Parece que em algum lugar a } e a ) estão faltando no código. Você precisará olhar e contar quantos parênteses abertos e fechados existem (+1 para aberto e -1 para fechado) que devem lhe dizer quantos estão faltando (digamos uma contagem de +2 significa dois parênteses à direita "}" ou vice-versa). Se ele recuou corretamente, você deve ser capaz de descobrir onde colocar o } correto. Feliz caçadaO

Consegui mudar algumas configurações e finalmente acredito estar quase lá! Agora, após a seguinte codificação, diz:

'shortSL' - variável não definida

longSL' - variável não definida

Aqui está o que parece:

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

//| Salgado.mq4 |

//| salgadoguilherme@hotmail.com|

//| |

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

#direitos de propriedade intelectual "".

#link da propriedade "salgadoguilherme@hotmail.com"

comércio externo de bool=verdadeiro;

bartocount externo=50;

lotes duplos externos=0,01;

StopLoss int externo =40;

Ext int TakeProfit =10;

deslize int externo=3;

número mágico int externo=816;

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

//| função de iniciação de especialista |

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

int init()

{

//----

//----

retorno(0);

}

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

//| função de desinicialização especializada |

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

int deinit()

{

//----

//----

retorno(0);

}

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

//| função de início especializado |

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

int start()

{

//----

if(trade===verdadeiro)

{

//M15

duplo M15_resistance=iCustom(NULL,PERÍODO_M15,"!LinRegrBuf", "true",barstocount,2,0));

duplo M15_resistance_p=iCustom(NULL,PERÍODO_M15,"!LinRegrBuf", "true",barstocount,2,barstocount-1);

double M15_line=iCustom(NULL,PERÍODO_M15,"!LinRegrBuf", "true",barstocount,0,0);

duplo M15_support=iCustom(NULL,PERÍODO_M15,"!LinRegrBuf", "true",barstocount,1,0);

double slopeM15=((M15_resistance-M15_resistance_p)/barstocount)/Point;

//Alerta(DoubleToStr(slopeM15,2);

Comentário(

"M15 Slope M15", "slopeM15",

//SHORT ENTRY

if(slopeM15<0 && IsTradeAllowed()==verdadeiro)

{

bool shortopen=false;

int ord_cnt1=OrdensTotal();

for (int start1=0;start1<ord_cnt1;start1++)

{

OrderSelect(start1, SELECT_BY_POS, MODE_TRADES);

if(OrderMagicNumber()== número de ordem && OrderType()==OP_SELLL)

{shortopen=verdadeiro;}

}

if(shortopen==false)

{

duplo M15High=iHigh(Symbol(),PERÍODO_M15,0);

if(M15High>==M15_resistance)

int shortticket=OrderSend(Symbol(),OP_SELL,lots,Bid,slippage,Bid+shortSL,M15_line,DoubleToStr(slopeM15,2);

if(shortticket<0)

{

//LONG ENTRY

if(slopeM15>0 && IsTradeAllowed()==verdadeiro)

{

bool longopen=false;

int ord_cnt=OrdersTotal();

for (int start=0;start<ord_cnt;start++)

{

OrderSelect(start, SELECT_BY_POS, MODE_TRADES);

if(OrderMagicNumber()== número de ordem && OrderType()==OP_BUY)

{longopen=true;}

}

if(longopen==falso)

{

duplo M15Low=iLow(Symbol(),PERÍODO_M15,0);

if(M15Low<=M15_support)

int longticket=OrderSend(Symbol(),OP_BUY,lots,Ask,slippage,Ask-longSL,M15_line,DoubleToStr(slopeM15,2);

if(longticket<0)

{

//----

retorno(0);

}

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

 

Fórmula Indy tipo vela

Hi,

Estou precisando muito de tutoriais de MQL sobre como codificar indicadores do tipo vela, tais como o gráfico anexo. Apenas os links para algum lugar dentro ou fora deste fórum estarão bem. Muito obrigado.

Piper.

Arquivos anexados:
ma_candles.gif  15 kb
 

Alguém poderia me dizer como codificar o seguinte;

Conte o número de barras desde que um MA de curto prazo cruzou um MA de longo prazo.

Obrigado!

 

Código EA para retomar as negociações após o fechamento.

Hi,

Existe algum código de amostra para uma EA, que possa retomar o gerenciamento dos negócios após sua parada e depois voltar novamente?

Obrigado,

JForex

 

Como codificar?

darvasboxes:
Alguém poderia me dizer como codificar o seguinte;

Conte o número de barras desde que um MA de curto prazo tenha atravessado um MA de longo prazo.

Obrigado!

Sim!

Contar as barras desde que elas cruzaram:

int i;

bool shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,0) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,0));

bool sgLast;

for(i=0;i<iBars(NULL,0);i++) {

sgLast = shortGreater;

shortGreater = (iMA(NULL,0,8,8,MODE_SMMA,PRICE_MEDIAN,i) > iMA(NULL,0,24,8,MODE_SMMA,PRICE_MEDIAN,i))

if(shortGreater !== sgLast) {

pausa;

}

}

A variável i conterá então o número de barras desde que elas cruzaram.

Sinta-se à vontade para me enviar algum dinheiro se você achar útil. Eu agradeceria.

 

Aqui está.

Guilhermesalgado:
Consegui mudar algumas configurações e finalmente acredito estar quase lá! Agora, após a seguinte codificação, diz:

'shortSL' - variável não definida

longSL' - variável não definida

Aqui está. Eu peguei o que você fez e o modifiquei para que fosse compilado. Cuidado, sua lógica é ruim, parece incompleta, e provavelmente não fará o que você quer.

Mas lá vai você.

- ChazzMoney

P.S. $170 é EXTREMELMENTE barato para um programa. Eu escrevo software de investimento personalizado uma ou duas vezes por ano por cinco números. Os programadores que assumem este tipo de trabalho devem ter cuidado - você precisa verificar TUDO para ter certeza de que você não perde um caso. Um bug é tão bom quanto um comerciante aleatório.

Sinta-se à vontade para me enviar algum dinheiro se você o achar útil. Agradeço o pensamento.

Arquivos anexados:
 

código do ZigZag padrão

Hi

este código é da norma "ZigZag.mq4".

"se (counted_bars==0 && downloadhistory) // histórico foi baixado"

counted_bars==0 : verificando se o valor é igual a zero........ seu ok.

downloadhistory : não há verificação de condição por que ??? por favor, limpe isto

Obrigado.

 

Abrindo 2 ENCOMENDAS e Fechando 2 ENCOMENDAS...CONSISTENTEMENTE.

Há muito tempo eu venho tentando e TENTANDO fazer com que minha EA sempre abra dois pedidos para uma compra OU venda. Uma com TP e a outra com NONE. Depois de abrir 2 pedidos, então não abra mais tempo UNTIL para negociar em direção oposta.

Para ALGUM TEMPO, eu olho para o histórico da conta e vejo 1 ordem, depois 3 ordens, depois 4 chances, depois 2 ordens e está correndo como lixo.

QUALQUER Mestre de Codificação aqui pode dar uma olhada e me dar informações?

Obrigado VOCÊ!!!!!!!!!!!!!!!!

ENCOMENDAS ABERTAS

-------

BuyTicket1 = Falso;

BuyTicket2 = Falso;

enquanto (!BuyTicket1) {

BuyTicket1 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, Ask + TakeProfit * Ponto, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

Sleep(PausebetweenOrders * 1000);}

//if (BuyTicket1 && SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "]" + DoubleToStr(Ask, Digits) + " Open 1st Buy");

Sleep(1000);

enquanto (!BuyTicket2) {

BuyTicket2 = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLoss, 0, "2nd Buy(#" + MagicNumber + ")", MagicNumber, 0, BlueViolet);

Sleep(PausebetweenOrders * 1000);}

------------

ENCOMENDAS FECHADAS

------------

if(OrdersTotal() > 0) {

OrderSelect(0, SELECT_BY_POS, MODE_TRADES);

if(OrderType() == OP_SELLL){

for (int j = OrdertotalCloseSell-1; j >= 0; j --) {

PositionClosedSell = False;

TentativasTentadoFechadoVendido = 0;

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

enquanto (!PositionClosedSell && AttemptsTriedCloseSell < CloseposnAttempts) {

AttemptsTriedCloseSell = AttemptsTriedCloseSell + 1;

OrderCloseSell = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, MediumSeaGreen);

Sleep(PausebetweenOrders * 1000);

if( OrderCloseSell == Verdadeiro ) { // Posição Fechada com Sucesso.