Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Michel,
Muito obrigado por reservar um tempo para olhar o código e responder. Às vezes tudo o que é preciso é outro par de olhos! Você estava certo de que o erro era a divisão por 0 com uma barra em falta. Tudo isso foi resolvido agora.
BW
Explicação do código - Ind-Fractals-1
qualquer um pode explicar como os fractais são determinados neste indicador(https://c.mql5.com/forextsd/forum/165/ind-fractals-1.mq4). eu notei que, como os fractais normais, há um atraso entre o ponto de virada e o fractal real sendo traçado, mas eu gostaria de saber quanto tempo esse atraso é longo. eu acho que um fractal de 15min é traçado 40-50 barras de 1min depois que o ponto é estabelecido. eu também notei que a cor dos fractais muda (embora sua posição não mude), pois cerca de 15min de fractais tornam-se fractais de 1hr.
como codificar o seguinte?
Olá a todos,
Sou um recém-chegado ao metatrader 4. Não sei muito sobre codificação no mt4.
quero que a metatrader dê alerta quando
1. Média móvel simples de 30 períodos sobe acima da média móvel simples de 60 períodos.
2. 30 período média móvel simples cai abaixo da média móvel simples período 60 período média móvel simples.
Alguém pode me ajudar a postar o código aqui?
Muito obrigado.
Olá a todos,
Sou um recém-chegado ao Metatrader 4. Não sei muito sobre codificação no mt4.
quero que a metatrader dê alerta quando
1. Média móvel simples de 30 períodos sobe acima da média móvel simples de 60 períodos.
2. 30 período média móvel simples cai abaixo da média móvel simples período 60 período média móvel simples.
Alguém pode me ajudar a postar o código aqui?
muito obrigadoPor que não usar isto? coloque em seu MA e escolha 0 para simples, lhe dá linhas e flechas
o lote~~~
Por que não usar isto? coloque em seu MA e escolha 0 para simples, dá-lhe linhas e flechas
Olá, gostaria de fazer o sinal subir quando as duas velas limpas tiverem sido concluídas após o cruzamento com antecedência.
pls ajudam a corrigir meu código
Antes de tudo, acredito que este código é muito útil, muitos ppl irão adorá-lo. Portanto, por favor, ajude-me a melhorá-lo.
Na verdade, este código já funciona muito bem. Mas estou apenas cansado do simples popup Alerta, com o símbolo NO Symbol mostrado. Então eu mudei/adicionei algumas linhas para tentar, que é a parte %%%%%%%%%.
Não sei por que, imprimir, comentar... o que quer que seja, nada acontece.
E, estranhamente, você pode ver na parte "----alert----", eu mudei o alerta UPBREAK para outra coisa, mas ele ainda mostra "UP BREAK". ---- Tenho certeza que toda vez que reescrevo o código, eu o compenso, deleto-o do gráfico e o carrego novamente.
Alguma idéia?
#property indicator_chart_window
#import "usr32.dll" // %%%%%%%%%%
int MessageBoxA(int hWnd,string lpText,string lpCaption,int uType); //%%%%%%%%%%
#import //%%%%%%%%%%
int PrevAlertTime = 0;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int i=ObjectsTotal();
int redtotal=0,j,typ1;
double price1,price2,up,down;
color col;
string name1,name2,nameup,namedown,warn1,sym=Symbol();
warn1=sym + "Break Up"; //%%%%%%%%%%
Print(sym); //%%%%%%%%%%%
//----make sure exactly 2 red lines on chart---------------------
for (j=0; j<i; j++)
if(ObjectGet(ObjectName(j),OBJPROP_COLOR)==255 && ObjectType(ObjectName(j))==OBJ_TREND)
{ redtotal++;
if (redtotal==1) name1=ObjectName(j);
if (redtotal==2) name2=ObjectName(j);
}
if (redtotal==2)
{
if(ObjectFind("remind")==0) ObjectDelete("remind");
}
else
{
ObjectCreate("remind",OBJ_LABEL,0,0,0);
ObjectSet("remind", OBJPROP_XDISTANCE,0);
ObjectSet("remind", OBJPROP_YDISTANCE,20);
ObjectSetText("remind", "Keep exactly 2 red lines on chart" ,16,"Times New Roman",Blue);
return(0); // question here: what should I use, 0 or -1 ?
}
//--------decide which line is up / down ---------------------
price1=NormalizeDouble(ObjectGetValueByShift(name1,1),
MarketInfo(Symbol(),MODE_DIGITS));
price2=NormalizeDouble(ObjectGetValueByShift(name2,1),
MarketInfo(Symbol(),MODE_DIGITS));
if (price2>=price1)
{
nameup=name2; namedown=name1;
up=price2; down=price1;
}
else
{ nameup=name1; namedown=name2;
up=price1; down=price2;
}
//-------- alert ----------------------------------------------
if (TimeCurrent() - PrevAlertTime > Period()*60/3)
{
if (Close[1]up)
{ MessageBoxA(NULL,"tupole","11111",0); // %%%%%%%%%%
Print(Symbol()); // %%%%%%%%%%
PrevAlertTime = TimeCurrent();
}
if (Close[1]>=down && Close[0]<down)
{ Alert("DOWN BREAK",Symbol());
PrevAlertTime = TimeCurrent();
}
}
return(0);
}
Encontrei o que está errado:
Normalmente, eu crio ou edito um código por: "Metaeditor---arquivo---novo/aberto..."
Mas eu apenas descobri: depois de anexar ao gráfico, e então algumas mudanças neste código, finalmente mais mudanças não afetam mais o gráfico (certamente eu compilei !)----- mas "Metaeditor--navigator--files---meu código..." fazem ! Isso é estranho, eles deveriam ser o mesmo código!
Ajuda com o código da trilha
{
if (byPips >=5)
{
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
if (OrderType() == OP_BUY) {
//if (Bid > (OrderValue(cnt,VAL_OPENPRICE) + TrailingStop * Point)) {
// OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);
// break;
//}
if (Bid - OrderOpenPrice() > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
if (OrderStopLoss() < Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
} else if (OrderType() == OP_SELL) {
if (OrderOpenPrice() - Ask > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
if ((OrderStopLoss() > Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) ||
(OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
}
}
}
} // proc TrailIt()Esse é o código. Como visto no anexo de uma ordem, ele modificará a parada mas também a modificará na direção errada e eu não posso consertá-la. Eu realmente apreciaria a ajuda para encontrar a solução!!
Tente isto. Parece que você possivelmente está tentando modificar os pedidos com símbolos diferentes. Se assim for, o Bid and Ask estará puxando os dados do mercado apenas do símbolo da janela do gráfico que a EA está anexada. Usando MarketData(símbolo, MODE_BID) é a maneira de obter os dados apropriados.
{
if (byPips >=5)
{
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
if (OrderType() == OP_BUY)
{
if (bid - OrderOpenPrice() >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))
{
if (OrderStopLoss() < bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)|| (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(), bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
else if (OrderType() == OP_SELL)
{
if (OrderOpenPrice() - ask >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))
{
if ((OrderStopLoss() > ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) || (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(),ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
}
}
}
return;
}