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.
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...
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.
ForExTyro: 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!?
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?
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
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