[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 13

 
alsu:
Di quelli proprietari, probabilmente MS VisualStudio, ce ne sono anche di gratuiti, CodeBlocks, per esempio, è abbastanza buono.
Grazie, penso che inizierò con VISUAL C++ 2010 EXPRESS e CodeBlocks.
 
rustein:

Ho deciso di iniziare a imparare il C, C++, C#, chi mi può suggerire un buon compilatore ed editor.

Grazie.


DIMENTICATO

PERL

 
freeDRIVER:


NIENT'ALTRO VIENE DIMENTICATO.

PERL

Grazie, l'ho letto, progetto interessante.
 

Purtroppo niente di tutto ciò è servito.

La domanda https://www.mql5.com/ru/forum/138609/page9#edit_form è ancora attuale.

Per favore, aiutatemi!

 

Ho bisogno di un indicatore che mostri la più piccola barra o candela, per un certo periodo. per esempio, sul grafico 4H mostrerà la più piccola candela o barra per 5 giorni.

Giorni o ore, da impostare nelle impostazioni dell'indicatore. E segnato questa freccia candela come nel Frattali indicatore.

O qualcosa del genere.
 
Fox_RM:

Purtroppo niente di tutto ciò è servito.

La domanda https://www.mql5.com/ru/forum/138609/page9#edit_form è ancora attuale.

Per favore, aiutatemi!

Per favore, mostrami di nuovo il codice con le modifiche che hai fatto
 
Fox_RM:

Purtroppo niente di tutto ciò è servito.

La domanda https://www.mql5.com/ru/forum/138609/page9#edit_form è ancora attuale.

Per favore, aiutatemi!

Hai già ricevuto molti consigli. In primo luogo, non è corretto per la domanda rimettere il codice originale nel tuo post (senza le osservazioni, o meglio le correzioni che hai suggerito). In secondo luogo, devi sviluppare il tuo algoritmo per cercare gli errori. Nessuno ha lavorato meglio (all'interno di MQL4), che stampare i risultati intermedi. L'autore può vedere gli errori logici prima di tutto, dato che è l'UNICO che conosce la logica del codice che ha scritto... ;)))
 

Ultima versione:

//+------------------------------------------------------------------+
//|                                              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:

Ultima versione:

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

1) la variabile di passo è zero. Inserire 0,05 o dividere come 1,/20

2) dopo di che, i commerci iniziano a cercare di aprire, ma

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

invece di 50 e 20 dovresti impostare livelli di stop loss e take profit (_assoluto_)


P.S. Ho guardato solo i momenti fondamentali della non apertura. Naturalmente, molte cose devono essere ottimizzate e aggiunte.

 
Fox_RM:

L'ultima versione:

Cos'è questo "mazahismo"?

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

Perché non dichiararlo onestamente?

count = 20;

E non torturare questi array MA1[] e MA2[] dichiarando subito le loro dimensioni:

double MA1[20],MA2[20];

E con questo:

 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

Bisogna tornare alle radici del... di conoscenza. Si passa la dimensione degli STOPP in pip all'ordine di trading, e bisogna passare i LIVELLI!!! E per lavorare on-line è necessario NORMALIZZARE i LIVELLI (prezzo, 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 un'altra cosa: abituatevi fin dall'inizio come un "adulto" - assegnate i vostri ordini MAGIC!!! Ne avrai bisogno in futuro!!!

Motivazione: