[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 561

 
Vinsant:

Ajude-me a entender a lógica por trás deste indicador.

Você pode ser banido para descompilação aqui.
 
Reshetov:
Você poderia ser banido para descompilação aqui.
Onde você pode ver que se trata de uma decomposição? ) Infelizmente não consegui encontrar o autor e este indicador estava mostrando boas entradas no mercado em 2006, hoje o lembrei)) e quero entender em que se baseia sua lógica.
 
sergeev:

Processo via MinLot e LotStep

Preciso fazer por exemplo isto - NormalizeDuplo(lotes, precisão);

O que isto faria (MinLot e LotStep)?

 
Vinsant:
Onde mostra que está descompleta? )
Um moderador virá e descobrirá a lógica do código que você postou. Portanto, é melhor escondê-lo antes que eles mostrem onde você pode e não pode vê-lo.
 
Reshetov:
Um moderador virá e analisará a lógica do código que você postou. Portanto, é melhor escondê-lo, antes que lhe seja apontado onde você pode e não pode vê-lo.
Siga seu conselho.
 
fore-x:

Preciso fazer por exemplo isto - NormalizeDuplo(lotes, precisão);

O que isto faria (MinLot e LotStep)?

Acabei de esboçá-lo. É mais ou menos assim:
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:
Acabei de esboçá-lo. É mais ou menos assim:

Ah, estou vendo, então é um exercício científico. O parâmetro não é armazenado em nenhum lugar, portanto, saberemos.

 
fore-x:

Ah, estou vendo, então é um exercício científico. O parâmetro não é armazenado em nenhum lugar, portanto, saberemos.

Não pode ser armazenado em nenhum lugar no terminal, porque a alavanca pode estar flutuando e somente o servidor sabe disso. Na minha opinião, a forma mais correta de calculá-la é a seguinte:

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

 

Diga-me por que pode haver um erro 130

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

Diga-me por que pode haver um erro 130


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