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

 
extern double SL=20; // SL для открываемого ордера
extern double TP=20; // ТР для открываемого ордера
extern double Lot=0.01; // Жестко заданное колич. лотов
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;

double
M_0,
M_1;


bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell

//--------------------------------------------------------------- 3 --
// Учёт ордеров


for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;

if(Total!=0 || time==Time[1])return;


// Торговые критерии

M_0=iOsMA(NULL,0,13,34,8,0,0); // 0 бар
M_1=iOsMA(NULL,0,13,34,8,0,1); // 1 бар



if (M_1<0 && M_0>0)
Opn_B=true;

if (M_1>0 && M_0<0)
Opn_S=true;

//--------------------------------------------------------------- 7 --


if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,Bid-SL*Point,Bid+TP*Point);time=Time[1];}

if (Opn_S)
{OrderSend(Symbol(),OP_SELL,Lot,Bid,0,Ask+SL*Point,Ask-TP*Point);time=Time[1];}
}


Un EA che apre una posizione quando l'OsMA incrocia la linea dello zero. Non è chiaro dove si apre e non è chiaro perché. Qualcuno può guardare, forse un errore in iOsMA(NULL,0,13,34,8,0,0)?
 
T.H.C.:

Un EA che apre una posizione quando l'OsMA incrocia la linea dello zero. Non è chiaro dove si apre e non è chiaro perché. Qualcuno può controllare se c'è un errore in iOsMA(NULL,0,13,34,8,0,0)?

Stai testando tutte le zecche?
 
001:


Grazie per la risposta. Ha abbozzato un EA rudimentale. Ancora non funziona.


in questo codice, cercare gli errori, funzione OrderSend premere F1 porterà aiuto nell'editor standard, guardare l'ordine dei parametri in entrata c'è un errore.

+ usare Print / Alert per passare attraverso i valori delle variabili, inserirlo nella sezione di codice dopo ( assignments / execute )

e ricordatevi di normalizzare l'output, DoubletoSt..NormalizeDouble..TimeToStr

In allegato ci sono 2 librerie gratuite con codice di kimIV.

Il codice è semplice, funzioni pronte, molto buono per i principianti.

File:
_lib2.zip  10 kb
 

// Difficilmente un numero fisso di lotti :)

 
T.H.C.:


Poi si ha un effetto chattering sulla barra zero.
 
Vinin:

Test su tutte le zecche?
 

Come "fermare" il flusso del malcontento verso i DC?

Qui sotto c'è un estratto del registro:

10:00:25 Vecchio tick EURUSD30 1.38730/1.38740
10:00:25 Vecchio tick EURUSD240 1.38730/1.38740
10:00:25 Vecchio tick EURUSD1440 1.38730/1.38740
10:00:25 Vecchio tick EURUSD15 1.38730/1.38740
10:00:25 Vecchio tick EURUSD1 1.38730/1.38740
10:00:25 Vecchio tick EURUSD60 1.38730/1.38740
10:00:25 Vecchio tick EURUSD5 1.38730/1.38740
11:00:34 Vecchio tick EURUSD30 1.38847/1.38863
11:00:34 Vecchio tick EURUSD240 1.38847/1.38863
11:00:34 Vecchio tick EURUSD1440 1.38847/1.38863
11:00:34 Vecchio tick EURUSD15 1.38847/1.38863
11:00:34 Vecchio tick EURUSD1 1.38847/1.38863
11:00:34 Vecchio tick EURUSD60 1.38847/1.38863
11:00:34 Vecchio tick EURUSD5 1.38847/1.38863
11:25:06 Vecchio tick EURUSD30 1.38707/1.38722
11:25:06 Vecchio tick EURUSD240 1.38707/1.38722
11:25:06 Vecchio tick EURUSD1440 1.38707/1.38722
11:25:06 Vecchio tick EURUSD15 1.38707/1.38722
11:25:06 Vecchio tick EURUSD1 1.38707/1.38722
11:25:06 Vecchio tick EURUSD60 1.38707/1.38722

 
Vinin:

Poi si ha un effetto chattering sulla barra zero.
Quindi cosa fare? Un metodo meno accurato? Non c'è altra via d'uscita? Ci saranno chiacchiere quando anche questo EA funzionerà?
 

Il test ti fa venire il mal di testa?

 

//Criteri di trading

M_0 ={ iOsMA(0,0,13,34,8,0,1) }; //| 1bar
M_1 ={ iOsMA(0,0,13,34,8,0,2) }; //| 2bar

Opn_B ={ (((M_1<0)==1) &&((M_0>0)==1) ) };
Opn_S ={ (((M_1>0)==1) &&((M_0<0)==1) ) };

provate in questo modo, ma senza lo stridore:)