Tudo sobre Programação, com código fonte exemplo - página 7

 
Vitor Pereira:
Meu indicador não aparece no testador de estrategia, o que fazer??

 O executável (.ex5) deve obrigatoriamente ficar pasta ou subpasta de //MQL5/Indicators

 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Order close

danielg13, 2019.06.22 20:47

O meu envio de abertura está com abaixo, mas a função de fechar a ordem ORDER_TYPE_SELL ele não identifica a minha ordem de abertura e fecha...ele cria outras  de envio como sell

requisicao.action       = TRADE_ACTION_DEAL;                            
   requisicao.magic        = magic_number;                                 
   requisicao.symbol       = _Symbol;                                      
   requisicao.volume       = num_lots;                                     
   requisicao.price        = SymbolInfoDouble(_Symbol , SYMBOL_ASK);       
   requisicao.type         = ORDER_TYPE_BUY;                               
   requisicao.type_filling = ORDER_FILLING_FOK;                            
   requisicao.sl           = 0;
   requisicao.tp           = 0;
   requisicao.deviation    = 50;                                           
   OrderSend(requisicao,resposta);
//---

 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

ERRO....failed....EURUSD [Unsupported filling mode]

danielg13, 2019.06.20 02:30

double num_lots                      =1;            // Número de Lotes
double TK                                  =1000;            // Take Profit
double SL                                  =1000;            // Stop Loss


   MqlTradeRequest   requisicao;    
   MqlTradeResult    resposta;      

   ZeroMemory(requisicao);
   ZeroMemory(resposta);

   requisicao.action       = TRADE_ACTION_DEAL;                            
   requisicao.magic        = magic_number;                                 
   requisicao.symbol       = _Symbol;                                      
   requisicao.volume       = num_lots;                                     
   requisicao.price        = SymbolInfoDouble(_Symbol , SYMBOL_ASK);       
   requisicao.type         = ORDER_TYPE_BUY;                               
   requisicao.type_filling = ORDER_FILLING_FOK;                            
   requisicao.sl           = 0;
   requisicao.tp           = 0;
   requisicao.deviation    = 50;                                           
   OrderSend(requisicao,resposta);
//---

   if (resposta.retcode == TRADE_RETCODE_DONE || resposta.retcode == TRADE_RETCODE_PLACED){
      requisicao.action=TRADE_ACTION_SLTP;
      
      double PosicaoPRecoAbertura = PositionGetDouble(POSITION_PRICE_OPEN);
      if (SL>0) requisicao.sl = PosicaoPRecoAbertura - (SL * _Point);
      if (TK>0) requisicao.tp = PosicaoPRecoAbertura + (TK * _Point);
         
      if (requisicao.sl>0 && requisicao.tp>0) OrderSend(requisicao,resposta);
         LiberadoParaBuy  = true;
         LiberadoParaSell =  false;      
    
   }


Pode me ajuda a resolver , obrigado.

 
Boa noite pessoal, alquem tem algum código para contar as velas em grupos de 5 em 5 ou 4 em 4 e de o sinal de entrada para proxima vela a favor da tendencia da anterior, e que fique em loop. to tentando mas ta dificil. para MT4.
 

Bom Dia!

Eu estou desenvolvendo um EA com base em uma análise que eu já faço em Excel. cheguei em uma parte dele agora que estou precisando de ajuda. Essa parte terá que fazer uma analise nas ordens já fechada dentro de um período estipulado e calcular ordem a ordem qual foi o máximo rebaixamento em pontos e também o máximo ganho em pontos que essa ordem atingiu. Ao final somar todos esses valores para o período e retorna o resultado.

 
PauloVasques:

Bom Dia!

Eu estou desenvolvendo um EA com base em uma análise que eu já faço em Excel. cheguei em uma parte dele agora que estou precisando de ajuda. Essa parte terá que fazer uma analise nas ordens já fechada dentro de um período estipulado e calcular ordem a ordem qual foi o máximo rebaixamento em pontos e também o máximo ganho em pontos que essa ordem atingiu. Ao final somar todos esses valores para o período e retorna o resultado.

Você não deixa claro onde precisa de ajuda. Sugiro que comece lendo esta documentação.

 
Jorge Fazolo:
Boa noite pessoal, alquem tem algum código para contar as velas em grupos de 5 em 5 ou 4 em 4 e de o sinal de entrada para proxima vela a favor da tendencia da anterior, e que fique em loop. to tentando mas ta dificil. para MT4.

Oi, não seria o caso de você somente criar uma média móvel com 4 ou 5 períodos?


     if((iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,0)>iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,1))&&
        (iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,1)>iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,2))&&
        (iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,2)>iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,3)))
        { 
                //COLOQUE AQUI SEU CÓDIGO PARA ABRIR OPERAÇÃO DE COMPRA
        }

     if((iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,0)<iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,1))&&
        (iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,1)<iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,2))&&
        (iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,2)<iMA(NULL,0,4,0,MODE_SMA,PRICE_CLOSE,3)))
        { 
                //COLOQUE AQUI SEU CÓDIGO PARA ABRIR OPERAÇÃO DE VENDA
        }
 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

MetaTrader 5 - Grupo de usuários de Python

BrenoToledo, 2019.06.26 01:17

Olá, Tentei fazer uma conexão do Python com o MQL5 usando o exemplo do próprio site da MQL5 e ele está dando Falha ... aconteceu com alguém aqui também ?

Alguém sabe o que poderia ser ?

Mensagem de erro:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-12-2140b5219570> in <module>
     18 utc_from = datetime(2019, 4, 1, tzinfo=timezone)
     19 # request 100 000 EURUSD ticks from 01.04.2019 in UTC time zone
---> 20 ticks = MT5CopyTicksFrom("EURUSD", utc_from,1 , MT5_COPY_TICKS_ALL)
     21 print("Ticks received:",len(ticks))
     22 

RuntimeError: IPC call failed

Programação do Site do MQL5.

from datetime import datetime 
from MetaTrader5 import * 
# importamos o módulo pandas para exibir os dados recebidos na forma de uma tabela 
import pandas as pd 
pd.set_option('display.max_columns', 500) # número de colunas 
pd.set_option('display.width', 1500)      # largura máxima da tabela 
# importamos o módulo pytz para trabalhar com o fuso horário 
import pytz 
 
# estabelecemos conexão ao terminal MetaTrader 5
MT5Initialize()
# esperamos que o MetaTrader 5 se conecte ao servidor de negociação
MT5WaitForTerminal()
 
# definimos o fuso horário como UTC
timezone = pytz.timezone("Etc/UTC")
# criamos o objeto datetime no fuso horário UTC para que não seja aplicado o deslocamento do fuso horário local
utc_from = datetime(2019, 4, 1, tzinfo=timezone)
# solicitamos 100 000 ticks de EURUSD a partir de 04/01/2019 no fuso horário UTC
ticks = MT5CopyTicksFrom("EURUSD", utc_from, 100000, MT5_COPY_TICKS_ALL)
print("Ticks recebidos:",len(ticks))
 
# concluímos a conexão ao terminal MetaTrader 5
MT5Shutdown()
# exibimos cada tick numa nova linha
print("Exibimos os ticks recebidos como são") 
count = 0
for tick in ticks:
    print(tick)
    if(count >= 10):
        break
 
# a partir dos dados recebidos criamos o DataFrame
ticks_frame = pd.DataFrame(list(ticks), 
                           columns=['time', 'bid', 'ask', 'last', 'volume', 'flags'])
# exibimos dados
print("\nExibimos o dataframe com ticks")
print(ticks_frame.head(10))  # notamos que Python mostra o tempo dos ticks no fuso horário local com deslocamento
 
# para o computador local, obtemos o deslocamento da hora UTC
UTC_OFFSET_TIMEDELTA = datetime.utcnow() - datetime.now()
 
# criamos uma função simples que diretamente corrija o deslocamento
def local_to_utc(dt):
    return dt + UTC_OFFSET_TIMEDELTA
 
# implementamos o deslocamento para a coluna time no dataframe ticks_frame
ticks_frame['time'] = ticks_frame.apply(lambda tick: local_to_utc(tick['time']), axis=1)
 
# mais uma vez imprimimos os dados e conferimos que agora o tempo dos ticks tenha mudado
print("\nExibimos o dataframe com ticks depois de ajustar o tempo")
print(ticks_frame.head(10)) 

Segue o Link da onde encontrei o Código ... 

https://www.mql5.com/pt/docs/integration/python_metatrader5/mt5copyticksfrom_py


 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Erro 'array out of range'

Rogerio Giannetti Torres, 2019.06.23 20:15

   double CompraBuffer[],VendaBuffer[];
   
   int bars=Bars(_Symbol,_Period);

   ArrayResize(CompraBuffer,bars);
   ArrayResize(VendaBuffer,bars);

   for(int i=0;i<bars;i++)
     {
      if(maVla_9[i]!=EMPTY_VALUE && maVal_21[i]!=EMPTY_VALUE)
         CompraBuffer[i]=maVal_9[i]-maVal_21[i];
     }

 

Fórum de negociação, sistemas de negociação automatizados e testes de estratégias de negociação

Padrão Arco-iris

Rogerio Giannetti Torres, 2019.06.10 23:37

Boa noite Alex,

segue uma correção, parece que uma linha foi deletada do código. Aproveitando a oportunidade, não rode em conta REAL esse programa está longe de estar preparado para conta REAL.

double iMAGet(const int handle,const int index)
  {
   double MA[];
   ArraySetAsSeries(MA,true);
//---reset error code
   ResetLastError();

//---fill a part of the iMABuffer array with values from the indicator buffer that has 0 index

   if(CopyBuffer(handle,0,0,2,MA)<=0)

     {
      //---if the copying fails, tell the error code
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      //---quit with zero result - it means that the indicator is considered as not calculated
      return(0.0);
     }
   return(MA[index]);
  }

Razão: