Criar um EA a partir de um Indicador já existente

İş Gereklilikleri

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];
  }
//+------------------------------------------------------------------+

Yanıtlandı

1
Geliştirici 1
Derecelendirme
(46)
Projeler
80
13%
Arabuluculuk
11
0% / 91%
Süresi dolmuş
51
64%
Serbest
2
Geliştirici 2
Derecelendirme
(2434)
Projeler
3066
66%
Arabuluculuk
77
48% / 14%
Süresi dolmuş
340
11%
Serbest
3
Geliştirici 3
Derecelendirme
(362)
Projeler
496
39%
Arabuluculuk
27
56% / 4%
Süresi dolmuş
53
11%
Serbest
4
Geliştirici 4
Derecelendirme
(563)
Projeler
932
47%
Arabuluculuk
302
59% / 25%
Süresi dolmuş
124
13%
Meşgul
5
Geliştirici 5
Derecelendirme
(186)
Projeler
205
26%
Arabuluculuk
12
25% / 58%
Süresi dolmuş
39
19%
Serbest
6
Geliştirici 6
Derecelendirme
(2089)
Projeler
2650
61%
Arabuluculuk
114
45% / 25%
Süresi dolmuş
419
16%
Yüklendi
7
Geliştirici 7
Derecelendirme
(196)
Projeler
318
35%
Arabuluculuk
64
13% / 56%
Süresi dolmuş
82
26%
Çalışıyor
8
Geliştirici 8
Derecelendirme
(8)
Projeler
16
0%
Arabuluculuk
9
0% / 89%
Süresi dolmuş
8
50%
Serbest
9
Geliştirici 9
Derecelendirme
Projeler
0
0%
Arabuluculuk
0
Süresi dolmuş
0
Serbest
Benzer siparişler
The text below is long because it is very detailed, but not a very complex project. READ CAREFULLY AND LOOK AT THE IMAGES BEFORE YOU ARE READY TO DO THE WORK. > If you are going to ask questions be clear and specific. > If you have no experience please do not prontifique or be willing to carry out the work. Indicator name: O Burro Paciente. Basic parameters and details: > Indicator averages: MA20 Linear gradient
Preciso de um EA baseado em estratégia pessoal, cruzamento de alligator com media movel usará RSI e Estocatico apenas para ter consciencia dos niveis de sobre compra e sobre venda, nesses sentido um dos gatilhos sera o cruzamento de uma media movel linear e uma media na nuvem de ichimoku
Eu tenho um Instagram referência no mercado de automação pra trading e busco desenvolvedores com possível parceria em sociedade. Já tenho alguns robôs para forex e quero entrar no mercado de futuros na B3 A empresa no seu auge já faturou 217 mil no ano. Preciso de alguem que tenha uma ferramenta pronta e otimizada, para eu poder divulgar
Crie um indicador para mt5 que mostre no gráfico de candlesticks alguns sinais com alguns requisitos: A base do indicador são trêsmédias onde os sinais de compra só serão mostrados acima dessas duas médias, e o de venda abaixo dessas 3 médias: Média móvel de 9 períodos simples calculada aplicada a "median Price (HL/2);Média móvel simples 20 períodos azul com 2 de espessura; média móvel 200periodos vermelha com 3 de
Preciso inserir um Sinal para Cancelar a Estratégia do meu Expert quando Não ocorrer o sinal preço fecha fora preço fecha dentro em um outro tempo gráfico a ser escolhido. Preciso que e crie: Inserir Indicador Banda de Bollinger Inserir Janela para ajustar tempo do indicador Banda de Bollinger inserir estratégia de Cancelar a operação se, NÃO ocorrer fechou fora fechou dentro após ultimo candle no tempo gráfico do

Proje bilgisi

Bütçe
30 - 200 USD
Geliştirici için
27 - 180 USD
Son teslim tarihi
from 1 to 30 gün