Como codificar? - página 221

 

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);

}

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

 
increase:
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

Arquivos anexados:
afstar.mq4  6 kb
 

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

}

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

Arquivos anexados:
q.gif  10 kb
 

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...

int start()

{

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...

int start()

{

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.

 
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!?

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);

}

Arquivos anexados:
histoind.mq4  3 kb
 

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