Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 489

 

Salve. Voglio scrivere un EA per MT4, uno dei suoi compiti è quello di disegnare linee di Fibo, su M1, in un'ora. Cioè, quando 11.00 dovrebbe disegnare linee nell'intervallo da 10.00 a 10.59, concentrandosi sui massimi e sui minimi. Provato diversi metodi, postato quello che era l'ultimo. Probabilmente puoi accorciare il codice per disegnare i livelli, ilproblema è che non disegna le linee nell'area data.

int timemin=TimeMinute(Time[59]==0);
int timehour=TimeHour(Time[1] && TimeMinute(Time[0]));
int timemin1=TimeMinute(Time[0]==0);
int timehour1=TimeHour(Time[1] && TimeMinute(Time[59]))

int max=iHighest(Symbol(),1,MODE_HIGH,60,timehour);
int min=iLowest(Symbol(),1,MODE_LOW,60,timehour);

double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));
double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------Nuovo livello

if (barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
if (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);

}
double f1=ObjectGet("FiboLevels",OBJPROP_PRICE1); //Seleziona il primo prezzo
double f2=ObjectGet("FiboLevels",OBJPROP_PRICE2); //Seleziona il secondo prezzo e traccia
double Diff=f2-f1;
stringa a11=DoubleToStr(f2-Diff*0.0,Digits);
string a12=DoubleToStr(f2-Diff*0.236,Digits);
string a13=DoubleToStr(f2-Diff*0.382,Digits);
string a14=DoubleToStr(f2-Diff*0.50,Digits);
stringa a15=DoubleToStr(f2-Diff*0.618,Digits);
stringa a16=DoubleToStr(f2-Diff*1.0,Digits);

bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6);
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0);
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236);
bool a4=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.382);
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50);
bool a6=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+4,0..618);
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+5,1.0);

bool a111=ObjectSetFiboDescription("FiboLevels",0, "0.0%");
bool a122=ObjectSetFiboDescription("FiboLevels",1, "23.6%");
bool a133=ObjectSetFiboDescription("FiboLevels",2, "38..2%");
bool a144=ObjectSetFiboDescription("FiboLevels",3, "50.0%");
bool a155=ObjectSetFiboDescription("FiboLevels",4, "61.8%");
bool a166=ObjectSetFiboDescription("FiboLevels",5, "100.0%");

 
Georgy Sled:

Salve. Voglio scrivere un EA per MT4, uno dei suoi compiti è quello di disegnare linee di Fibo, su M1, in un'ora. Cioè, quando 11.00 dovrebbe disegnare linee nell'intervallo da 10.00 a 10.59, concentrandosi sui massimi e sui minimi. Provato diversi metodi, postato quello che era l'ultimo. Probabilmente puoi accorciare il codice per disegnare i livelli, ilproblema è che non disegna linee in una determinata area.

double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));

double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1));
ObjectDelete("FiboLevels"); //------Nuovo livello

se (barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max];
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
se (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);

}

questo è più breve? bool barup=... WindowRedraw(); sarà ancora eseguito - tolto da if

   ObjectDelete("FiboLevels"); //------Новый уровень
   WindowRedraw();

   if (iOpen(Symbol(),60,1)>iClose(Symbol(),60,1))
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
   }
   else
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
   }

può anche essere più breve ... vedi il mio file

File:
Proba.mq4  3 kb
 
Artyom Trishkin:

Si prega di inserire il codice correttamente.


È ancora più chiaro:


Grazie per aver spiegato come incollare il codice correttamente)))) aiutato) Per favore controlla e aiutami a scrivere il codice correttamente, te ne sarò molto grato! (Oggi ho una TV Samsung bollita che ho imparato a disinstallare, ma non riesco a far fronte a questo codice (((((
 
void fOrderOpen() {...
    if( iTime(Symbol(),PERIOD_M1,0)) {
     if((fMarketOrders(OP_BUY))) { ....{
int irvbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,NULL,12345,0,0); 

Ragazzi, perché i miei ordini si aprono ad ogni tick? Puoi dirmi come concentrarmi sulla barra?

 
Rustam Bikbulatov:

Ragazzi, perché i miei ordini si aprono ad ogni tick? Puoi dirmi come concentrarmi sulla barra?

Secondo le condizioni descritte nell'ATS, dà il via libera all'apertura quindi si apre.
Ci sono molte soluzioni in questo caso. Tutto dipende da ciò che è più adatto a voi.
Possiamo stabilire che il prossimo ordine deve essere aperto solo se il prezzo si è allontanato dall'ultimo di N punti. Potete chiedere di aprire non più di un ordine su 1 barra. Tale e quale e così via.
Scrivi le condizioni di cui hai bisogno e applicale ai tuoi test.

 
Konstantin Nikitin:

Secondo le condizioni descritte nell'ATS, apre l'ordine.
Ci sono molte soluzioni in questo caso. Tutto dipende da ciò che è più adatto a voi.
Possiamo stabilire che il prossimo ordine deve essere aperto solo se il prezzo si è allontanato dall'ultimo di N punti. Potete chiedere di aprire non più di un ordine su 1 barra. Tale e quale e così via.
Scrivi le condizioni di cui hai bisogno e applicale ai tuoi test.

Invecese( iTime(Symbol(),PERIOD_M1,0)){Cosa devo scrivere per aprire un ordine su una barra?

 
Rustam Bikbulatov: Ragazzi, perché i miei ordini si aprono ad ogni tick? Qualche consiglio su come concentrarsi sulla barra?

La domanda è stata posta molte volte e corrispondentemente molte volte si è risposto.Usando una ricerca, per esempio qui

 
STARIJ:

La domanda è stata posta molte volte e corrispondentemente molte volte si è risposto.Usando una ricerca, per esempio qui

Grazie!

 

Buon pomeriggio!


Ho un EA che fa certi calcoli. Utilizza diverse operazioni matematiche, array, loop. Salva il risultato in un file. Deve ricominciare tutto dall'inizio dopo aver eseguito tutte le azioni. Ha fatto tutti i calcoli una volta e poi si blocca per la seconda volta senza fare alcuna azione. Potete consigliarmi se è necessario azzerare le variabili, cancellare gli array o qualcos'altro prima di iniziare un nuovo calcolo?

 
Kot:

Buon pomeriggio!


Ho un EA che fa certi calcoli. Utilizza diverse operazioni matematiche, array, loop. Salva il risultato in un file. Deve ricominciare tutto dall'inizio dopo aver eseguito tutte le azioni. Ha fatto tutti i calcoli una volta e poi si blocca per la seconda volta senza fare alcuna azione. Potete consigliarmi se è necessario azzerare le variabili, cancellare gli array o qualcos'altro prima di iniziare un nuovo calcolo?

Saranno sicuramente d'aiuto. E non ci sono questi specialisti in questo thread.