Como codificar? - página 60

 

agradece Kalenzo,

Eu tentei com OP_BUYLIMIT, mas não funciona.

Vou tentar com OP_BUYSTOP.

 

pergunta de codificação rápida

Como se coloca uma linha horizontal na tela no valor médio (de todos os preços de fechamento)? Existe um código específico para isso?

 

simples fuga EA

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

//| SimpleBreakoutEA.mq4 |

//| |

//| |

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

#property copyright "jjk2"

#property link ""

//---- input parameters

extern int ____TIME_RANGE____;

extern int TimeRange = 1; // # of Hours to look back from TimeEnd. ex) if breakout is @ 22:00 GMT to 23:00 GMT. Total TimeRange to lookback is 8 hrs.

extern int TimeBegin = 22;

extern int TimeEnd = 23;

extern int CancelTime = 20; // ALL REMAINING ORDERS WILL BE CANCELED AT THIS INDICATED TIME.

extern int ______FILTERS______;

extern int TriggerFilter = 0;

extern bool AllowBreakEven = True;

extern int ______ORDERS______;

extern double Lots = 0.1;

extern int StopLoss = 50;

extern int TakeProfit = 100;

extern int Slippage = 2;

extern int MagicNumber = 23423;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

// OPEN ORDERS @ HIGH/LOW from TIMEBEGIN to TimeEND

if (Hour() >= TimeBegin-1 && Hour() >= TimeEnd)

{

int HH = iHighest(NULL, 0, MODE_HIGH,TimeRange,0);

int LL = iLowest(NULL, 0, MODE_LOW,TimeRange,0);

}

double SL_High = Ask - (StopLoss * Point);

double SL_Low = Bid + (StopLoss*Point);

double TP_High = Ask + (TakeProfit*Point);

double TP_Low = Bid - (TakeProfit*Point);

if ( Ask > HH + TriggerFilter) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL_High, TP_High, "Breakout Buy", MagicNumber, NULL, Blue);

if ( Bid < LL + TriggerFilter) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL_Low, TP_Low, "Breakout Sell", MagicNumber, NULL, Red);

// MOVE SL @ BreakEven if allowed. MarketPrice distance Open Price > stop*point, then stop must equal to MarketPrice - Stop*point as new stoploss.

int total = 0;

if ( AllowBreakEven == True )

{

for(total = OrdersTotal() - 1; total >= 0; total--)

{

OrderSelect(total, SELECT_BY_POS);

if ( Bid - OrderOpenPrice() > SL_High*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - SL_High*Point, OrderTakeProfit(),0, CLR_NONE);

if ( OrderOpenPrice() - Ask > SL_Low*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + SL_Low*Point , OrderTakeProfit(),0, CLR_NONE);

}

}

return(0);

}

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

por alguma razão não está funcionando.... ninguém sabe por quê?

 
 

Como transformar o indicador em EA?

Olá, posso saber como transformar um indicador em EA?

Muitos indicadores têm o sinal da seta quando se trata de certas condições e eu gostaria de testá-los com a EA.

Eu gostaria que a EA tomasse o comércio de acordo com a seta formada.

Alguém pode me ajudar? Obrigado.

 

Este está de acordo com o sinal de seta

https://www.mql5.com/en/forum/173249/page51

 

O que fazer para que o indicador anexado passe para a EA?

Alguém pode ajudar? Obrigado.

 
Arquivos anexados:
envelopes.mq4  3 kb
 

Estrutura do código

Hi,

Sou novo na Metatrader, mas muito experiente em programação. Criei alguns exemplos de Expert Advisors e alguns Indicadores um pouco complicados na MT. O que não está claro é como estruturar uma EA bastante complicada. Eu quero que a EA chame algumas funções de "sinal" para verificar se há diferentes condições de configuração.

Como eu devo codificar estas funções?

1. Como funções "em linha" no EA

2. Como indicadores "separados" que retornam um valor em vez de escrever na tela?

3. alguma outra função "separada" para chamar como chamar o iMA

Se eu escolher a alternativa 1, a função inline no EA pode passar pelas últimas 200 barras usando Close e chamar o iMA?

A alternativa 2 é OK? Ao codificar um indicador, todas as barras "disponíveis" são processadas, o que obviamente não é necessário para o EA.

A alternativa 3 para mim parece ser a escolha lógica, mas não tenho certeza de como estruturá-la para que funcione no backtesting e o que eu preciso passar para ela e ao que a função tem acesso por padrão, como por exemplo Fechar

Como exemplo do que eu preciso estabelecer na função "sinal" é qual é a tendência atual e quando ela começou. Codifiquei-o em um indicador para saber como fazer o código atual.

Grato por qualquer conselho.

Ingvar

 
ingvar_e:
Hi,

Sou novo na Metatrader, mas muito experiente em programação. Criei alguns exemplos de Expert Advisors e alguns Indicadores um pouco complicados na MT. O que não está claro é como estruturar uma EA bastante complicada. Eu quero que a EA chame algumas funções de "sinal" para verificar se há diferentes condições de configuração.

Como eu devo codificar estas funções?

1. Como funções "em linha" no EA

2. Como indicadores "separados" que retornam um valor em vez de escrever na tela?

3. alguma outra função "separada" para chamar como chamar o iMA

Se eu escolher a alternativa 1, a função inline no EA pode passar pelas últimas 200 barras usando Close e chamar o iMA?

A alternativa 2 é OK? Ao codificar um indicador, todas as barras "disponíveis" são processadas, o que obviamente não é necessário para o EA.

A alternativa 3 para mim parece ser a escolha lógica, mas não tenho certeza de como estruturá-la para que funcione no backtesting e o que eu preciso passar para ela e ao que a função tem acesso por padrão, como por exemplo Fechar

Como exemplo do que eu preciso estabelecer na função "sinal" é qual é a tendência atual e quando ela começou. Codifiquei-o em um indicador para saber como fazer o código atual.

Grato por qualquer conselho.

Ingvar

Provavelmente você já sabe como fazer isso, então desculpe se você sabe.

Média móvel da barra atual:

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

Média móvel de 200 barras atrás.

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,200);

Você pode chamar a média móvel a partir de qualquer barra que você queira de atual para qualquer barra no passado.

Razão: