[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 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 с сообщением срабатывает, а ордера не отправляются... :((

NormalizeDouble(Ask,Digits)とは、ASKでは不十分です。そして、それを正常化しようと思ったら、Digitsとは何なのか?

 
zhuki >>:

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

NormalizeDouble

浮動小数点数を指定された精度で丸める。

ディジット

現在の商品の価格における、小数点以下の桁数。

取引関数の5桁目 1.45562
のため、時々エラーが発生します。

 
zhuki писал(а)>>

NormalizeDouble(Ask,Digits)とは、ASKでは不十分です。そして、それを正常化することにした場合、Digitsとは何なのか?

ディジットは大丈夫です。

問題はスリッページにある可能性が高い。5桁の数字では3点では足りません。

 
Vinin >>:

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

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

また、取引機能のエラーとはどのようなものでしょうか?

NormalizeDoubleを削除すれば、すべてうまくいくと思います。

 
zhuki >>:

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

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

slippage=25 問題ないです!

についてである。

err_invalid_stops 130 不正確な停止位置
err_invalid_price 129 誤った価格
err_invalid_price_param 4107 トレード機能の価格パラメータが正しくない
 
costy_ >>:

Речь идет о

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

130さんは、SLを入れる方向が違うか、近すぎるだけです。

129は、価格を一方通行にする場合、Digitsを使用することができます(間違って います)。

4107 出会ったことがないので何とも言えない。

エラーが出るか出ないか?

 
zhuki >>:

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

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

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

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

問題があって、だいぶ前に変えて、OKです。130 ストップが違うから(持っていない!) ディーラーによりますね。

EAは常にマーケットに存在する!私はあなたがストップの代わりにOrderCloseBy 関数を使用することをお勧めしますそれはそれ自身を証明している(日中ではない)。

アスク=1.54889、ロット=0.1 =))

err_invalid_trade_volume 131 誤った音量
 
Vinin писал(а)>>
Period() は、現在のタイムフレームを分単位で返します

すべて解決しました、ありがとうございました

 
kon12 >>:

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

テキストトリガーを使用する

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 Неправильный объем

もしも...

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