Прошу помочь с мартином
Добрый день. Прошу помочь с проблемой...
lease:
Есть код в советнике, который при закрытии предыдущего лота с убытком увеличивает значение переменной на 1:
double Lots1()
{
int file1; //инициализация лог-файла
int LossCount1 = GlobalVariableGet("Lot"+IntegerToString(Magicus1));//получение количества убыточных сделок на момент прошлого закрытия терминала (LossCount1)
double LOT = NormalizeDouble(AccountFreeMargin()/drawdown1*Point*MathPow(10,Digits-2)*DLot_percent1,1);//расчет лота в %от депозита
int total = OrdersHistoryTotal();//загрузка истории ордеров
for (int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicus1)//если ордер удовлетворяет условиям
{
if (OrderProfit() > 0)
{
LossCount1 = 0; //если получен профит - переменная LossCount1 обнуляется
}
else
{
LossCount1++; //если получен убыток - переменная LossCount1 увеличивается на 1
}
}
}
if (LOT>=MaxLot) LOT = MaxLot; //ограничение максимального размера лота
double Lot=LotsArray[LossCount1]*LOT; //расчет размера лота исходя из значения переменной LossCount1
file1=FileOpen("1EG.txt", FILE_READ|FILE_WRITE); //выгрузка значений переменной в файл (так обнаружилась ошибка)
FileSeek(file1, 0, SEEK_END);
FileWrite(file1,LossCount1);
FileClose(file1);
GlobalVariableSet("Lot"+IntegerToString(Magicus1),LossCount1); //запись нового значения переменной LossCount1 в глобальную переменную
if (Lot>10000) Lot=10000; //проверка максимально допустимого значения лота
return(Lot); //возврат расчетного значения лота в ордер
}
Уже второй пытаюсь понять, почему при тестировании советника переменная LossCount1 принимает значения 0,1,3,6,9,0,1,2,0,1,2,3,4,0 и т.д?
Проблема в том, что до получения первого профита переменная увеличивается не на +1, а на +2 и +3, а после первого профита увеличивается как положено на +1...