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

 
FAQ:

Vadim, nessuno mette in dubbio la tua grandezza, intendevo dire che tutto questo può essere fatto con strumenti API più semplici, che è quello con cui l'interrogante ha iniziato, ma invece di spiegare e aiutare, hai portato la conversazione sul tuo argomento come al solito. E le conseguenze non tarderanno ad arrivare.

Per quanto mi riguarda - tutto commuta, funziona, sempre, e come dovrebbe:

Il più figo - Dima :-))

Bene, ho fatto fare tutto con i mezzi più semplici di WinAPI. Non l'avete notato? Vi ho mostrato tutte le mie varianti.

Quali sono le conseguenze? Che non so come scrivere in MQL4? Non ci ho scritto per molto tempo. Ho dimenticato le particolarità.

Hai sbagliato tutto.

 
Interruttori, giusto. Prima commuta e poi indica. quindi c'è un ritardo.
 
Ciò che non può essere scritto in Assembler può essere risaldato.
 
Anche il saldatore è da qualche parte, da qualche parte, intorno all'assemblatore ;)))
 
Che argomento di discussione per voi neofiti, però :) Assemblatori, api, roba informatica di base :)
 

Eccomi qui, di nuovo un novellino, per l'ennesima volta...

Puoi darmi un suggerimento?

Sto inventando il mio EA. Ho iniziato creando un indicatore che avrebbe disegnato delle frecce dove avrei piazzato dei trade.

Disegna frecce, ma non c'è davvero... Ecco come faccio io:

#property indicator_color1 LimeGreen

#property indicator_color2 Red

....................

doppio ExtMapBuffer1[];

doppio ExtMapBuffer2[];

.................

SetIndexStyle(0,DRAW_ARROW);

SetIndexArrow(0,225);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexEmptyValue(0,0.0);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(1,226);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexEmptyValue(0,0.0); //da il mio qui errore

............................

int limit1;

if(counted_bars>0) counted_bars--;

limit1=Bars-counted_bars;

for(int j=0; j<limit1; j++)

..........................

Se (le mie condizioni di acquisto)

ExtMapBuffer1[j+1]=High[j+1] // freccia verde sopra l'ultima barra chiusa - comprare

else ExtMapBuffer1[j+1]=0.0; //non viene disegnato nulla

Se (le mie condizioni di vendita)

ExtMapBuffer2[j+1]=Low[j+1] // freccia rossa giù sotto l'ultima barra chiusa - vendere

else ExtMapBuffer2[j+1]=0.0; // non viene disegnato nulla

Guardo la chiusura dell'ultima barra in relazione ad altre linee e voglio ottenere una freccia sopra l'ultima barra chiusa (non quella attuale), quindi se mantengo un grafico aperto per esempio 5 min, ottengo frecce disegnate continuamente fino a quando le mie condizioni sono soddisfatte e rimangono aperte.

Mi sembra che ho sbagliato qualcosa con j e j+1. Inoltre non capisco perché le frecce sono ridisegnate. Cosa in questo programma li fa ridisegnare?

Potete per favore dirmi se non è troppo difficile. Grazie.

 
sashaz:

Eccomi qui, di nuovo un novellino, per l'ennesima volta...

Puoi darmi un suggerimento?

......................

Guardo la chiusura dell'ultima barra in relazione alle altre linee e voglio ottenere una freccia sopra l'ultima barra chiusa (non quella attuale), quindi se mantengo un grafico aperto per esempio 5 min, avrò le frecce disegnate continuamente fino a quando le mie condizioni sono soddisfatte e rimarranno fino a quando il grafico è aperto.

Mi sembra che ho sbagliato qualcosa con j e j+1. Inoltre non capisco perché le frecce sono ridisegnate. Cosa in questo programma li fa ridisegnare?

Potete per favore dirmi se non è troppo difficile. Grazie.


Il codice è molto cattivo. Mancano i blocchi di inizializzazione e deinizializzazione e la funzione di avvio dell'indicatore.
 
drknn:

Il codice è molto cattivo. Mancano i blocchi di inizializzazione e deinizializzazione e la funzione di avvio dell'indicatore.
Li ho appena rimossi e ho lasciato la parte dove penso sia il problema.
 
Meglio se mostri il codice completo, e lo incolli usando il pulsante "SRC
 

Cavolo, ho già avuto una notte tormentata di test. Situazione:

Scriviamo un copione.

if(OrderSend(Symbol(),0,0.1,NormalizeDouble(Ask,Digits),200,NormalizeDouble(Ask-150*Point,Digits),NormalizeDouble(Ask+150*Point,Digits),NULL,0,0,CLR_NONE)<0){
  Print("Ошибка - ",GetLastError());
}

Lo buttiamo sulle quattro cifre e tutto va bene. Su un cinque cifre, il diavolo dà errore 130. Dobbiamo tenere a mente che la distanza minima consentita per piazzare un ordine di stop è di 10 punti. Qual è il problema?

P.S.

Ecco i dettagli del conto demo:

Accesso: 91249894
Password: xv7igki

Server: DEM15METADC11.efxnow.com