extern string LotsProgression="0.1;0.1;0.2;0.3 ... double lots[]; // [0]=0.1 [1]=0.1 [2]=0.2 [3]=0.3 [34]=661.1 int plen; // 35 int init(){ ... }
O que você mencionou está bem. O problema está no resto do código. Eu recebo dois erros (apenas no novo metaeditor).
'init' - function can be declared only in the global scope and 'init' - function already defined and has body
sim, eu entendi e corrigi isso. Agora recebendo erro no código de tempo.
//--- EA PARAMETERS extern int EA_TF=240; extern bool Forced_TF=True; bool TF; if(Forced_TF != True) TF = EA_TF; //These two lines i think, have error. else TF = Period(); //New metaeditor is not accepting "TF = EA_TF;" from above line.
Se Forced_TF for verdade, então a EA deve negociar e deve receber sinais apenas do prazo mencionado, mesmo que o gráfico ativo (no qual eu coloco a EA) seja aberto em um prazo diferente. Se o valor for falso, então ele deve funcionar em qualquer período de tempo.
sim, eu entendi e corrigi isso. Agora recebendo erro no código de tempo.
Se Forced_TF for verdade, então a EA deve negociar e deve receber sinais apenas do prazo mencionado, mesmo que o gráfico ativo (no qual eu coloco a EA) seja aberto em um prazo diferente. Se o valor for falso, então ele deve funcionar em qualquer período de tempo.
Você tem o TF como um bool . . .. mas você está tentando configurá-lo para um int. ... tente isto . ...
//--- EA PARAMETERS extern int EA_TF=240; extern bool Forced_TF=True; int TF; if(!Forced_TF) TF = EA_TF; //These two lines i think, have error. else TF = Period(); //New metaeditor is not accepting "TF = EA_TF;" from above line.
@RaptorUK Eu tenho você. e novamente tudo bem com o antigo editor, mas o novo editor ainda dá um aviso, citado em código após a linha de erro,
//+------------------------------------------------------------------+ //| 01Multi_EA.mq4 | //| Copyright © 2004, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2004, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property version "1.00" #property strict //--- input parameters input int EA_TF=60; input bool Forced_TF=True; input int MagicNumber=12345; input int FastMA_Period=5; input int FastMA_Shift=0; input int FastMA_Method=1; input int FastMA_Price=0; input int SlowMA_Period=34; input int SlowMA_Shift=0; input int SlowMA_Method=1; input int SlowMA_Price=0; input string LotsProgression="0.01;0.02;0.03;0.04;0.05;0.06;0.07;0.08;0.09;0.10;0.11;0.12;0.13;0.14;0.15;0.16;0.17;0.18;0.19;0.20"; input bool NewCycle=True; input int Limit_TP=50; input bool Use_TP=False; input int Limit_SL=50; input bool Use_SL=False; input int MaxSlippage=3; input int OrderTries=10; int TF, Plen; double TP, SL, pips2dbl, pips2point, pipValue, Slippage, Lots[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //---- if(Forced_TF != True) TF = EA_TF; else TF = Period(); int i,j,k; string ls; while (true) { j=StringFind(LotsProgression,";",i); if(j>0) { ls=StringSubstr(LotsProgression,i,j-i); // <<<<<"possible use of uninitialized variable 'i' 01Multi_EA.mq4 46 38">>>>> i=j+1; k++; ArrayResize(Lots,k); Lots[k-1]=StrToDouble(ls); } else { ls=StringSubstr(LotsProgression,i); k++; ArrayResize(Lots,k); Lots[k-1]=StrToDouble(ls); break; } } Comment("Copyright © 2004, MetaQuotes Software Corp."); if (Digits == 5 || Digits == 3) { pips2dbl = Point*10; pips2point = 10; pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*10; } else { pips2dbl = Point; pips2point = 1; pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*1; } Slippage = pips2dbl*MaxSlippage; TP = pips2dbl*Limit_TP; SL = pips2dbl*Limit_SL; //---- return(INIT_SUCCEEDED); }
@WHRoeder Colou o código inteiro.
@RaptorUK Eu tenho você. e novamente tudo bem com o antigo editor, mas o novo editor ainda dá um aviso, citado em código após a linha de erro,
@WHRoeder Colou o código inteiro.
Não é um erro, é um aviso . . . para se livrar do aviso inicializar a variável em vez de apenas declará-la. Em mql4 quando você declarou uma variável, ela também foi inicializada, agora com mql4,5 você tem que inicializar explicitamente a variável se você quiser . . .
int i = 0, j, k; // i initialised to 0
pipValue = (MarketInfo(Symbol(),MODE_TICKVALUE))*10;Não use o tickvalue por si só https://www.mql5.com/en/forum/133792/page3#512466
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Estou tentando codificar um EA baseado em minha própria estratégia, com a ajuda do código de alguns outros EAs e indis. mas agora preso em uma coisa.
Sou incapaz de entender esta lógica ou o que realmente é.
PS: Um amigo gostou da minha estratégia e criou esta EA. Mas eu perdi ambos (EA e o contato daquele amigo codificador) e agora estou tentando testar meus conhecimentos básicos de codificação, pois eu realmente quero que esta estratégia seja codificada novamente.