[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 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 qui ouvre une position lorsque l'OsMA franchit la ligne zéro. On ne sait pas où elle s'ouvre et on ne sait pas pourquoi. Quelqu'un peut regarder, peut-être une erreur dans iOsMA(NULL,0,13,34,8,0,0) ?
 
T.H.C.:

Un EA qui ouvre une position lorsque l'OsMA franchit la ligne zéro. On ne sait pas où elle s'ouvre et on ne sait pas pourquoi. Quelqu'un peut-il vérifier s'il y a une erreur dans iOsMA(NULL,0,13,34,8,0,0) ?

Faites-vous des tests sur toutes les tiques ?
 
001:


Merci pour la réponse. J'ai esquissé une EA rudimentaire. Ça ne marche toujours pas.


dans ce code, cherchez les erreurs, la fonction OrderSend en appuyant sur F1 fera apparaître l'aide dans l'éditeur standard, regardez l'ordre des paramètres entrants il y a une erreur.

+ utiliser Print / Alert pour parcourir les valeurs des variables, l'insérer dans la section de code après ( assignations / execute )

et n'oubliez pas de normaliser la sortie, DoubletoSt..NormalizeDouble..TimeToStr

Vous trouverez ci-joint 2 bibliothèques gratuites avec le code de kimIV.

Le code est simple, des fonctions prêtes à l'emploi, très bien pour les débutants.

Dossiers :
_lib2.zip  10 kb
 

// Il n'y a pas de nombre fixe de lots :)

 
T.H.C.:
Oui

Vous avez alors un effet de claquement sur la barre de zéro.
 
Vinin:

Des tests sur toutes les tiques ?
Oui
 

Comment "arrêter" le flux de mécontentement vers les PED ?

Vous trouverez ci-dessous un extrait du journal :

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

 
Vinin:

Vous avez alors un effet de claquement sur la barre de zéro.
Alors, que faire ? Une méthode moins précise ? N'y a-t-il pas d'autre issue ? Y aura-t-il des discussions lorsque cette EA fonctionnera aussi ?
 

Le test vous donne-t-il mal à la tête ?

 

/Critères de négociation

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) ) ) } ;

essayez comme ça, mais sans les secousses :)

Raison: