Criar um EA a partir de um Indicador já existente

명시

Gostaria de criar um EA baseado no indicador listado abaixo de tal forma que a entrada na compra seja realizada quando a média ficar verde e a entrada na venda seja realizada quando a média ficar vermelha.

Em estando comprado ou vendido, quero que o EA inverta a posição caso a média sinalize venda, se eu estiver comprado, ou sinalize compra, se eu estiver vendido.

Preciso também que o EA permita entrada de compra e/ou venda com opção de se colocar automaticamente Stop Loss e Stop Gain.

Preciso também da opção de se delimitar diariamente a hora e minuto de início e a hora e minuto final de operação diária do EA.

Segue abaixo o código do indicador:

//+------------------------------------------------------------------+
//|                                                    tabajara2.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Patrick Corrêa Muniz"
#property version   "1.01"
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_plots   2
//--- plot media
#property indicator_label1  "media"
#property indicator_type1   DRAW_COLOR_LINE
#property indicator_color1  clrRed,clrForestGreen,clrYellow,C'0,0,0',C'0,0,0',C'0,0,0',C'0,0,0',C'0,0,0'
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot candles
#property indicator_label2  "candles"
#property indicator_type2   DRAW_COLOR_CANDLES
#property indicator_color2  clrRed,clrForestGreen,clrBlack,clrGray,C'0,0,0',C'0,0,0',C'0,0,0',C'0,0,0'
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1

//--- indicator buffers
double         mediaBuffer[];
double         mediaColors[];
double         candlesOpenBuffer[];
double         candlesHighBuffer[];
double         candlesLowBuffer[];
double         candlesCloseBuffer[];
double         candlesColors[];
double         mediavalue[];
int            mediaHandle;
input int      PeriodoMedia=20;
input ENUM_MA_METHOD      TipoMedia=MODE_SMA;
//+------------------------------------------------------------------+
//|                      |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,mediaBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,mediaColors,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(2,candlesOpenBuffer,INDICATOR_DATA);
   SetIndexBuffer(3,candlesHighBuffer,INDICATOR_DATA);
   SetIndexBuffer(4,candlesLowBuffer,INDICATOR_DATA);
   SetIndexBuffer(5,candlesCloseBuffer,INDICATOR_DATA);
   SetIndexBuffer(6,candlesColors,INDICATOR_COLOR_INDEX);
   mediaHandle=iMA(_Symbol,_Period,PeriodoMedia,0,TipoMedia,PRICE_CLOSE);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                               |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   int start;
   if(prev_calculated==0)
     {
      start=1;
        }else{
      start=prev_calculated-1;
     }

   CopyBuffer(mediaHandle,0,0,rates_total,mediaBuffer);
   CopyBuffer(mediaHandle,0,0,rates_total,mediavalue);
   for(int i=start; i<rates_total; i++)
     {
      DefineColorMedia(mediavalue,i,close);
      DefineColorCandle(mediavalue,i,close,open,high,low);
     }
   return(rates_total);

  }
//+------------------------------------------------------------------+
//|Colors
//| 0 = Red
//| 1 = Green
//| 2 = yellow                                                                  |
//+------------------------------------------------------------------+
void DefineColorMedia(double &mediavalue[],int index,const double &close[])
  {
   bool fechamentoMaiorQueMediaeMediaAscendente=(close[index]>mediavalue[index] && mediavalue[index]>mediavalue[index-1]);
   bool fechamentoMenorQueMediaeMediaDescendente=(close[index]<mediavalue[index] && mediavalue[index]<mediavalue[index-1]);
   if(fechamentoMaiorQueMediaeMediaAscendente)
     {
      mediaColors[index]=1;
        }else if(fechamentoMenorQueMediaeMediaDescendente) {
      mediaColors[index]=0;
        }else{
      mediaColors[index]=2;
     }
  }
//+------------------------------------------------------------------+
//|Colors
//|0 = Red
//|1 = Green
//|2 = Black
//|3 = Gray                                                                 |
//+------------------------------------------------------------------+
void DefineColorCandle(double &mediavalue[],int index,const double &close[],const double &open[],const double &high[],const double &low[])
  {
   DefineBuffersCandle(index,close,open,high,low);
   bool candleDeForcaMediaAscendente=close[index]>close[index-1] && close[index]>mediavalue[index] && mediavalue[index]>mediavalue[index-1];
   bool candleDeCorrecaoMediaAscendente=close[index]<close[index-1] && close[index]>mediavalue[index] && mediavalue[index]>mediavalue[index-1];
   bool candleDeForcaMediaDescendente=close[index]<close[index-1] && close[index]<mediavalue[index] && mediavalue[index]<mediavalue[index-1];
   bool candleDeCorrecaoMediaDescendente=close[index]>close[index-1] && close[index]<mediavalue[index] && mediavalue[index]<mediavalue[index-1];
   if(candleDeForcaMediaAscendente)
     {
      candlesColors[index]=1;
        }else if(candleDeCorrecaoMediaAscendente){
      candlesColors[index]=2;
        }else if(candleDeForcaMediaDescendente){
      candlesColors[index]=0;
        }else if(candleDeCorrecaoMediaDescendente){
      candlesColors[index]=3;
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DefineBuffersCandle(int index,const double &close[],const double &open[],const double &high[],const double &low[])
  {
   candlesOpenBuffer[index] = open[index];
   candlesHighBuffer[index] = high[index];
   candlesLowBuffer[index]=low[index];
   candlesCloseBuffer[index]=close[index];
  }
//+------------------------------------------------------------------+

응답함

1
개발자 1
등급
(46)
프로젝트
80
13%
중재
11
0% / 91%
기한 초과
51
64%
무료
2
개발자 2
등급
(2443)
프로젝트
3080
66%
중재
77
48% / 14%
기한 초과
340
11%
무료
3
개발자 3
등급
(362)
프로젝트
496
39%
중재
27
56% / 4%
기한 초과
53
11%
무료
4
개발자 4
등급
(564)
프로젝트
933
47%
중재
302
59% / 25%
기한 초과
125
13%
로드됨
5
개발자 5
등급
(186)
프로젝트
205
26%
중재
12
25% / 58%
기한 초과
39
19%
무료
6
개발자 6
등급
(2105)
프로젝트
2676
62%
중재
114
46% / 25%
기한 초과
420
16%
로드됨
7
개발자 7
등급
(197)
프로젝트
320
35%
중재
64
13% / 56%
기한 초과
83
26%
무료
8
개발자 8
등급
(8)
프로젝트
16
0%
중재
9
0% / 89%
기한 초과
8
50%
무료
9
개발자 9
등급
프로젝트
0
0%
중재
0
기한 초과
0
무료
비슷한 주문
DINÂMICA OPERACIONAL TIPOS DE MÉDIAS: EXPONENCIAIS. TEMPO GRÁFICO: “X” MINUTOS DINÂMICA DO TRADE: QUANDO AS MÉDIAS “A”EXP DO “X” MINUTOS + “B”EXP DO “X” MINUTOS + “C” EXP E “D” ARITMETICA DO “X” MINUTOS ESTÃO ALINHADAS NA MESMA DIREÇÃO NESTA ORDEM TANTO QUANTO PARA QUEDA, QUANTO PARA ALTA. ***O ALINHAMENTO DA “C”EXP E “D” ARITMETICA DO “X” MINUTOS NÃO É RELEVANTE SE UMA ESTÁ NA FRENTE OU ATRAS DA OUTRA EM
Olá ! Preciso de orçamentos para criar um combiner (indicador que combina indicadores e estratégias) para usar no meta trader 5! Ele precisa ter as seguintes coisas : 1. Exibir um painel de backtest com informações de acerto e erro onde eu possa selecionar se deve mostrar ou não o painel e até quantos martingales ele deve mostrar. 2. Ter um campo para seleção de quantidade de velas para backtest 3. Ter a opção de
Preciso corrigir os alertas do meu indicador SMC Order Blocks, que é um indicador personalizado criado para mim há algum tempo. Este indicador personalizado já tem vários tipos de alertas incorporados, mas preciso corrigir alguns específicos, mantendo os outros alertas existentes sem alterações, já que esses não apresentam erros. O alerta é para um padrão específico de Order Blocks. Este indicador fornece
olá. preciso de um expert bem especifico. ele deve ter as funcionalidades basicas, stop loss, take profit, breakevean, stop movel. com opção de configurar em pips. ele deve funcionar em qualquer ativo forex. ele deve operar de segunda a sexta, no horario especificado. e deve operar somente day trade. ou seja encerrar as ordem no final do dia. ele deve operar forex. e deve ter a opção de mudar o tipo de ponto para
Esse robo tem 5 mil linhas mas sao codigos bem basico. Eu sou desenvolvedor mas nao consigo agora converte pois estou em viaje. Preciso de alguem serio para converte esse simples robo mql4 para mql5 num preço bom
Hello I need a developer to add a news filter to my code, and also convert this code to MT5 (MQ5). The code is simple. Attached a example of a simple news filter

프로젝트 정보

예산
30 - 200 USD
개발자에게
27 - 180 USD
기한
에서 1  30 일