[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 13

 
alsu:
Dos proprietários, provavelmente MS VisualStudio, há também os gratuitos, CodeBlocks, por exemplo, é bastante bom.
Obrigado, acho que vou começar com VISUAL C++ 2010 EXPRESS e CodeBlocks.
 
rustein:

Decidiu começar a aprender C,C++,C#, que pode sugerir um bom compilador e editor.

Obrigado.


FORGOTTEN

PERL

 
freeDRIVER:


NADA MAIS É ESQUECIDO.

PERL

Obrigado, leia-o, projeto interessante.
 

Infelizmente nenhum dos itens acima ajudou.

A pergunta https://www.mql5.com/ru/forum/138609/page9#edit_form ainda é relevante.

Por favor, ajude!

 

Precisa de um indicador que mostre a menor barra ou vela, por um determinado período. por exemplo, no gráfico 4H mostrará a menor vela ou barra durante 5 dias.

Dias ou horas, a serem definidos nos ajustes do indicador. E marcou esta seta da vela como no indicador Fractals.

Ou algo parecido.
 
Fox_RM:

Infelizmente nenhum dos itens acima ajudou.

A pergunta https://www.mql5.com/ru/forum/138609/page9#edit_form ainda é relevante.

Por favor, ajude!

Mostre-me o código novamente com as mudanças que você fez
 
Fox_RM:

Infelizmente nenhum dos itens acima ajudou.

A pergunta https://www.mql5.com/ru/forum/138609/page9#edit_form ainda é relevante.

Por favor, ajude!

Você já recebeu muitos conselhos. Em primeiro lugar, não é correto para a pergunta postar novamente o código original (sem seus comentários, ou melhor, correções). Em segundo lugar, você deve elaborar seu próprio algoritmo de recuperação de erros. Ninguém tem trabalhado melhor (dentro da MQL4) do que imprimir resultados intermediários. O Autor pode ver os erros lógicos antes de tudo, já que ele é o ÚNICO que conhece a lógica do código que ele escreveu... ;)))
 

Versão mais recente:

//+------------------------------------------------------------------+
//|                                              Ti&Pi_Exp.mq4       |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2012, FOX.RM"
#property link      "fox.rm@mail.ru"

int start() {  
 
double MA1[],MA2[];
double delta,price,old_price,col_bar,sum_tick,sum_pip,TP_UP[20],TP_DN[20],TP_UPMin[20],TP_DNPl[20]; //---размерность массивов
int sum_pip_bay,sum_pip_sell,i=0,limit,k=0,old_sell=0,old_bay=0;
int count_plus,count_minus,raz,count;
datetime time_Bar; 

  ArrayResize(MA1,Bars);ArrayResize(MA2,Bars);

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам
for (i=0;i<count;i++)           //--- вроде так
{  
    price = Close[i]/Point;    
    delta = price-old_price;
          
    if(!time_Bar)time_Bar=Time[0];
    col_bar = iBarShift(NULL,0,time_Bar)-iBarShift(NULL,0,Time[i]);
    if (col_bar >= 1)
    
    {time_Bar=Time[i];sum_pip_bay=0;
    sum_pip_sell=0;sum_pip=0;
    old_bay=0;old_sell=0;sum_tick=0;
    count_plus=0;count_minus=0;}
     
     //---- Расчет UP
    if(delta>=0)
    {if(delta>100)delta=1;
    sum_pip_bay = delta + old_bay;   
    old_bay=sum_pip_bay;
    count_plus++;}  
    
     //---- Расчет Down
    if(delta<0)
    { sum_pip_sell = delta+old_sell;
     old_sell=sum_pip_sell;
    count_minus++;}
          
        sum_tick=count_plus+count_minus;
        sum_pip=sum_pip_bay+MathAbs(sum_pip_sell);
     
      //---
  
        if (MA1[i]>=0){TP_UP[i]=MA1[i];}else{TP_UPMin[i]=MA1[i];}
        if (MA2[i]<=0){TP_DN[i]=MA2[i];}else{TP_DNPl[i]=MA2[i];} 
             
//----
    old_price=price; 

//------
if(NewBar())
  { 
  
 MA1[i] = count_plus - sum_pip_bay;
 MA2[i] = count_minus - MathAbs(sum_pip_sell);
 
 //---- Условия на открытие сделки
 
 
 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask
   }    
   }                
   return(0);
}

//---- Функции
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<20;i++)                         //--- тут привел в соответствие
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//-------------
bool NewBar()
{
   static datetime lastbar = 0;
   datetime curbar = Time[0];
   if(lastbar!=curbar)
   {
      lastbar=curbar;
      return (true);
   }
   else
   {
      return(false);
   }
}
 
Fox_RM:

Versão mais recente:

double a=1,c,step=1/20;

1) a variável passo é zero. Insira 0,05 ou divida como 1,/20

2) depois disso, as negociações começam a tentar se abrir, mas

OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20)

em vez de 50 e 20, você deve estabelecer limites de perdas e obter níveis de lucro (_absoluto_)


P.S. Eu só olhei para os momentos básicos de não abertura. É claro, muitas coisas devem ser otimizadas e acrescentadas.

 
Fox_RM:

A versão mais recente:

Do que se trata este "mazahismo"?

raz=20-Bars;                    //--- расчет по
count=Bars+raz;                 //--- последним 20 барам

Por que não simplesmente declarar isso honestamente?

count = 20;

E não torturar essas matrizes MA1[] e MA2[], declarando imediatamente suas dimensões:

double MA1[20],MA2[20];

E com isso:

 if (Sredn(TP_UP)>=1.5)OrderSend(Symbol(),OP_SELL,0.1,Bid,2,50,20);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)OrderSend(Symbol(),OP_BUY,0.1,Ask,2,50,20);  //--- на новом баре + Ask

Você precisa voltar às raízes de... do conhecimento. Você passa o tamanho dos STOPPs em pips para a ordem de comércio, e você precisa passar os NÍVEIS!!! E para trabalhar on-line é necessário NORMALIZAR os NÍVEIS (preço, SL e TP)!!!!

 if (Sredn(TP_UP)>=1.5)
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble (Bid,Digits),2,NormalizeDouble (Ask+50*Point, Digits),NormalizeDouble(Ask-20*Point,Digits), 0, MAGIC);  //--- сделки только + Bid
 if (Sredn(TP_DN)>=1.5)
OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),2,NormalizeDouble(Bid-50*Point,Digits),NormalizeDouble(Bid+20*Point,Digits), 0, MAGIC);  //--- на новом баре + Ask

E mais uma coisa: acostume-se desde o início como um "adulto" - atribua seus pedidos MAGIC!!! Você vai precisar disso no futuro!!!