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
Por favor, ajude-me a mover a linha.
--------------------------------------------------------------------------------
O indicador funciona como foi projetado. Alarme sonoro quando o preço toca a linha, mas eu quero expandir sobre isso. Eu quero isto:
Copie o indicador abaixo e faça estas 2 modificações:
modificação nº 1:
criar uma parada de linha1(já está lá) e mover a linha para onde estiver minha parada de perda se eu não tiver uma parada de perda definida, mover a linha 500 pips para evitar que o alarme seja ativado.
modificação nº 2:
Criar uma linha takeprofit1(isto não está no código) e mover a linha para onde quer que minha stop loss esteja se eu não tiver uma stop loss definida, mover a linha a 502 pips de distância para evitar que o alarme seja ativado. Use também um alerta sonoro diferente.
Basicamente, o indicador estará verificando qual é o meu stop loss e o take profit e se o stop loss e o take profit não estiverem configurados, moverá as linhas a 500.502 pips de distância.
Assim, quando o mercado atingir meu lucro ou stop loss, o som me avisará quando não estiver olhando para o metatrader ou tiver a janela minimizada, e eu posso voltar atrás, vejo que outra configuração posso ter.
Muito obrigado por sua ajuda, irmão.
//+------------------------------------------------------------------+
//| HLine Alert.mq4 |
//+------------------------------------------------------------------+
#direitos de propriedade intelectual "".
#janela_do_cartão_indicador de propriedade
fio externo LineName="Stoploss1";
cor externa LineColor=Red;
Externo int LineStyle=STYLE_SOLID;
extern int AlertPipRange=1;
extern string AlertWav="Alert2.wav";
//+------------------------------------------------------------------+
//| Função de inicialização do indicador personalizado |
//+------------------------------------------------------------------+
int init()
{
//---- indicadores
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de desinicialização de indicador personalizada |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| Função de iteração de indicador personalizada |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
ObjectCreate(LineName, OBJ_HLINE, 0, 0, Bid);
ObjectSet(LineName, OBJPROP_STYLE, LineStyle);
ObjectSet(LineName, OBJPROP_WIDTH, 2);
ObjectSet(LineName, OBJPROP_COLOR, LineColor);
double val = ObjectGet( LineName, OBJPROP_PRICE1);
if (Bid-AlertPipRange*Point = val) PlaySound(AlertWav);
//----
//----
retorno(0);
}
//+--------------------------------------------------------------
Aqui está uma versão MTF que eu fiz para você com alerta
Olá Aumento...
...Descarreguei seu indicador (com alerta), eu o consertei...porque...tenho um pequeno erro...
uma vez que a seta para cima mostra etiqueta para baixo e viceversa...
então eu saberia como fundir ambos em um só...e como definir enviar alerta para
e-mail em todos os TF's.
do que você com antecedência
por favor eu preciso de ajuda
por favor, qualquer um pode me ajudar a escrever códigos que eu queira desenvolver um robô para uma estratégia de escalpe que eu descobri
Gente,
aqui está um código simples para alerta de travessia e fechamento em média móvel, conforme figura em anexo,
Acho que há algo errado com a declaração de "se", por favor, revise,
obrigado antecipadamente.
//+------------------------------------------------------------------+
#property copyright "Non"
#property link "non"
#property indicator_chart_window
extern int Time_Frame = PERIOD_M5;
extern int MA_Period = 20;
extern int MA_Method = MODE_SMA;
extern int MA_applied_to = PRICE_CLOSE;
extern bool Enabled = true;
extern int WhatCorner=2;
int PrevAlertTime=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectDelete("Alart_Condition");
ObjectDelete("Alart_Setup");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int BarsCount=IndicatorCounted();
if (Enabled == false)
{
string Alart_Condition = "Alart Disabled";
ObjectCreate("Alart_Condition", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Alart_Condition", Alart_Condition , 12, "Comic Sans MS", Red);
ObjectSet("Alart_Condition", OBJPROP_CORNER, WhatCorner);
ObjectSet("Alart_Condition", OBJPROP_XDISTANCE, 1);
ObjectSet("Alart_Condition", OBJPROP_YDISTANCE, 1);
return (0);
}
// if (!Enabled) return (0);
if (Enabled == true)
{
string Alart_Setup = (GetMethodText1(MA_Method)+ (DoubleToStr(MA_Period,0))+")"+ GetMethodText(MA_applied_to)) ;
ObjectCreate("Alart_Setup", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Alart_Setup", Alart_Setup , 12, "Comic Sans MS", Red);
ObjectSet("Alart_Setup", OBJPROP_CORNER, WhatCorner);
ObjectSet("Alart_Setup", OBJPROP_XDISTANCE, 1);
ObjectSet("Alart_Setup", OBJPROP_YDISTANCE, 1);
}
// if close of i < iMA && iMA < close of i-1 && last time alart .. then sell
for (int i=Bars;i>=1;i--)
{
double m = iMA(NULL,Time_Frame,MA_Period,0,MA_Method,MA_applied_to,i);
if ((CurTime() - PrevAlertTime > 20) && Close < m && m < Close)
{
Alert ("Sell " + Symbol());
PlaySound ("alert.wav");
PrevAlertTime=CurTime();
return(-1);
}
// if close of i-1 < iMA && iMA < close of i && last time alart .. then buy
if ( (CurTime() - PrevAlertTime > 20) && Close < m && m < Close )
{
Alert ("Buy "+ Symbol());
PlaySound ("alert.wav");
PrevAlertTime=CurTime();
return(-1);
}
}
//----
//----
return(0);
}
string GetMethodText1(int MA_Method)
{ switch(MA_Method)
{
case 0 : return("SMA("); break;
case 1 : return("EMA("); break;
case 2 : return("SMMA("); break;
case 3 : return("LWMA("); break; }
}
string GetMethodText(int MA_applied_to)
{
switch(MA_applied_to)
{case 0: return("C"); break; // Close
case 1: return("O"); break; // Open
case 2: return("H"); break; // High
case 3: return("L"); break; } // Low
}
//+------------
Ajuda com o roteiro
Hi...
Sou completamente novato em codificar isto, então eu estava pensando se alguém poderia dizer o que há de errado com este roteiro...
Continuo recebendo um erro 4109 ERR_TRADE_NOT_ALLOWED... a mensagem em MT4 é "Preço inválido 1,48770000 para a função OrderSend" Mas não consigo entender por que... Então, por favor, me ajude aqui...
{
double High1;
double Low1;
double TP = 50;
double SL = 50;
int Lots = (((AccountBalance()/15)/50)/10);
//----
{
High1 = iHigh(NULL, PERIOD_D1, 0);
Low1 = iLow(NULL, PERIOD_D1, 0);
double Buy = High1*Point;
double Sell= Low1*Point;
Print(Buy);
Print(Sell);
}
//----
{
OrderSend(Symbol(),OP_BUYSTOP,Lots,Buy,NULL,Ask-SL*Point,Ask+TP*Point);
OrderSend(Symbol(),OP_SELLSTOP,Lots,Sell,3,Bid+SL*Point,Bid-TP*Point);
Alert (GetLastError());
}
//----
return(0);
}Ajuda
Pelo menos agora percebi que meu comércio não permitia problemas.
Mas agora continuo recebendo um erro de"parada inválida"... alguém que pode me iluminar aqui... Não entendo bem o que está errado aqui...
Obrigado antecipadamente...
{
double High1;
double Low1;
int TP = 50;
int SL = 50;
int Lots = (((AccountBalance()/15)/50)/10);
//----
{
High1 = iHigh(NULL, PERIOD_D1, 0);
Low1 = iLow(NULL, PERIOD_D1, 0);
Print(High1);
Print(Low1);
}
//----
{
OrderSend(Symbol(),OP_BUYSTOP,Lots,High1,NULL,Ask-SL*Point,Ask+TP*Point);
OrderSend(Symbol(),OP_SELLSTOP,Lots,Low1,NULL,Bid+SL*Point,Bid-TP*Point);
Alert (GetLastError());
}
//----
return(0);
}Restringir o número de comércios a....
Estou tentando adicionar código a uma EA que restringirá o número de negócios que ela faz por dia a apenas dois(2). Apenas UM comércio longo e UM comércio curto por dia. Este é o código que eu tenho até agora, mas em um teste posterior ele não está funcionando.
Você pode me ajudar!?
datetime LongTrade=0;
datetime ShortTrade=0;
if(countOrders(OP_BUY,magic)==0 && LongTrade!=iTime(NULL,PERIOD_D1,0))
{
OrderSend(Symbol(),OP_BUY,lots,Ask,0,Bid-stop_loss*Point,lTP,comment + "lTP",magic);
LongTrade=iTime(NULL,PERIOD_D1,0);
return(0);
}
--------------------
if(countOrders(OP_SELL,magic)==0 && ShortTrade!=iTime(NULL,PERIOD_D1,0))
{
OrderSend(Symbol(),OP_SELL,lots,Bid,0,Ask+stop_loss*Point,sTP,comment + "sTP",magic);
ShortTrade=iTime(NULL,PERIOD_D1,0);
return(0);
}
OBRIGADO.
Estou tentando adicionar código a um EA que restringirá o número de negócios que ele faz por dia a apenas dois(2). Apenas UM comércio longo e UM comércio curto por dia. Este é o código que eu tenho até agora, mas em um teste posterior ele não está funcionando. Você pode me ajudar!?
Substitua
data/hora LongTrade=0;
data/hora ShortTrade=0;
para
data/hora estática LongTrade=0;
data/hora estática ShortTrade=0;
Ajuda com este EA & Indicador Por favor
Sou um novato. Oi, como você pode ver, não estou tendo sorte com isso.
Eu tenho este Indicador (Histograma/ olha para trás 300 barras, mas ele re-pinta de maneira a muito. Alguém pode sugerir um Indicador que ainda não faça o mesmo trabalho, se você puder ajudar, isso seria fantástico?
Cumprimentos ao CharlieC
histoind.mq4
#janela_do_cartão_indicador de propriedade
#property indicator_buffers 2
#indicador de propriedade_cores1 Vermelho
#indicador de propriedade_color2 LawnGreen
string gs_unused_124 = "";
bool gi_unused_132 = FALSE;
extern int RISK = 3;
Externo int CountBars = 300;
double g_ibuf_144[];
duplo g_ibuf_148[];
int init() {
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_ARROW);
SetIndexArrow(0, 234);
SetIndexStyle(1, DRAW_ARROW);
SetIndexArrow(1, 233);
SetIndexBuffer(0, g_ibuf_144);
SetIndexBuffer(1, g_ibuf_148); SetIndexBuffer(1, g_ibuf_148);
Comentário();
return (0);
}
int start() {
int li_12;
double ld_52;
double ld_60;
double ld_68; double ld_68;
double ld_76; double ld_76;
double ld_84;
double ld_92; double ld_92;
double ld_100;
double lda_108[50000];
SetIndexDrawBegin(0, Barras - Barras Contagem + 11 + 1);
SetIndexDrawBegin(1, Barras - Barras - Barras Contagem + 11 + 1);
int l_ind_counted_8 = IndicatorCounted();
int li_20 = RISCO * 2 + 3;
double ld_36 = RISK + 67;
double ld_44 = 33 - RISK;
int l_period_24 = li_20;
se (Bars <= 12) retornar (0);
if (l_ind_counted_8 < 12) {
for (int li_0 = 1; li_0 <= 0; li_0++) g_ibuf_144[CountBars - li_0] = 0,0;
for (li_0 = 1; li_0 <= 0; li_0++) g_ibuf_148[CountBars - li_0] = 0,0;
}
for (int li_4 = CountBars - 11 - 1; li_4 >= 0; li_4--) {
li_12 = li_4;
ld_76 = 0,0;
ld_84 = 0,0;
for (li_12 = li_4; li_12 <= li_4 + 9; li_12++) ld_84 += MathAbs(High[li_12] - Low[li_12]);
ld_76 = ld_84 / 10.0;
li_12 = li_4;
ld_68 = 0;
enquanto (li_12 < li_4 + 9 && ld_68 < 1.0) {
if (MathAbs(Open[li_12] - (Close[li_12 + 1])) >= 2.0 * ld_76) ld_68 += 1.0;
li_12++;
}
if (ld_68 >= 1.0) ld_92 = li_12;
senão ld_92 = -1;
li_12 = li_4;
ld_68 = 0;
enquanto (li_12 < li_4 + 6 && ld_68 < 1.0) {
if (MathAbs(Close[li_12 + 3] - Close[li_12]) >= 4.6 * ld_76) ld_68 += 1.0;
li_12++;
}
if (ld_68 >= 1.0) ld_100 = li_12;
senão ld_100 = -1;
if (ld_92 > -1.0) l_period_24 = 3;
else l_period_24 = li_20;
if (ld_100 > -1.0) l_period_24 = 4;
senão l_period_24 = li_20;
ld_52 = 100 - MathAbs(iWPR(NULL, 0, l_period_24, li_4));
lda_108[li_4] = ld_52;
g_ibuf_144[li_4] = 0;
g_ibuf_148[li_4] = 0;
ld_60 = 0;
if (ld_52 < ld_44) {
for (int li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {
}
if (lda_108[li_4 + li_16] > ld_36) {
ld_60 = Alto[li_4] + ld_76 / 2.0;
g_ibuf_144[li_4] = ld_60;
}
}
se (ld_52 > ld_36) {
for (li_16 = 1; lda_108[li_4 + li_16] >= ld_44 && lda_108[li_4 + li_16] <= ld_36; li_16++) {
}
if (lda_108[li_4 + li_16] < ld_44) {
ld_60 = Low[li_4] - ld_76 / 2.0;
g_ibuf_148[li_4] = ld_60;
}
}
}
retorno (0);
}
CharlieC
Já que estou nisso, algum de vocês pode colocar um alerta sonoro (Darn Cheeky Ay, para um novato) isso faz você fazer coisas engraçadas
Desculpe
CharlieC