Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Храни исходные коды в MQL5 Storage. Это безопасно!
pasha5282
141
pasha5282 2013.01.30 15:53 

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

например, при объеме первой сделки 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…
Alexander Mostovnek
2367
Alexander Mostovnek 2013.01.30 15:58  

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

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

i++;

Boris
3900
Boris 2013.01.30 16:02  
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. ;)
pasha5282
141
pasha5282 2013.01.30 16:11  
borilunad:
Наверняка, задумали Мартин прикрыть фИговым листиком от Fibonacci. ;)

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

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

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

i++;
pasha5282
141
pasha5282 2013.01.30 16:14  

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

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)
PapaYozh
3768
PapaYozh 2013.01.30 16:45  
pasha5282:

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

Если Вы не всостоянии решить эту элементарную задачу, то Вам надо обратиться сюда.
ruslan
695
ruslan 2013.01.30 17:20  
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 числа


Boris
3900
Boris 2013.01.30 17:37  
pasha5282:

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

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

Можно это:

  for(int i = 0; i < limit; i++)
  {    
// потом то, что Вам предложили выше
pasha5282
141
pasha5282 2013.01.30 18:13  
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.......
}
ruslan
695
ruslan 2013.01.30 18:24  

нет всё правильно  результат в логе смотрите   .... единственое что надо начать в цикле не с еденицы а с двойки 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);
}
Boris
3900
Boris 2013.01.30 18:25  
pasha5282:

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

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

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

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий