[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 515

 
edyuson:

Não estou culpando você, não é meu enigma. Apenas encontrei um algoritmo semelhante, que eu preciso e estou tentando terminá-lo, assim como eu preciso dele. https://www.mql5.com/ru/code/9927 O que eu removi, o que eu deixei.

eu quero 0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......

alguns o fazem através de uma matriz
 
YOUNGA:
alguns o fazem através de uma matriz


assim:

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
 

Hi!

Pessoal, vocês podem me aconselhar como verificar se um par de moedas está disponível quando se inicia um indicador?

Estou farto e cansado de lutar com este em-ku-el.

Aqui está o código:

[CODE]

extern string CurrencyPair = "";
string gsSymbol, gsIndiName;

bool bIndicatorError;

...

int start() {

if (StringLen(CurrencyPair) == 0)
gsSymbol = Symbol();

else

gsSymbol = CurrencyPair;

Comment(MarketInfo(gsSymbol, MODE_TRADEALLOWED)); // ЗАКОВЫКА ЗДЕСЬ, это чудо всегда возвращает 0.0000000 при старте терминала. Если же потом открыть свойства индикатора и даже ничего не поправлять в параметрах, то возвращает 1.000000

if (!MarketInfo(gsSymbol, MODE_TRADEALLOWED)) {
Alert(gsIndiName, ": Trade is not allowed for symbol [", gsSymbol,"]");
bIndicatorError = true;
return(-1);
}

}

[CODE]

Talvez haja uma maneira mais fácil e mais confiável.

Em geral, não entendo como você pode escrever programas em uma linguagem onde as funções básicas funcionam e depois não funcionam.

 
Você pode me dizer se é possível fazer um roteiro com parâmetros personalizáveis? Acho que já vi um roteiro em algum lugar que o leva a inserir os parâmetros quando você o executa.
 
sss2019:
Você pode me dizer se é possível fazer um roteiro com parâmetros personalizáveis? Acho que já vi um roteiro em algum lugar que o leva a inserir os parâmetros quando você o executa.
Tornar os parâmetros externos externos no roteiro
 
artmedia70:
tornar os parâmetros externos externos no roteiro


Eu fiz os parâmetros

extern string StartTime = "2011.01.01";
extern string EndTime = "2011.01.25";

mas por alguma razão o roteiro não exibe suas configurações antes da execução

 
Dobr:


assim:

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
0.01,0.02,0.04,0.08,0.16... Eu preciso 0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......
 
sss2019:


Eu fiz os parâmetros

mas por alguma razão o roteiro não exibe suas configurações antes da execução

https://docs.mql4.com/ru/basis/preprosessor/compilation
 
edyuson:
0.01, 0.02, 0.04, 0.08, 0.16... Eu preciso 0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......


Eu escrevi EXEMPLO... ;)

aqui está uma versão mais precisa:

double mas[3]={0,0,0};
int q=0;
int w=0;
int z=0;
for (z=OrdersHistoryTotal()-1;z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q==3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]==lot && mas[1]==lot && mas[2]==lot) w=1;
if (w==1) lot=OrderLots()*2;
 
ForexTader:


Em geral, não entendo como se pode escrever programas em uma linguagem onde as funções básicas funcionam, e depois não funcionam.


Você pode tentar transferir uma parte dos cheques do init para o início. Você também pode verificar o status do terminal, e assim por diante.