[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 1034

 
Techno:
vous pouvez. l'expert habituel/script

Peut-être existe-t-il déjà quelque chose de similaire, pouvez-vous me dire où le trouver ? Ou connaissez-vous quelqu'un qui peut en écrire un ?

 

aide svp pro

Le morceau de code ci-dessous ne fonctionne pas.

Les valeurs MA sont calculées et affectées à la variable MA.

correctement, mais ils ne sont pas affectés à un tableau. Le tableau est défini comme double

dynamique. La procédure print imprime les valeurs nulles du tableau.

i=i_max ; // ...calculer le nombre donné.

if (flag_NewBar==true) // recalculer seulement pendant l'arrivée du premier tick

{

while(i>=0) // boucle sur les barres non lues

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i) ;

MA=NormalizeDouble(MA,Digits) ;

mas_MA[i]=MA ;

i-- ; }

 

Je ne comprends pas pourquoi il y a une erreur 130 ? Aidez-moi, s'il vous plaît.

Voici le code :

   double myPrice      = NormalizeDouble(Bid - 10*Pnt*10,Digits);
   double myTakeProfit = NormalizeDouble(myPrice + TakeProfit * Pnt*10,Digits);                                                     //
   if (RAVI0_2_24_D1 > 1 && RAVI0_2_24_D1 < 5 && RAVI0_2_24_D1_1 < RAVI0_2_24_D1 && RAVI0_2_24_D1_2 < RAVI0_2_24_D1_1 && RAVI0_2_24_D1_3 < RAVI0_2_24_D1_2) myTakeProfit = myTakeProfit + 25 * Pnt*10;
   double myStopLoss   = NormalizeDouble(myPrice - StopLoss * Pnt*10,Digits);
   datetime myTimeEnd  = TimeCurrent() + wait*60;
   Alert("OP_BUYLIMIT: Spread=",MarketInfo(Symbol(),MODE_SPREAD)," Stop=",DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 2)," lot=",DoubleToStr(lotMM,3)," Pr=",DoubleToStr(myPrice,6)," SL=",DoubleToStr(myStopLoss,6)," TP=",DoubleToStr(myTakeProfit,6));
   ticket=OrderSend(Symbol(),OP_BUYLIMIT,lotMM,myPrice,Slippage,myStopLoss,myTakeProfit,ExpertName, MagicNumber,myTimeEnd,myColor);

J'ai volontairement inséré Alert pour voir le problème, mais je ne le trouve pas.

Voici le message d'Alert :

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1 : Erreur OrderSend 130

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1 : Alerte : OP_SELLLIMIT : Spread=1 Stop=10.00 lot=0.010 Pr=1.280300 SL=1.320300 TP=1.240300

 
VNG:

aide svp pro

Le morceau de code ci-dessous ne fonctionne pas.

Les valeurs MA sont calculées et affectées à la variable MA.

correctement, mais ils ne sont pas affectés à un tableau. Le tableau est défini comme double

dynamique. La procédure print imprime des valeurs nulles pour le tableau.

i=i_max ; // ...calculer le nombre donné.

if (flag_NewBar==true) // recalculer uniquement pendant l'arrivée du premier tick

{

while(i>=0) // boucle sur les barres non lues

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i) ;

MA=NormalizeDouble(MA,Digits) ;

mas_MA[i]=MA ;

i-- ; }

Je pense que les tableaux devraient avoir une certaine taille, à l'exception des tableaux dans les indicateurs conçus pour le "dessin". Je pense qu'il faut l'insérer :
ArrayResize(mas_MA,i_max);
 
globad:

Les amis, s'il vous plaît, conseillez-nous ! Est-il possible de créer un programme qui émet un signal sonore lorsque le prix dépasse 10-11p en 0,1-0,4s ?

Je suggère une autre façon de faire, 0.1-0.4s est environ un tick, le changement de l'aperçu du marché entier par tick.
Dossiers :
temp_4.mq4  4 kb
 
ikatsko:

Je ne comprends pas pourquoi il y a une erreur 130 ? Aidez-moi, s'il vous plaît.

Voici le code :

J'ai volontairement inséré Alert pour voir le problème, mais je ne le trouve pas.

Voici le message d'Alert :

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1 : Erreur OrderSend 130

2010.12.13 12:39:36 2010.09.01 11:35 DVD 100-50 cent iK EURUSD,M1 : Alerte : OP_SELLLIMIT : Spread=1 Stop=10.00 lot=0.010 Pr=1.280300 SL=1.320300 TP=1.240300


Étape par étape, changer les arrêts prennent le dépassement du prix d'ouverture (parce que le pendule est plus bas du prix) à des constantes, trouver presque où est l'erreur.

Extrait de l'aide "Si le prix d'ouverture de l'ordre en attente est incorrect, l'erreur 130 (ERR_INVALID_STOPS) sera générée".

ticket=OrderSend(Symbol(),OP_BUYLIMIT,1,Close[0]+DoubleToStr(MarketInfo(Symbol(), MODE_STOPLEVEL), 2)*2,15,0,0,ExpertName, MagicNumber,myTimeEnd,myColor);
 
VNG:

aide svp pro

Le morceau de code ci-dessous ne fonctionne pas.

Les valeurs MA sont calculées et affectées à la variable MA.

correctement, mais ils ne sont pas affectés à un tableau. Le tableau est défini comme double

dynamique. La procédure print imprime des valeurs nulles pour le tableau.

i=i_max ; // ...calculer un nombre donné.

if (flag_NewBar==true) // recalculer uniquement pendant l'arrivée du premier tick

{

while(i>=0) // boucle sur les barres non lues

MA=iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i) ;

MA=NormalizeDouble(MA,Digits) ;

mas_MA[i]=MA ;

i-- ; }

Lisez-le

https://book.mql4.com/ru/operators/while

https://docs.mql4.com/ru/series/iBarShift

Je ferais ça

if (flag_NewBar) // пересчитываем только во время прихода первого тика
 for(i=i_max;i>=0;i--) // Цикл по непосчитанным барам
    mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,
                                                             iBarShift(g_ext_smb,g_ext_TameFrame,Time[i],false)),Digits);
if (flag_NewBar==true) // пересчитываем только во время прихода первого тика
while(i>=0){ // Цикл по непосчитанным барам
mas_MA[i]=NormalizeDouble(iMA(g_ext_smb,g_ext_TameFrame,g_ext_Period_MA,0,g_ext_Method,g_ext_PRICE,i),Digits);
i--; 
} 
 
dites-moi, combien d'eibars inférieurs à zéro peuvent être utilisés pour dessiner des objets ? quel est le minimum ?
 
costy_:

Pas à pas, changer les arrêts prennent le dépassement du prix d'ouverture (car le pendule est plus haut sous le prix) en constantes, identifier pratiquement où est l'erreur.

Extrait de l'aide "L'erreur 130 (ERR_INVALID_STOPS) sera générée si le prix d'ouverture de l'ordre en attente est erroné".

Oui, UZH :) En effet, l'erreur est que le prix d'ouverture du pendentif est proche du prix actuel. Je l'ai réparé et ça marche. MERCI

 
eddy:
dites-moi, combien d'eibarshifts inférieurs à zéro peuvent être utilisés pour dessiner des objets ? quel est le minimum ?

ebarshift est à la recherche d'un bar par temps (rien ne fonctionnera).

dans le terminal la dernière barre est 0, le temps est lié aux barres, c'est à dire uniquement de cette façon au futur via des chaînes de caractères.

ObjectCreate("ff",OBJ_VLINE,0,StrToTime("2010.12.13 20:00"),0); //