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

 
AlexeyVik:
E tua madre non permette di leggere la documentazione? Per esempio SendMail

Sì questa funzione naturalmente so, voglio dire - una scheda nella finestra del terminale, (commercio, attività, storia del conto, notizie, avvisi, posta, ecc) quando la posta arriva lì (nel terminale di posta interna) inviato SMS o e-mail (ad esempio per ricevere messaggi circa il riavvio del server, ecc)?

 
optionany:

Sì questa funzione naturalmente so, voglio dire - una scheda nella finestra del terminale, (commercio, attività, storia del conto, notizie, avvisi, posta, ecc) quando la posta arriva lì (nel terminale di posta interna) ha inviato un SMS o e-mail (ad esempio per ricevere i messaggi su riavviare il server, ecc)?

Quindi formulate la domanda come pensate.

Se pensi chiaramente, stai pensando chiaramente...

 

Salve. Non riesco a capire qual è il mio errore, o meglio qual è il difetto di questo blocco nel mio programma:

//--Contabilità separata degli ordini aperti

for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //Loop degli ordini
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// Se viene trovato un ordine, allora:
{
if(OrderSymbol()!=Symbol()|||OrderMagicNumber()!=Magic) continua;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++;
}
return;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()|||OrderMagicNumber()!=Magic) continua;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---

L'EA funziona stabilmente nello Strategy Tester e su un conto demo, ma durante la compilazione genera 2 avvisi: il valore di ritorno di 'OrderSelect' deve essere controllato, cosa che non riesco a superare. Se è possibile, per favore ditemi cosa ho scritto di sbagliato o incompleto.

 
YuryVL:

Salve. Non riesco a capire qual è il mio errore, o meglio qual è il difetto di questo blocco nel mio programma:

//--Contabilità separata degli ordini aperti

for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //Loop degli ordini
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);// Se viene trovato un ordine, allora:
{
if(OrderSymbol()!=Symbol()|||OrderMagicNumber()!=Magic) continua;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++;
}
return;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol()!=Symbol()|||OrderMagicNumber()!=Magic) continua;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++;
}
return;
}
//---

L'EA funziona stabilmente nello Strategy Tester e su un conto demo, ma durante la compilazione mostra un avvertimento: il valore di ritorno di 'OrderSelect' dovrebbe essere controllato, cosa che non posso superare in nessun modo. Se è possibile, per favore ditemi cosa ho scritto di sbagliato o incompleto.


SRS per inserire il codice! E perché 2 cicli, dopo aver controllato se no controllare se sì e Total dovrebbe leggere entrambi i tipi e tenere in memoria per ciascuno separatamente? Nessuno lo capirà! Bisogna costruire la logica per rendere chiaro a tutti ciò che si vuole, poi anche il compilatore capirà!
 
YuryVL:

Salve. Non riesco a capire qual è il mio errore o piuttosto la carenza di questo blocco nel mio programma:

...

1) Per incollare correttamente il codice qui, clicca su SRC e poi copia il tuo codice nella casella (immagine sotto).


2) Prova questo codice:

int Total_BUY=0, Total_SELL=0; // новые переменные как счетчики ордеров

//---Раздельный учёт открытых ордеров
for(int i=OrdersTotal()-1; i>=0; i--) // Цикл перебора ордеров
  {
   // OrderSelect() надо выбирать с помощью if
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)); // Если найден ордер, то:
     {
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      else
        {
         if(OrderType()==OP_BUY)  Total_BUY++;  // считает открытые позиции на покупку
         if(OrderType()==OP_SELL) Total_SELL++; // считает открытые позиции на продажу
        }
     }
  }
 

Come posso ottenere un avviso

Alert(OrderOpenPrice());

visualizzareil prezzo di apertura dell'ordine con 5 cifre decimali? NormalizeDouble(OrderOpenPrice(),Digits) non aiuta(l'ordine è preselezionato).

 
JoinDoe:

Come posso ottenere un avviso

visualizzare il prezzo aperto dell'ordine con 5 cifre decimali? NormalizeDouble(OrderOpenPrice(),Digits) non aiuta(l'ordine è preselezionato).

Alert(DoubleToString(OrderOpenPrice(),Digits));
 
Leo59:
Ciao cara!

Aiuta a tradurre l'algoritmo per trovare le coordinate del punto di intersezione di due segmenti

Dall'articolo:

È molto semplice!
x1,y1 e x2,y2 sono coordinate dei vertici del primo segmento;
x3,y3 e x4,y4 sono le coordinate dei vertici del secondo segmento;

per trovare l'intersezione facciamo le equazioni delle linee:
prima equazione:
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
seconda equazione
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
queste equazioni definiscono una retta passante per due punti, che è ciò di cui abbiamo bisogno.
Da queste equazioni troviamo x e y con le seguenti formule:
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
poiché le nostre linee si intersecano, hanno un punto di intersezione comune con le coordinate (x,y), che dobbiamo trovare.
Affinché l'intersezione appartenga ai nostri segmenti di linea, dobbiamo vincolarla, cioè controllare la condizione:
se
(((x1<=x)e(x2>=x)e(x3<=x)e(x4 >=x))o((y1<=y)e(y2>=y)e(y3<=y) e(y4>=y))
allora c'è un punto di intersezione di questi segmenti, e se non c'è, non c'è nessun punto di intersezione.
Dovresti anche controllare il parallelismo di questi segmenti usando i coefficienti angolari:
k1:=(x2-x1)/(y2-y1);
k2:=(x4-x3)/(y4-y3);
dove k1 e k2 sono tangenti dell'angolo di pendenza dei segmenti alla direzione positiva dell'asse ОХ, se k1=k2, allora i segmenti sono paralleli, quindi non hanno punti di intersezione.

E forse qualcuno ne ha uno già pronto negli archivi?


forse
 

C'è qualche possibilità o funzione in MT4 per reindirizzare i messaggi alla posta interna del terminale (sul cambio di leva, riavvio del server, ecc.) tramite sms o e-mail

P.s una scheda nella finestra del terminale, (commercio, attività, storia del conto, notizie, avvisi, MESSAGGIO, etc.)?

 
Ciao Cari utenti del forum!

Ho iniziato a studiare MQL4 e ho affrontato un problema durante la scrittura di un semplice indicatore che non riesco a risolvere. L'essenza del problema:

1_Come trovare High[i - fine del giorno], ho un semplice ciclo Close[i]-Open[i+1], ho bisogno di trovare High[i - fine del giorno]. Per esempio, da[i],[1],[2] e fino alla fine del giorno (PERIOD_H1) . Non sono sicuro di come farlo. C'è la funzione 'iHigh', ma è un po' diversa.

2_ non è tutto, scusate la sfacciataggine, c'è la funzione 'iBars' (restituisce il numero di barre nella storia per un simbolo e un periodo corrispondente). Potete dirmi, per favore, quale combinazione di funzioni può calcolare non solo il numero di barre con tempo, diciamo, '12:00' o '15:00' in history(PERIOD_H1), ma anche quante barre con tempo.

Ho guardato tutto il manuale, forse ho trascurato qualcosa, ma non ho trovato nulla di adatto. Motore di ricerca usato, il risultato è lo stesso. Potrebbe sapere dove queste domande sono state discusse, per favore inviatemi il link.

Grazie in anticipo!

Motivazione: