[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 104

 
Possiamo creare un EA che chiude tutti gli ordini quando scatta il take-profit dell'ultimo ordine aperto?
 

Cari programmatori!

Aiuto, per favore. L'indicatore disegna valori su una divergenza latente rialzista, e non disegna una latente ribassista.... Scrive che l'errore 4002 - indice della matrice - fuori portata.

Mi sembra di aver sistemato tutto... Mi ci è voluta un'intera serata... Ed è un peccato - il codice è il più semplice... Ma sta disegnando tori con frecce, ma non orsi... PER FAVORE! Qual è l'errore in?????????????????????

//+------------------------------------------------------------------+
//| div zz 5.mq4 |
//+------------------------------------------------------------------+

#proprietà indicator_chart_window
#proprietà indicator_buffers 4
#proprietà indicator_color1 CLR_NONE
#proprietà indicator_color2 CLR_NONE
#property indicator_color3 BlueViolet
#property indicator_color4 Red
#define arrowsDisplacement 0.0001
doppio cci[];
doppio cci1[];
doppio bullishDivergence[];
doppio bullishDivergence[];

//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'indicatore personalizzato
//+------------------------------------------------------------------+
int init()
{
//---- indicatori

SetIndexStyle(0, DRAW_NONE);
SetIndexStyle(1, DRAW_NONE);
SetIndexStyle(2, DRAW_ARROW);
SetIndexStyle(3, DRAW_ARROW);

SetIndexBuffer(0, cci);
SetIndexBuffer(1, cci1);
SetIndexBuffer(2, bullishDivergence);
SetIndexBuffer(3, bullishDivergence);

SetIndexArrow(2, 233);
SetIndexArrow(3, 234);

ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione dell'indicatore Custor
//+------------------------------------------------------------------+
int deinit()
{
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di iterazione dell'indicatore personalizzata
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//---- ultima barra contata sarà ricontata
if(counted_bars>0) counted_bars--;
//int limit=Bars-counted_bars;
doppio vpadcci[];
doppio v[];
doppio hh[];
doppio ss[];



per (int i=500; i>=0; i--)
{
cci[i] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, i);
se (
(cci[i]<cci[i-1])&&
(cci[i]<cci[i-2])&&
(cci[i]<cci[i+1])&&
(cci[i]<cci[i+2])
)
{
vpadcci[i]=cci[i];
ss[i]=Low[i];
}
}



for(int j=500; j>0; j--)
{
cci[j] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, j);
se (
((cci[j+1]>vpadcci[10])&&
(cci[j]<vpadcci[10])&&
(low[j]>ss[10])) ||
((cci[j+1]>vpadcci[9])&&
(cci[j]<vpadcci[9])&&
(low[j]>ss[9])) ||
((cci[j+1]>vpadcci[8])&&
(cci[j]<vpadcci[8])&&
(low[j]>ss[8])) ||
((cci[j+1]>vpadcci[7])&&
(cci[j]<vpadcci[7])&&
(low[j]>ss[7])) ||
((cci[j+1]>vpadcci[6])&&
(cci[j]<vpadcci[6])&&
(low[j]>ss[6])) ||
((cci[j+1]>vpadcci[5])&&
(cci[j]<vpadcci[5])&&
(low[j]>ss[5])) ||
((cci[j+1]>vpadcci[4])&&
(cci[j]<vpadcci[4])&&
(low[j]>ss[4])) ||
((cci[j+1]>vpadcci[3])&&
(cci[j]<vpadcci[3])&&
(low[j]>ss[3])) ||
((cci[j+1]>vpadcci[2])&&
(cci[j]<vpadcci[2])&&
(basso[j]>ss[2])) ||
((cci[j+1]>vpadcci[1])&&
(cci[j]<vpadcci[1])&&
(basso[j]>ss[1])) ||
((cci[j+1]>vpadcci[0])&&
(cci[j]<vpadcci[0])&&
(low[j]>ss[0])
)

{ bullishDivergence[j] = Low[j] - arrowsDisplacement;
}
}


per (i=1; i<500; i++)
{
cci1[i] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, i);
se
(
(cci1[i]>cci1[i-1])&&
(cci1[i]>cci1[i-2])&&
(cci1[i]>cci1[i+1])&&
(cci1[i]>cci1[i+2])
)
{
v[i]=cci1[i];
hh[i]=Alto[i];
}
}



for(j=1; j<500; j++)
{
cci1[j] = iCustom(NULL, 0, "CCI-OnArray_", 9, 3, 5, 25, 1, j);
se (
((cci1[j+1]<v[10])&&
(cci1[j]>v[10])&&
(high[j]<hh[10])) ||
((cci1[j+1]<v[9])&&
(cci1[j]>v[9])&&
(high[j]<hh[9])) ||
((cci1[j+1]<v[8])&&
(cci1[j]>v[8])&&
(high[j]<hh[8])) ||
((cci1[j+1]<v[7])&&
(cci1[j]>v[7])&&
(high[j]<hh[7])) ||
((cci1[j+1]<v[6])&&
(cci1[j]>v[6])&&
(high[j]<hh[6])) ||
((cci1[j+1]<v[5])&&
(cci1[j]>v[5])&&
(alto[j]<hh[5])
)

{ cci1[j]= High[j] + arrowsDisplacement;

}
}


ritorno(0);
}



File:
divfzzg5.mq4  5 kb
 
Trasferito da un thread separato. Qui si raccomanda di fare domande semplici. Il codice dovrebbe essere postato tramite il pulsante SRC, poiché è molto più facile da leggere.
<br / translate="no">.
KoDim 14.02.2011 09:29
Salve.

Durante la programmazione dell'Expert Advisor, ero perplesso sul parametro ma_shift- spostamento della linea centrale nelle barre. Se lo spostamento è positivo, la linea si sposta a destra. E viceversa, se lo spostamento è negativo, la linea è spostata a sinistra.
Se viene usato un valore positivo, viene aperto un ordine all'incrocio delle medie.
Tuttavia, se impostiamo il parametro su negativo, l'ordine non viene aperto.
Cosa c'entra questo?

Ecco un estratto del codice

SMFast0=iMA( NULL, Tmfrm_work, PeriodSMFast, -3, ModeSMFast, PriceSMFast, 0 ); // МА быстрая на текущем баре
SMFast1=iMA( NULL, Tmfrm_work, PeriodSMFast, -3, ModeSMFast, PriceSMFast, 1 ); // МА быстрая на первом баре

SMSlow0=iMA( NULL, Tmfrm_work, PeriodSMSlow, 0, ModeSMSlow, PriceSMSlow, 0 ); // МА медленная на текущем баре
SMSlow1=iMA( NULL, Tmfrm_work, PeriodSMSlow, 0, ModeSMSlow, PriceSMSlow, 1 ); // МА медленная на первом баре

if(SMFast0>SMSlow0 && SMFast1<SMSlow1)

{
Opn_B=true; // Критерий откр. Buy
Cls_S=true; // Критерий закр. Sell
}

if(SMFast0<SMSlow0 && SMFast1>SMSlow1)
{
Opn_S=true; // Критерий откр. Sell
Cls_B=true; // Критерий закр. Buy
} 
 

Ciao, è da un po' che sto cercando di imparare a scrivere EAs, quindi ecco una domanda. Come posso prescrivere all'EA di mettere uno stop loss dopo aver messo uno stop buy o uno stop loss? Cioè, dopo lo stop-buy e lo stop sat per 5 punti (approssimativamente), l'EA si mette immediatamente uno stop loss.

 
Poseidon:
È possibile creare un EA che chiuda tutti gli ordini quando scatta il take-profit dell'ultimo ordine aperto?

È possibile.

Pupersa ,trova questo ordine e cambia il parametro "stop loss".

KoDim, forse perché i valori sono spostati a sinistra, sulle barre a destra (incrocio su cui puoi controllare) non esistono affatto?

 

domanda ai programmatori: come si fa a rendere il numero dopo il punto decimale un intero?)

per esempio, il numero 1,128 ha bisogno di 128, il numero 1,12 ha bisogno di 12, il numero 1,2 ha bisogno di 2)

Il numero è una variabile esterna.

 
Domanda su MT5. Come posso sapere se il tester ha completato il suo lavoro? Tranne che visivamente :)
 
eddy:

domanda ai programmatori: come si fa a rendere il numero dopo il punto decimale un intero?)

per esempio, il numero 1,128 ha bisogno di 128, il numero 1,12 ha bisogno di 12, il numero 1,2 ha bisogno di 2)

Il numero è una variabile esterna.


vedere qui: https://docs.mql4.com/ru/basis/operations/math
 
nemo811:


Se il denaro e i volumi (e non le onde di Elliott) sono al lavoro nel mercato, e il movimento dei prezzi non è caotico, ma guidato dai volumi, allora due segnali su 2 coppie (delle tre considerate) daranno un segnale più forte sulla terza coppia. Cercate i livelli di accumulazione degli ordini, analizzate il VSA e troverete la X e la Y necessarie)))

Inoltre (vedi figura) un chiaro piatto di una coppia di valute (formata da 2 valute) non impedisce ad una terza coppia di valute (le restanti 2 coppie) di fare tendenza. Se è in corso una tendenza di più di 1 valuta, questo crea una sorta di "caos di mercato". Poiché le tendenze intraday sono meno stabili di quelle a medio e lungo termine, questo caos è più pronunciato sui piccoli TF.

Studiando il mercato in questa luce, tendo a pensare che la tendenza delle valute stesse (e non le coppie di valute) sia più stabile, altrimenti otterremmo un grafico dell'oscillatore che non può essere analizzato affatto.

Questo è ciò che mi dice questa foto. ))))

Iltest dell'indice del dollaro su M1 e M5 ha dato risultati peggiori rispetto a GBP/USD. I grandi TF non possono essere testati a causa di un archivio storico molto piccolo. Fibogroup non dà molto per Nedex, e molte società di intermediazione non lo danno affatto. Ecco perché è problematico studiare le tendenze delle valute e lavorare con piccoli lotti (0,01) .....
 
eddy:

domanda ai programmatori: come si fa a rendere il numero dopo il punto decimale un intero?)

per esempio, il numero 1,128 ha bisogno di 128, il numero 1,12 ha bisogno di 12, il numero 1,2 ha bisogno di 2)

Il numero è una variabile esterna.

double a = 1.123345;
int b = a;
Anche questo è possibile.
Motivazione: