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

 
Morzh09 >>:

Коллеги, почему может возникать такая проблема:


условие на открытие позиции выполняется, а позиция, при этом, не открывается...


if ( ((MathRound(iCustom(NULL, 0,"ind1",2,0))==1)&&(ind2()==1) )
{
if ( buy_order_open==0 )
{
Alert("Время покупать ", Symbol());
//long
ticket = OrderSend(Symbol(), OP_BUY, lots,NormalizeDouble(Ask, Digits), 3,NormalizeDouble(Bid - sl * Point, Digits), 0, "Buy", MagicNumber, 0, Blue); //Ask
//----
if(ticket < 0)
{
Sleep(30000);
prevtime = Time[1];
}

buy_order_open = 1;
}

}

Alert с сообщением срабатывает, а ордера не отправляются... :((

Ce qui est NormalizeDouble(Ask, Digits), n'est pas assez ASK. Et si vous décidez de le normaliser, que sont les chiffres ?

 
zhuki >>:

Что такое NormalizeDouble(Ask, Digits),разве не достаточно ASK. И если вы его решили нормализовать,то что за Digits ? чему равен или как получен?.

NormalizeDouble

Arrondit un nombre à virgule flottante à la précision spécifiée.

Chiffres

Nombre de chiffres après la virgule dans le prix de l'instrument actuel.

Parfois, des erreurs dans les fonctions commerciales à cause du cinquième chiffre 1.45562

 
zhuki писал(а) >>

Ce qui est NormalizeDouble(Ask, Digits), n'est pas assez ASK. Et si vous décidez de le normaliser, que sont les chiffres ?

Les chiffres sont bons.

Le problème réside probablement dans le glissement. Sur les cinq chiffres, 3 points ne suffisent pas.

 
Vinin >>:

С Digits все нормально.

Проблема скорее всего сидит в слиппаже. На пятизнаке 3 пунктов мало

Et de quel type d'erreurs dans les fonctions commerciales parlons-nous ?

Supprimez NormalizeDouble et je pense que tout fonctionnera.

 
zhuki >>:

Но, как ни ставь слиппаж в тестере всё равно работать будет.А у него в тестере не работает.И о каких ошибках в торговых функциях идёт речь?

Уберите NormalizeDouble и я думаю всё заработает.

slippage=25 Je n'ai aucun problème !

Il s'agit de

ERR_INVALID_STOPS 130 Arrêts incorrects
ERR_INVALID_PRICE 129 Prix incorrect
ERR_INVALID_PRICE_PARAM 4107 Paramètre de prix incorrect pour la fonction commerciale
 
costy_ >>:

Речь идет о

ERR_INVALID_STOPS130Неправильные стопы
ERR_INVALID_PRICE129Неправильная цена
ERR_INVALID_PRICE_PARAM4107Неправильный параметр цены для торговой функции

130 Vous essayez juste de mettre SL dans la mauvaise direction ou trop près.

129 pourrait être si vous mettez le prix dans un sens utiliser Digits (faux)

4107 jamais rencontré, je ne peux pas dire.

Avez-vous une erreur ou non ?

 
zhuki >>:

130 вы просто не в ту сторону пытаетесь поставить SL или слишком близко.

129 может быть если вы ставите цену один из вариантов использование Digits(неправильного)

4107 никогда не встречался сказать не могу.

А,вас ошибка есть или нет?.

J'ai eu des problèmes, je l'ai changé il y a longtemps et c'est bon, 130 pas à cause de mauvais arrêts (je n'en ai pas !) Ça dépend du concessionnaire.

L'EA est toujours sur le marché ! Je vous suggère également d'utiliser la fonction OrderCloseBy au lieu des stops, elle a fait ses preuves (pas en intraday).

Ask = 1.54889et Lots = 0.1 =))

ERR_INVALID_TRADE_VOLUME 131 Volume incorrect
 
Vinin писал(а) >>
Period() renvoie la période actuelle en minutes.

Tout est réglé, merci !

 
kon12 >>:

Все, разобрался, спасибо!

Utilisez le déclencheur de texte

string PeriodToStr(int Per)
   {
      switch( Per)                 // Расчёт коэффициентов для..     
      {                              // .. различных ТФ      
      case     1: return("M1");  // Таймфрейм М1      
      case     5: return("M5");  // Таймфрейм М5      
      case    15: return("M15");  // Таймфрейм М15      
      case    30: return("M30");  // Таймфрейм М30      
      case    60: return("H1");  // Таймфрейм H1      
      case   240: return("H4");  // Таймфрейм H4      
      case  1440: return("D1");  // Таймфрейм D1      
      case 10080: return("W1");  // Таймфрейм W1      
      case 43200: return("МN");  // Таймфрейм МN     
      }
   }
 
costy_ >>:

Были проблемы, уже давно поменял и все ОК, 130 не из-за неправильных стопов( у меня их нет!) Зависит от диллера.

Советник всегда в рынке! Предлагаю и Вам использовать функцию OrderCloseBy вместо стопов, отлично зарекомендовала себя(не интрадей).

Ask=1.54889 мой терминал такого не кушает как и Lots = 0.1 =))

ERR_INVALID_TRADE_VOLUME 131 Неправильный объем

Et si...

double LotNorm(double lots, string sim="")
{
int dig=0; double hh;
if( sim=="") sim=Symbol();
//
if( lots<MarketInfo( sim, MODE_MINLOT)) {Print( sim+"=МИНИЛОТ=Недостаточно денег"); return(-1);}
if( lots>MarketInfo( sim, MODE_MAXLOT)) lots=MarketInfo( sim, MODE_MAXLOT);
//
if(MarketInfo( sim,MODE_MINLOT)==0.1) dig=1;
if(MarketInfo( sim,MODE_MINLOT)==0.01) dig=2;
if(MarketInfo( sim,MODE_MINLOT)==0.001) dig=3;
if(MarketInfo( sim,MODE_MINLOT)==0.0001) dig=4;
//
lots=NormalizeDouble( lots, dig);
//
return( lots);
}
Raison: