алгоритм рачсета лота по Фибоначчи mql4

 

кто то подскажет алгоритм расчета лота по фибоначчи.

например, при объеме первой сделки 0.01 лот последовательность Фибоначчи примет следующий вид:

последовательность увеличения лота.

0.01, 0.02, 0.03, 0.05, 0.08, 0.13, 0.21, 0.34, 0.55, 0.89, 1.44, 2.33, 3.77, 6.10…
 

А что конкретно то не ясно?

Lot(i)=Lot(i-2)+Lot(i-1);

i++;

 
pasha5282:

кто то подскажет алгоритм расчета лота по фибоначчи.

например, при объеме первой сделки 0.01 лот последовательность Фибоначчи примет следующий вид:

последовательность увеличения лота.

0.01, 0.02, 0.03, 0.05, 0.08, 0.13, 0.21, 0.34, 0.55, 0.89, 1.44, 2.33, 3.77, 6.10…
Наверняка, задумали Мартин прикрыть фИговым листиком от Fibonacci. ;)
 
borilunad:
Наверняка, задумали Мартин прикрыть фИговым листиком от Fibonacci. ;)

верно, но только во алгоритм для расчета лота при проиграши по фибо никак не удается реализовать.

а этот код с виду понятен но как его впихнут в советник чтобы начало работать, пока еще мучаюсь.

Lot(i)=Lot(i-2)+Lot(i-1);

i++;
 

нашол алгоритм на другом языку программирования но вот что то тоже не получается ((((((

fib1 = 1
fib2 = 1
 
n = input("Значение какого элемента ряда \
Фибоначчи вы хотите узнать? ")
n = int(n) # преобразование в целое число
 
i = 2 
while i < n:
    fib_sum = fib2 + fib1
    fib1 = fib2
    fib2 = fib_sum
    i += 1
 
print (fib_sum)


def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1) + fib(n-2)
 
pasha5282:

нашол алгоритм на другом языку программирования но вот что то тоже не получается ((((((

Если Вы не всостоянии решить эту элементарную задачу, то Вам надо обратиться сюда.
 
int fibonacci_lot(int v)
{
  int f, s;
   f = 1; // в идеале f=0
   s = 1 ;
   if (v < 3) return (1);
     while (v > 2)
      {
        f = f + s;
        f = f + s;
        s = f - s;
        f = f - s;
        v--;
      }
 return (s);//  результат будет 1,1,2,3,5,8,13.......
}


как то так  пока не проверял ... результат делить на 100 или 1000 что получить double числа


 
pasha5282:

верно, но только во алгоритм для расчета лота при проиграши по фибо никак не удается реализовать.

а этот код с виду понятен но как его впихнут в советник чтобы начало работать, пока еще мучаюсь.

Можно это:

  for(int i = 0; i < limit; i++)
  {    
// потом то, что Вам предложили выше
 
int fibonacci_lot(int v)
{
  int f, s;
   f = 1;
   s = 1 ;
   if (v < 3) return (1);
     while (v > 2)
      {
        s= f + s; // Ошибка?
        f = f + s;
        s = f - s;
        f = f - s;
        v--;
      }
 return (s);//  результат будет 1,1,2,3,5,8,13.......
}
 

нет всё правильно  результат в логе смотрите   .... единственое что надо начать в цикле не с еденицы а с двойки i=1 выставить i=2

//+------------------------------------------------------------------+
//|                                                test fiba lot.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
  
   for(int i=1; i<15 ; i++) Print(fibonacci_lot(i));
//----
   return(0);
  }
//+------------------------------------------------------------------+

int fibonacci_lot(int v)
{
  int f, s;
   f = 1; // в идеале f=0
   s = 1;
 if (v < 3) return (1);
  while (v > 2)
   {
     f = f + s;
     f = f + s;
     s = f - s;
     f = f - s;
     v--;
   }
 return (s);
}
 
pasha5282:

Правильно! 0+1=1; 1+1=2; и т.д. Чтобы получить 2, нужно сложить два предыдущих числа.

Потому проще умножать каждый последущий лот на 1.618 и, конечно, с нормализацией.

А ещё лучше последовать уже данному Вам совету:

Если Вы не в состоянии решить эту элементарную задачу, то Вам надо обратиться сюда.  

Причина обращения: