[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 561

 
Vinsant:

Helfen Sie mir, die Logik hinter diesem Indikator zu verstehen.

Sie können hier wegen Dekompilierung gesperrt werden.
 
Reshetov:
Für Dekompilierung kann man hier gesperrt werden.
Wo können Sie sehen, dass es sich um eine Entflechtung handelt? ) Leider konnte ich den Autor nicht finden, und dieser Indikator zeigte 2006 gute Markteintritte, heute erinnere ich mich an ihn)) und ich möchte verstehen, worauf seine Logik beruht.
 
sergeev:

Prozess über MinLot und LotStep

Ich muss zum Beispiel dies tun - NormalizeDouble(lots,precision);

Was würde dies bewirken (MinLot und LotStep)?

 
Vinsant:
Wo steht, dass sie unvollständig ist? )
Ein Moderator wird kommen und die Logik des von Ihnen geposteten Codes herausfinden. Also verstecken Sie es lieber, bevor man Ihnen zeigt, wo Sie es sehen können und wo nicht.
 
Reshetov:
Ein Moderator wird sich die Logik des von Ihnen geposteten Codes ansehen. Also verstecken Sie es lieber, bevor man Ihnen zeigt, wo Sie es sehen können und wo nicht.
Ich habe Ihren Rat befolgt.
 
fore-x:

Ich muss zum Beispiel dies tun - NormalizeDouble(lots,precision);

Was würde dies bewirken (MinLot und LotStep)?

Ich habe es nur skizziert. Es geht ungefähr so:
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:
Ich habe es nur skizziert. Es geht ungefähr so:

Oh, ich verstehe, es ist also eine wissenschaftliche Übung. Der Parameter wird nirgends gespeichert, so dass wir ihn kennen.

 
fore-x:

Oh, ich verstehe, es ist also eine wissenschaftliche Übung. Der Parameter wird nirgends gespeichert, so dass wir ihn kennen.

Sie kann nirgendwo im Terminal gespeichert werden, da die Hebelwirkung fließend sein kann und nur der Server sie kennt. Meiner Meinung nach ist die korrekteste Art der Berechnung die folgende:

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

 

Sagen Sie mir, warum es einen Fehler geben könnte 130

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

Sagen Sie mir, warum es einen Fehler geben könnte 130


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