Pergunte! - página 82

 

Codersguru, por favor, ajude

Codersguru

estou tentando escrever um alerta sonoro para o indicador bullspower ao cruzar a linha zero. não tenho experiência com MQL, mas junte algum código de vários outros indicadores. ao compilar o código não há erro. embora o alerta indicador não funcione, você poderia ajudar a corrigi-lo ou talvez colocar um novo código para este alerta sonoro quando Bullbears cruzar a linha zero ?

muito antes

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

//| |

//| |

//| |

//| |

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

#propriedade de direitos autorais "forex-tsd

#link da propriedade "https://www.forex-tsd.com"

#janela_indicadora de propriedade_separarate_window

#property indicator_buffers 2

#indicador de propriedade_color1 Lime

#indicador de propriedade_color2 Crimson

#indicador de propriedade_nível1 0

duplo ExtMapBuffer1[];

duplo ExtMapBuffer2[];

duplo valbull[];

duplo valbuffer[];

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

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

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

int init()

{

IndicatorBuffers(3);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexDrawBegin(0,2);

SetIndexLabel(0, "ExtMapBuffer1");

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4);

SetIndexDrawBegin(1,2);

SetIndexLabel(1, "ExtMapBuffer2");

//---- indicadores

//----

retorno(0);

}

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

//| Função de desinicialização do indicador do cliente |

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

int deinit()

{

//---- TODO: adicione seu código aqui

//----

retorno(0);

}

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

//| Função de iteração de indicador personalizada |

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

int start()

{

int shift,counted_bars=IndicatorCounted();

valbear duplo[], valbull[];

//---- verificação de possíveis erros

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

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

if(counted_bars>0) counted_bars--;

shift=Bars-1;

while(shift>=0)

{

valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0);

valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0);

se (valbull[shift]>0)

{

ExtMapBuffer1[shift]=valbull[shift];

ExtMapBuffer2[shift]=0;

}

senão

{

ExtMapBuffer2[shift]=valbull[shift];

ExtMapBuffer1[shift]=0;

}

mudar...; //

}

//---- módulo de alerta

#define SIGNAL_BAR 1

//---- Variáveis estáticas onde a última barra de tempo

//---- e a última direção de alerta são armazenadas

estática int PrevSignal = 0, PrevTime = 0;

//---- Se a barra selecionada para ser analisada não for uma barra zero,

// não faz sentido verificar o alerta

//---- várias vezes. Se nenhuma nova barra começar a ser formada, desista.

if(SIGNAL_BAR > 0 && Time[0] <= PrevTime )

retorno(0);

//---- Marque que esta barra foi verificada

PrevTime = Tempo[0];

if(PrevSignal <= 0)

{

if(valbull[SIGNAL_BAR] > 0 )

{

PrevSignal = 1;

Alerta("BullChannell_positiv (", Símbolo(), ", ", Período(), ") - BUY!!!");

}

}

if(PrevSignal >= 0)

{

if(valbull[SIGNAL_BAR] < 0 )

{

PrevSignal = -1;

Alerta("BearChannell_negativ (", Symbol(), ", ", Period(), ") - VENDA!!!");

}

}

//---- módulo de alerta final

//----

retorno(0);

}

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

 

Como usar a função para diferenciar entre pedidos abertos e pedidos pendentes?

Como usar a função para diferenciar entre ordens abertas e ordens pendentes?

Obrigado.

 
vntb:
Como usar a função para diferenciar entre pedidos abertos e pedidos pendentes? Obrigado.

Verifique o OrderType() :

OrderType() == OP_BUY //BuyOrder (aberto)

OrderType() == OP_SELL //Sell Order (aberto)

OrderType() == OP_BUYLIMIT //Buy limit Order (pendente)

OrderType() == OP_SELLLIMIT //Sell limit Order (pendente)

OrderType() == OP_BUYSTOP //Buy stop Order (pendente)

OrderType() == OP_SELLSTOP //Sell stop Order (pendente)

 

iMAOnArray na EA

Olá, pessoal,

Estou tentando fazer um EMA baseado em cruzamentos de médias móveis em indicadores (por exemplo, CCI, Force, RSI). Entretanto, não consigo entender como declarar um array e executar a função iMAOnArray para fazer variáveis.

Por exemplo, no código abaixo, quero colocar os dados RSI para o gráfico em um buffer e depois utilizar os dados para produzir uma média móvel com a qual acionar operações. O que eu estou fazendo de errado?

Obrigado por qualquer comentário ou sugestão.

outono

duplo RSI[];

ArrayResize(RSI,Barras);

ArraySetAsSeries(RSI,true);

for(int i=Bars; i>=0; i--)

{

RSI = (iRSI(NULL,0,período RSIP,RSIPrice,i)));

}

double Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0);

 

Olá

Alguém tem o madrasta-momento com alerta?

Será um grande indicador, penso eu.

obrigado

saudações!

 

Comércio próximo por nível

Oi, eu gosto de saber como fechar o comércio quando o preço atingiu certo nível. Digamos, 55 pontos acima da linha MA. Eu tentei incluir o MA na parte TakeProfit da OrderSend, mas o testador rejeitou meu EA com: mensagem de erro "invalid something". Obrigado.

 
Sendra:
Olá, eu gosto de saber como fechar o comércio quando o preço atingiu certo nível. Digamos, 55 ponto acima da linha MA. Eu tentei incluir o MA na parte TakeProfit da OrderSend, mas o testador rejeitou meu EA com: mensagem de erro "invalid something". Obrigado.

Antes de mais nada, obtenha a média móvel:

duplo MA = iMA(...);

depois calcule o TakeProfit desta forma:

duplo TP = MA + (55*Ponto); // ou TP = MA-(55*Ponto); no caso de Venda.

 

Funciona!!

Obrigado, CodersGuru. Funciona mesmo. Mas também me faz pensar: se eu posso me mover para um certo nível que não seja estático, eu posso fazer o mesmo com meu stoploss (sem usar trailingstop).

E eu tentei.

Funcionou, com um mau resultado. Portanto, acho que tenho a ver com o trailingstop. Isso é correto? (Cuidado, eu ainda não aprendi a codificar o trailingstop).

Obrigado.

 

Parada interna de rastreamento

Sendra:
Obrigado, CodersGuru. Funciona mesmo. Mas também me faz pensar: se eu posso me mover para um certo nível que não seja estático, eu posso fazer o mesmo com meu stoploss (sem usar o trailingstop).

E eu tentei.

Funcionou, com um mau resultado. Portanto, acho que tenho a ver com o trailingstop. Isso é correto? (Cuidado, eu ainda não aprendi a codificar trailingstop).

obrigado.

Eu fiz algo assim para uma parada interna de trailingstop: (este é um exemplo para uma longa ordem) Parece funcionar. Espero que isto ajude.

Parada_de_trailing interna externa=20;

Trailing_Long_ estático duplo;

bool Read_Long_Open;

se (Insira sua decisão de entrada longa)

{

Função Orderend() aqui

Read_Long_Open=verdadeiro;

}

se (Read_Long_Open===verdadeiro)

{

if(OrderSelect(T_1L, SELECT_BY_TICKET)==verdadeiro)

{

Trailing_Long=OrderOpenPrice();

Impressão(" Trailing_Long =",Trailing_Long);

Read_Long_Open=false;

}

}

se (Read_Long_Open===false)

{

se (Trailing_Long < Bid)

{

Trailing_Long=Bid;

Print("Trailing_Long =",Trailing_Long =",Trailing_Long);

}

}

if (Licitação <= Trailing_Long-Trailing_Stop*Point)

{

Função OrderClose()

Imprimir ("Pedido Longo Fechado");

}

 

Obrigado

Olá, Wolfe,

Eu tentei seu código, mas obtive mais resultados negativos. Por favor, não pergunte por que, porque eu também não sei a resposta. Mas atenção, ainda estou em fase de atropelamento e fuga na codificação. Mas obrigado de qualquer forma, seu código me deu inspiração suficiente para escrever meu próprio código com resultado suficiente para mim.

Portanto, obrigado.

Razão: