Criar um EA a partir de um Indicador já existente

Specifiche

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

Con risposta

1
Sviluppatore 1
Valutazioni
(46)
Progetti
80
13%
Arbitraggio
11
0% / 91%
In ritardo
51
64%
Gratuito
2
Sviluppatore 2
Valutazioni
(2464)
Progetti
3102
66%
Arbitraggio
77
48% / 14%
In ritardo
340
11%
In elaborazione
3
Sviluppatore 3
Valutazioni
(362)
Progetti
496
39%
Arbitraggio
27
56% / 4%
In ritardo
53
11%
Gratuito
4
Sviluppatore 4
Valutazioni
(564)
Progetti
933
47%
Arbitraggio
303
59% / 25%
In ritardo
125
13%
In elaborazione
5
Sviluppatore 5
Valutazioni
(186)
Progetti
205
26%
Arbitraggio
12
25% / 58%
In ritardo
39
19%
Gratuito
6
Sviluppatore 6
Valutazioni
(2125)
Progetti
2696
62%
Arbitraggio
116
45% / 25%
In ritardo
420
16%
In elaborazione
7
Sviluppatore 7
Valutazioni
(197)
Progetti
320
35%
Arbitraggio
64
13% / 56%
In ritardo
83
26%
Gratuito
8
Sviluppatore 8
Valutazioni
(8)
Progetti
16
0%
Arbitraggio
9
0% / 89%
In ritardo
8
50%
Gratuito
9
Sviluppatore 9
Valutazioni
Progetti
0
0%
Arbitraggio
0
In ritardo
0
Gratuito
Ordini simili
Terms of Reference for Indicator Development 1. Objective To develop a signal indicator for binary options in MQL4 or MQL5 that identifies entry and exit points on the chart based on market trends and patterns shown in the videos on the Trendify Binary Options YouTube channel . This channel provides practical examples of the expected behavior and functionality of the indicator. 2. Main References The primary
OLÁ. EU PRECISO CRIAR UM ROBO PARA TRABALHAR COM OS DADOS HISTORICOS NO MT5, ELE DEVE PEGAR OS TICKS, DADOS DE UM DIA ESPECIFICADO, COM HORA E MINUTO. E SIMULAR A ABERTURA DE UMA ORDEM PENDENTE PARA ME INFORMAR SE OUVE SLIPPAGE E QUAL FOI O VALOR EM PIPS DA SLIPPAGE NAQUELA DATA, MINUTO E SEGUNDO ESPECIFICADO. APENAS ISSO. QUERO TRABALHAR COM DADOS PASSADOS (HISTORICOS)
STRATEGY DEFINITION: This setup is based on the volatility of the "X" minute chart, combining the alignment of averages from different timeframes! It considers the alignment of the averages for the continuity of direction, providing excellent movements. TRADE DYNAMICS TYPE OF AVERAGES: EXPONENTIAL. TIMEFRAME: 1 MINUTE TRADE DYNAMICS: WHEN THE "A" EXP MOVING AVERAGE OF "X" MINUTES + "B" EXP OF "X" MINUTES + "C" EXP

Informazioni sul progetto

Budget
30 - 200 USD
Per lo sviluppatore
27 - 180 USD
Scadenze
da 1 a 30 giorno(i)