[ARŞİV] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 3. - sayfa 561

 
Vinsant :

Lütfen bu göstergenin mantığını anlamama yardım edin.

Burada ayrıştırmak için yasaklanabilirler.
 
Reshetov :
Burada ayrıştırmak için yasaklanabilirler.
Ve bunun bir eksik olduğunu nerede görebilirsin? ) Maalesef yazarı bulamadım ve bu gösterge 2006'da iyi pazar girişleri gösterdi, bugün hatırladım)) ve mantığının neye dayandığını anlamak istiyorum.
 
sergeev :

MinLot ve LotStep aracılığıyla süreç

Örneğin şöyle yapmam gerekiyor - NormalizeDouble (çok, kesinlik );

Ne verecek, anlayamıyorum (MinLot ve LotStep)?

 
Vinsant :
Ve bunun bir eksik olduğunu nerede görebilirsin? )
Moderatör gelip yazdığınız kodun mantığını anlayacaktır. Bu nedenle, görebildiğiniz ve göremeyeceğiniz yerleri size apaçık gösterene kadar günahtan saklanmak daha iyidir.
 
Reshetov :
Moderatör gelip yazdığınız kodun mantığını anlayacaktır. Bu nedenle, görebildiğiniz ve göremeyeceğiniz yerleri size apaçık gösterene kadar günahtan saklanmak daha iyidir.
Tavsiyene uydum.
 
fore-x :

Örneğin şöyle yapmam gerekiyor - NormalizeDouble(lots, exact );

Ne verecek, anlayamıyorum (MinLot ve LotStep)?

Acele çizilmiş. Aşağı yukarı şöyle:
 double minlot = MarketInfo ( Symbol , MODE_MINLOT);

int d = 0 ;
 
if (minlot < 0.9999 ) {
   if (minlot < 0.09999 ) {
    d = 2 ;
  } else {
    d = 1 ;
  }
}

 ... 

NormalizeDouble (lots, d);
 
Reshetov :
Acele çizilmiş. Aşağı yukarı şöyle:

Ve elbette, bilimsel dürtme yöntemiyle. Parametre hiçbir yerde saklanmaz, bileceğiz.

 
fore-x :

Ve elbette, bilimsel dürtme yöntemiyle. Parametre hiçbir yerde saklanmaz, bileceğiz.

Terminalde herhangi bir yerde saklanamaz, çünkü omuz yüzebilir ve bunu yalnızca sunucu bilebilir. Bana göre en doğru hesaplama şudur:

 double minlot = MarketInfo ( Symbol (), MODE_MINLOT);
double maxlot = MarketInfo ( Symbol (), MODE_MAXLOT);
double lotstep = MarketInfo ( Symbol (), MODE_LOTSTEP);

double SMALL = 0.0000001 ;

double lot, nextlot;

//обнуляем внутреннюю переменную ошибки
GetLastError ();

//смотрим, насколько дают открыться
for (lot= 0 ; lot<maxlot+SMALL && GetLastError ()!=ERR_NOT_ENOUGH_MONEY; lot = nextlot)
{
   if (lot<minlot) nextlot = minlot;
   else nextlot = lot+lotstep;
   AccoutFreeMarginCheck( Symbol (), OP_BUY, nextlot);
}

// ответ на вопрос уже в переменной lot, а если вообще открыться нельзя, то там 0. Осталось нормализовать.
// Нормализацию правильно проводить от lotstep, а не от minlot, т.к. встречаются ситуации когда, например, 
// minlot = 3.0, а lotstep = 0.1

int dig = - MathFloor ( MathLog (lotstep)/ MathLog ( 10 ));

lot = NormalizeDouble (lot, dig);

 

Bana neden 130 hatası olduğunu söyleyebilir misin?

ticket1 = OrderSend ( Symbol (),OP_BUYLIMIT,Lot,Level,Slippage, 0 , 0 , 0 ,MagicNumber, 0 , Green );
 
sss2019 :

Bana neden 130 hatası olduğunu söyleyebilir misin?


ticket1 = OrderSend ( Symbol (),OP_BUYLIMIT,Lot,Level,Slippage, 0 , 0 , 0 ,MagicNumber, 0 , Green );
                                                                ^
                                                          Что за хрень?