[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 3 из 4«1234»
Форум Трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » TRIX осцилятор, доработка (Triple Exponential Average)
TRIX осцилятор, доработка
Дата: Пятница, 25.10.2013, 17:23 | Сообщение # 21 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
exolon, в этом основная задача трейдера, не просто прочитать но и систематизировать. В общем, основные шаги я подсказал. будет интересная стратегия - пишите.

Мы лучшие
 
Дата: Пятница, 25.10.2013, 19:19 | Сообщение # 22 Написал: exolon
Трейдер - Сержант
Группа: Пользователи
Сообщений: 23
Награды: 0
Статус: Offline
expforex, я как раз пытаюсь написать советник по своей стратегии, возникла такая проблема: нужно вывести сообщение с каждым новым баром

int start()
{
   int oldbars = Bars;
    .....

    if(oldbars<Bars)
   {
      Alert("ширина канала Боллинджера ",WidthCanalBands[0]);
      oldbars = Bars; 
   }
   return(0);


код не работает, во всяком случае сообщение не выводиться на экран, где ошибка
 
Дата: Пятница, 25.10.2013, 19:23 | Сообщение # 23 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
ошибка здесь
int oldbars = Bars;

надо как минимум так:
Код
int oldbars = 0;
int start()
{

.....

if(oldbars<Bars)
{
Alert("ширина канала Боллинджера ",WidthCanalBands[0]);
oldbars = Bars;
}
return(0);
}


Мы лучшие
 
Дата: Пятница, 25.10.2013, 21:20 | Сообщение # 24 Написал: exolon
Трейдер - Сержант
Группа: Пользователи
Сообщений: 23
Награды: 0
Статус: Offline

Код
extern int  CountBars = 60;

double LineUpperBands[];                             // верхняя линия Боллинджера
double LineLowerBands[];                             // нижнея линия Боллинджера
double LineCenterBands[];                            // среднея линия Боллинджера
double WidthCanalBands[];                            // ширина канала Боллинджера  

int oldbars=0;

int init()
   {

    return(0);
   }

int start()
   {
     
    int i,limit=CountBars;
     
    for(i=0;i<limit;i++)
    {
       LineUpperBands[i]=iBands(NULL,0,24,2,0,PRICE_WEIGHTED,MODE_UPPER,i);
       LineLowerBands[i]=iBands(NULL,0,24,2,0,PRICE_WEIGHTED,MODE_LOWER,i);
       LineCenterBands[i]=(LineUpperBands[i]+LineLowerBands[i])/2;  
       WidthCanalBands[i]=LineUpperBands[i]-LineLowerBands[i];      
    }   
    if(oldbars<Bars)
    {
       Alert("ширина канала Боллинджера ",WidthCanalBands[0]);
       oldbars = Bars;  
    }
    return(0);
   }


выводит ноль вместо моих расчетов
 
Дата: Пятница, 25.10.2013, 22:29 | Сообщение # 25 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
в алерте выводит 0?

Мы лучшие
 
Дата: Суббота, 26.10.2013, 09:17 | Сообщение # 26 Написал: exolon
Трейдер - Сержант
Группа: Пользователи
Сообщений: 23
Награды: 0
Статус: Offline
Цитата expforex ()
в алерте выводит 0?
ага
 
Дата: Суббота, 26.10.2013, 11:25 | Сообщение # 27 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
ну во первых ВЫ даже не инициализировали массивы. Им нужно присвоить количество ячеек. 

Код
extern int  CountBars = 60;  

double LineUpperBands[];                             // верхняя линия Боллинджера  
double LineLowerBands[];                             // нижнея линия Боллинджера  
double LineCenterBands[];                            // среднея линия Боллинджера  
double WidthCanalBands[];                            // ширина канала Боллинджера   

int oldbars=0;  

int init()  
    {  
ArrayResize(LineUpperBands,CountBars );
ArrayResize(LineLowerBands,CountBars );
ArrayResize(LineCenterBands,CountBars );
ArrayResize(WidthCanalBands,CountBars );
     return(0);  
    }  

int start()  
    {  
     
     int i,limit=CountBars;  
       
     for(i=0;i<limit;i++)  
     {  
        LineUpperBands[i]=iBands(NULL,0,24,2,0,PRICE_WEIGHTED,MODE_UPPER,i);  
        LineLowerBands[i]=iBands(NULL,0,24,2,0,PRICE_WEIGHTED,MODE_LOWER,i);  
        LineCenterBands[i]=(LineUpperBands[i]+LineLowerBands[i])/2;   
        WidthCanalBands[i]=LineUpperBands[i]-LineLowerBands[i];       
     }    
     if(oldbars<Bars)  
     {  
        Alert("ширина канала Боллинджера ",WidthCanalBands[0]);  
        oldbars = Bars;   
     }  
     return(0);  
    }


Мы лучшие
 
Дата: Суббота, 26.10.2013, 12:51 | Сообщение # 28 Написал: exolon
Трейдер - Сержант
Группа: Пользователи
Сообщений: 23
Награды: 0
Статус: Offline
придется ждать до понедельника, чтоб проверить как работает. у тебя в статье по автолоту вот такая формула приводиться: 
Код
[b]Депозит USD  Обратная котировка:
Лот= Свободная маржа*Риск*Кредитное плечо/Ask/100/Размер контракта

как вычислить размер контракта, MODE_LOTSIZE - откуда эта переменная


Сообщение отредактировал exolon - Суббота, 26.10.2013, 12:52
 
Дата: Суббота, 26.10.2013, 12:57 | Сообщение # 29 Написал: expforex
Трейдер - Генералиссимус
Группа: Администраторы
Сообщений: 27
Награды: 0
Статус: Offline
exolon, можешь запустить тестер поставить любого эксперта и запустить в режиме визуализации сверху накинуть индюк, или же положить данный файл в папку экспертов и запустить тест. 

Цитата exolon ()
как вычислить размер контракта, MODE_LOTSIZE - откуда эта переменная
   MarketInfo


Мы лучшие
 
Дата: Понедельник, 28.10.2013, 10:34 | Сообщение # 30 Написал: exolon
Трейдер - Сержант
Группа: Пользователи
Сообщений: 23
Награды: 0
Статус: Offline
expforex, что можно придумать, для того что бы 5 знаков после точки показывалось, а то у меня всего 4 знака выводиться
 
Форум Трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » TRIX осцилятор, доработка (Triple Exponential Average)
Страница 3 из 4«1234»
Поиск: