Precisa de ajuda com a codificação - página 8

 

Jo

Algo parecido com isto :

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):
Jovager:
Olá,

Como posso codificar um alerta em um indicador ?

Por exemplo, como alertar quando MACD[0]>MACD[1]?

Obrigado pela ajuda.

Jo
 
mladen:
Jo

Algo parecido com isto :

if (MACD[0]>MACD[1]) Alert("Message to use for alert"):

Obrigado Mladen, mas onde ?

Eu tinha as mensagens :

Red -If_função não definida

Espera-se o Red-Alert_Semicolon

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

#janela_indicadora de propriedade_separarate_window

#property indicator_buffers 2

#indicador de propriedade_color1 Prata

#indicador de propriedade_color2 Vermelho

#largura_do_indicador de propriedade1 2

//---- parâmetros indicadores

externo int FastEMA=12;

externo int SlowEMA=26;

extern int SignalSMA=9;

//---- buffers indicadores

MacdBuffer duplo[];

double SignalBuffer[];

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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- definições de desenho

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

IndicatorDigits(Dígitos+1);

//---- indicator buffers mapping

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- nome para DataWindow e subwindow label do indicador

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");

SetIndexLabel(0, "MACD");

SetIndexLabel(1, "Signal");

//---- inicialização feita

retorno(0);

}

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

//| Médias móveis Convergência/Divergência |

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

int start()

{

limite int;

int counted_bars=IndicatorCounted();

//---- última barra contada será recontada

if(counted_bars>0) counted_bars--;

limite=barras_contadas_à_barras;

//---- macd counted in the 1-st buffer

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

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- linha de sinal contada no buffer 2-nd

para(i=0; i<limite; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- feito

retorno(0);

}

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

 

Antes do último retorno em seu código (dessa forma você garante que ele será executado somente quando todo o resto do processamento estiver concluído)

Jovager:
Obrigado Mladen, mas onde ?

Eu tinha as mensagens :

Red -If_função não definida

Espera-se o Red-Alert_Semicolon

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

#janela_indicadora de propriedade_separarate_window

#property indicator_buffers 2

#indicador de propriedade_color1 Prata

#indicador de propriedade_color2 Vermelho

#largura_do_indicador de propriedade1 2

//---- parâmetros indicadores

externo int FastEMA=12;

externo int SlowEMA=26;

extern int SignalSMA=9;

//---- buffers indicadores

MacdBuffer duplo[];

double SignalBuffer[];

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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- definições de desenho

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_LINE);

SetIndexDrawBegin(1,SignalSMA);

IndicatorDigits(Dígitos+1);

//---- indicator buffers mapping

SetIndexBuffer(0,MacdBuffer);

SetIndexBuffer(1,SignalBuffer);

//---- nome para DataWindow e subwindow label do indicador

IndicatorShortName("MACD("+FastEMA+", "+SlowEMA+", "+SignalSMA+")");

SetIndexLabel(0, "MACD");

SetIndexLabel(1, "Signal");

//---- inicialização feita

retorno(0);

}

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

//| Médias móveis Convergência/Divergência |

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

int start()

{

limite int;

int counted_bars=IndicatorCounted();

//---- última barra contada será recontada

if(counted_bars>0) counted_bars--;

limite=barras_contadas_à_barras;

//---- macd counted in the 1-st buffer

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

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- linha de sinal contada no buffer 2-nd

para(i=0; i<limite; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- feito

retorno(0);

}

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

Pls corrige erro de divisão zero ao usar o tempo como "0".

pivot_crazy.mq4Pode alguém corrigir o erro de divisão zero ao usar o período de tempo como "0"?

Obrigado.

Arquivos anexados:
 

Experimente. Está corrigido agora

privateer:
pivot_crazy.mq4Corrigir o erro de divisão zero ao usar o prazo como "0 "Obrigado.
Arquivos anexados:
 

Obrigado u mladen funciona como um encanto

mladen:
Experimente. Está corrigido agora

obrigado u mladen funciona como um encanto

 

preciso de ajuda com esta ea sua função de martingale, mas não funciona de forma propícia, por exemplo, se uma posição fechada em uma função de perda de martingale deve multiplicar os lotes da última posição fechada em uma perda, mas há um erro no código que faz com que o martingale para trabalhar de forma propícia aqui sua eauniversalmacrossea.mq4

Arquivos anexados:
 

Essa forma de abrir uma nova ordem após uma perda não é um martingale + martingale trabalha com posições abertas

blondutrader:
preciso de ajuda com esta ea sua função de martingale, mas não funciona de forma propícia, por exemplo, se uma posição fechada em uma função de perda de martingale deve multiplicar os lotes da última posição fechada em uma perda, mas há um erro no código que faz com que o martingale para trabalhar de forma propícia aqui sua eauniversalmacrossea.mq4
 

Como posso calcular meus lotes, quando quero negociar com cada comércio f.e. 5% do meu dinheiro?

 

sunshineh,

Tente usar esta função:

double getLots(string symbol, double Risk, double stopLossDistance)

{

RefreshRates();

double lots = 0;

double MinLots = NormalizeDouble(MarketInfo(symbol,MODE_MINLOT) ,2);

double MaxLots = NormalizeDouble(MarketInfo(symbol,MODE_MAXLOT) ,2);

double LotStep = NormalizeDouble(MarketInfo(symbol,MODE_LOTSTEP),2);

int LotDigit = 2;

if(MarketInfo(symbol,MODE_DIGITS)==3 || MarketInfo(symbol,MODE_DIGITS)==5) stopLossDistance *= 10.0;

//

//

//

//

//

if (LotStep==1) LotDigit=0;

if (LotStep==0.1) LotDigit=1;

if (LotStep==0.01) LotDigit=2;

if (Risk>0)

{

if (AccountBalance()>AccountFreeMargin())

lots = NormalizeDouble(AccountFreeMargin()*(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

else lots = NormalizeDouble(AccountBalance() *(Risk/100.0)/(stopLossDistance*MarketInfo(symbol,MODE_TICKVALUE)),LotDigit);

}

//

//

//

//

//

lots = NormalizeDouble(NormalizeDouble(lots/LotStep,0)*LotStep,LotDigit);

lots = MathMax(MathMin(lots,MaxLots),MinLots);

return(lots);

}
sunshineh:
Como posso calcular meus lotes, quando quero negociar com cada comércio f.e. 5% do meu dinheiro?
Razão: