[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 236

 

Colleghi, sono un po' confuso.

Devi usare l'indicatore per disegnare una linea tra due punti


   SetIndexShift(0, DRAW_SECTION);
   SetIndexBuffer(0, z1);

   z1[1]=1.5;
   z1[2]=EMPTY_VALUE;
   z1[3]=EMPTY_VALUE;
   z1[4]=EMPTY_VALUE;
   z1[5]=EMPTY_VALUE;
   z1[6]=1.4;

Non funziona così, vero?
 
neoclassic >> :

Colleghi, un po' confusi.

Devi usare l'indicatore per disegnare una linea tra due punti

E date un'occhiata alla guida SetIndexShift. Funzione sbagliata. Il vostro è SetIndexStyle.

PS: e se disegnate delle linee usando la formula y=kx+b, allora l'indicatore

è definito per ogni due punti :-).

 
jartmailru >> :

E date un'occhiata alla guida di SetIndexShift. Funzione sbagliata. Il vostro è SetIndexStyle.

PS: e se disegnate delle linee usando la formula y=kx+b, l'indicatore

definito per ogni due punti :-).

È così che succede, più di un indicatore scritto, cambio confuso con stile :-) nessun errore, mi sono rilassato.... grazie :-)

 

Ragazzi, potete aiutarmi a cambiare l'indicatore per disegnare un'ellisse insieme alla parabola, voglio confrontare i risultati dell'EA. Mi sembra che l'ellisse sia più adatta per lo stoploss rispetto alla parabola. Qualcuno ha un tale indicatore. Basato sulle ellissi? Vorrei confrontare i risultati con quelli di una parabola.

File:
 
001 писал(а) >>

Ragazzi, potete aiutarmi a cambiare l'indicatore per disegnare un'ellisse insieme alla parabola, voglio confrontare i risultati dell'EA. Mi sembra che l'ellisse sia più adatta per lo stoploss rispetto alla parabola. Qualcuno ha un tale indicatore. Basato sulle ellissi? Grazie in anticipo.

Ho provato a collegare questo indicatore come esterno nel mio Expert Advisor. Non capisco cosa c'è di sbagliato.

Ho le seguenti informazioni nel mio indicatore

extern double Step=0,0513;
extern double Maximum=0,46;

Nel mio Expert Advisor:

extern double steptop=0,005;
extern double maximumstepstop=0.05;

double sarstop=iCustom(NULL,0, "ParabolicM",steptop,maximumstepstop,0,0);

Come risultato:

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

Significa che la lettura non cambia

 

Ciao!


Ho una domanda sulla logica dell'Expert Advisor e a causa della mancanza di esperienza di programmazione, mi rivolgo a coloro che la capiscono.

Ho un codice (trovato su un forum occidentale e non riesco a ricordare il nome dell'autore purtroppo), che dovrebbe registrare l'intersezione delle linee dell'indicatore stocastico su quattro timeframes. Se la linea principale è superiore alla linea di segnale su tutti i timeframe, il codice per aprire l'ordine viene eseguito. Questa idea è fantastica, naturalmente, ma la sua implementazione ha causato un sacco di problemi. Dopo averla eseguita nella storia ho visto che a volte l'ordine viene aperto quando l'evento è registrato solo su un periodo di tempo. Non riesco a capire quale possa essere il problema, dato che sembra che le condizioni di base siano a posto.


Sarei grato per qualsiasi aiuto!



double M1, S1, M2, S2, M3, S3, M4, S4;

string Sig;
string St;
double ticket;

int start()
{
M1=iStochastic(NULL,PERIOD_M15,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S1=iStochastic(NULL,PERIOD_M15,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);

M2=iStochastic(NULL,PERIOD_M30,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S2=iStochastic(NULL,PERIOD_M30,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
M3=iStochastic(NULL,PERIOD_H1,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S3=iStochastic(NULL,PERIOD_H1,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
M4=iStochastic(NULL,PERIOD_H4,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S4=iStochastic(NULL,PERIOD_H4,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);

St = "READY";

Sig = "NONE";

if(M1>S1, M2>S2 && M3>S3 && M4>S4)
{
Sig="LONG";
}
if(M1<S1, M2<S2 && M3<S3 && M4<S4)
{
Sig="SHORT";
}

if(St=="READY" && Sig=="LONG")
{
ticket=OrderSend(Symbol(),OP_BUY,LotSize,Ask,5,Bid-SL*Point,Bid+TP*Point,LongComment,Magic,0,Blue);
if(ticket>-1)
{
St="LONG ON";
}
}

if(St=="READY" && Sig=="SHORT")
{
ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,5,Ask+SL*Point,Ask-TP*Point,ShortComment,Magic,0,Red);
if(ticket>-1)
{
St="SHORT ON";
}
}

}

 
if-t >> :

Ciao!

Ho un codice (l'ho trovato su uno dei forum occidentali e non ricordo il nome dell'autore purtroppo) che è presumibilmente ......

..... ha scoperto che a volte un ordine si apre quando un evento si registra su un solo timeframe.

Sarò grato per l'aiuto!



Forse il problema è questa strana voce:

if(M1>S1, M2>S2 && M3>S3 && M4>S4)
Cosa significa questo? -
(M1>S1, M2>S2

Forse al posto di una virgola, provare l'operatore " && " ? (sia per comprare che per vendere)

 
rid >> :

Forse il problema è questa strana voce:

Cosa significa questo? -

Forse invece di una virgola prova a mettere l'operatore " && " ? (sia per comprare che per vendere)

Rid, grazie mille per la tua risposta! Ho fatto questo errore mentre riorganizzavo le variabili (la mia testa è già gonfia e faccio errori primitivi). La variante originale è corretta:

if(M1>S1 && M2>S2 && M3>S3 && M4>S4)

Ma non funziona. Continuo a pensare che forse la variabile St non ottiene sempre i valori giusti? Ma infatti se la condizione non è soddisfatta il codice non dovrebbe essere eseguito... In generale, sono un programmatore come una ballerina e non posso fare a meno dell'aiuto dei professionisti...


 

A proposito, ho provato a inserire una stampa, ma le variabili sembrano ottenere i valori giusti.

 

Ho provato a scrivere il mio primo indicatore ma disegna solo una linea invece di due.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- buffers
double Buf_1[], Buf_2[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Buf_1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Buf_2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i, 
          Counted_bars=IndicatorCounted();
//----
i=Bars- Counted_bars-1;           // Индекс первого непосчитанного
   while( i>=0) 
      {  
       Buf_1[ i]= Close[ i]; 
       Buf_2[ i]= Open[ i];
       i--;
      }
 
//----
   return(0);
Motivazione: