Здравствуйте, гость ( Вход | Регистрация )

26 страниц V « < 11 12 13 14 15 > »   
Ответить в эту темуОткрыть новую тему
> Perceptron, Нейронная сеть
NoName
сообщение 6.5.2007, 21:20
Сообщение #121





Группа: Активный участник
Сообщений: 514
Регистрация: 1.5.2006
Из: Украина, Кременчуг
Пользователь №: 146
Спасибо сказали: 0 раз(а)



smile.gif
Если мы отключим советник, то у нас линия баланса перестанет рисоваться.
Нечему будет отскакивать wink.gif
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 7.5.2007, 7:18
Сообщение #122





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



На реале - отключим. На демо - оставим!
Кстати - сегодня с утра - приятный сюрприз -!
Наш советник приближается к удвоению начального депозита на демо!
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 9.5.2007, 12:19
Сообщение #123





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



to NoName:
Вот ты писал недавно -
"Сейчас мне хочется попробовать реализовать срабатывание советника не по открытию бара на "рабочем" (в нашем случае Н1) таймфрейме, а по открытию бара меньшего периода. Например М15 или даже М5. Тогда останется возможность тестирования и оптимизации на "Контрольных точках", но правда глубина истории по вышеназванным ТФ так же не велика."
Я прикинул вот каким образом.
Как уйти от случайности сигналов перцептрона? Мы работаем на н1 и сигналы берем с индикатора на этом же тф.
Но наши стопы, - вовсе не соответствуют этому тф - н1 !
Для н1 более подошли бы стопы - = от 35 до 55, - но никак не 80/90 !
Переходить на тф н4 ? Но тогда в сделках по ценам открытия мы будем "упускать" профит, - как иногда вот сейчас на нашем счете....
Можно брать сигналы индикатора с н4, - а работать по ценам закрытия н1.
А что если взять индикатор с большим периодом?
Т.е. создать искусственно, - как бы имитацию большого периода? И оптимизировать все остальные параметры.
Сделал это .
Результат получился оч. удовлетворительным!
На прибыли это отразилось, - в сторону увеличения на 15 % !
А вот просадка уменьшилась почти в 1.5 раза !!!!!
Еще не вставил отсечку в версию с этим индикатором!
ПрибыльныХ сделок за три года было 864, а убыточных всего 537, - прикинь! (при стопе=70) !
Ну а график баланса - изрядно выпрямляется ...! -


Эскизы прикрепленных изображений
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 31.7.2007, 10:42
Сообщение #124





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



to NoName:
По аналогии с обьединенной версией советника AI прикинул вот что. Система должна работать, если вместо реверсной версии мы просто вставим другую пару. Чтобы получился мультивалютный эксперт.
По системе ST+ENV, я думаю, есть целесообразность такого решения.
Попытался сделать это. Используя как образец обьединенную версию и Stoch_env_v3.
В сыром виде получается пока так:
Код
/+---------------------------------------------------------------------+
//|                                         mulutie.mq4                 |
//|                                     Copyright © 2007, Tradersforum. |
//|                                     http://www.tradersforum.net.ru/ |
//|                                            NoName(-and) & Leonid553 |
//+---------------------------------------------------------------------+

#property copyright "NoName(-and)& Leonid553"
#property link      "http://www.tradersforum.net.ru/"

//---- input parameters

extern string  GBPUSD= "Параметры GBPUSD";
extern int     MagicGBP=199;
extern bool    GBP=True;
extern int     GBPUSD_period=6;
extern int     GBP_Env_period=25;
extern int     GBP_Env_shift=1;
extern double  GBP_Env_deviation=20;
extern int     sl_GBPUSD = 70;
extern int     tp_GBPUSD = 70;


extern string  USDCHF= "Параметры USDCHF";
extern int     MagicCHF=991;
extern bool    CHF=false;
extern int     USDCHF_period=5;
extern int     CHF_Env_period=25;
extern int     CHF_Env_shift=1;
extern double  CHF_Env_deviation=20;
extern int     sl_USDCHF = 82;
extern int     tp_USDCHF = 82;



//-- Подключаемые модули ---------------
#include  <stdlib.mqh>
#include  <b-Lots.mqh>  //Переменный лот
//#include  <VisualTestingTools.mq4> //визуализация
//--------------------------------------
static int prevtime = 0;
static int spread   = 3;
//--
int ExpertBars;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//vTerminalInit();
//----------------
ExpertBars = Bars;
//----------------
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
/*{

bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }  

int _Order=isExpertOrder();


if (isNewBar) {
if (_Order!=0) ZeroBarOrd=true;  //есть ордер
else           ZeroBarOrd=false; //нет ордера
}*/
  {
//vTerminalRefresh();
//-------------------------------------------------------
bool isNewBar=false;
if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; }
//-------------------------------------------------------

if (isNewBar) {  

int spread = MarketInfo(Symbol(), MODE_SPREAD);
//-----------------------------------
//double gbp_Signal =perceptron  ();
//double chf_Signal =perceptron_r();

//----- Вывод информации на экран -----------------------------------------------------
string info="";
string on_off="-------------------------------------------------------------"+ "\r\n";
if (GBP) on_off=StringConcatenate (on_off," версия GBPUSD    - включена. ", "\r\n");
else         on_off=StringConcatenate (on_off," версия GBPUSD    - отключена. ","\r\n");
if (CHF)  on_off=StringConcatenate (on_off," версия USDCHF    - включена. ",  "\r\n");
else         on_off=StringConcatenate (on_off," версия USDCHF    - отключена. ", "\r\n");
//---------
info=StringConcatenate(info,on_off,"\r\n");
info=StringConcatenate(info,"\r\n");
//info=StringConcatenate(info, "Перцептрон прям.:    ", GeneralSignal,"\r\n" );
//info=StringConcatenate(info, "Перцептрон реверс.:  ", ReversSignal);
//--
Comment(info);
//-------------------------------------------------------------------------------------
  // for (int i=0; i<OrdersTotal(); i++) {  
  
  double Stochastic_array[49];
//------заполняем массив значениями Stochastic-----------------
int    i=0;
while (i<50)
{
Stochastic_array[i]= iStochastic(NULL, 0, GBPUSD_period, 3,3,MODE_SMA,0,MODE_MAIN, i);
i++;
}
//------------------------------------------------------


ArraySetAsSeries(Stochastic_array,true);

double
En0_low=iEnvelopesOnArray(Stochastic_array,0,  GBP_Env_period,0, GBP_Env_shift,GBP_Env_deviation,MODE_LOWER,0);

double
En0_up=iEnvelopesOnArray(Stochastic_array,0,  GBP_Env_period,0, GBP_Env_shift,GBP_Env_deviation,MODE_UPPER,0);

double Stochastic_0=iStochastic(NULL, 0, GBPUSD_period, 3,3,MODE_SMA,0,MODE_MAIN, 0);
double Stochastic_1=iStochastic(NULL, 0, GBPUSD_period, 3,3,MODE_SMA,0,MODE_MAIN, 1);
          
    
//=======================Начальное открытие ордера ===============================

// ====================================================================================================
=

} //isNewBar
//----
   return(0);  
  }
//+------------------------------------------------------------------+
//|  The PERCEPTRON - a perceiving and recognizing function          |

  
//---------------------------------------------------------------------------------+
//---- Функция проверки наличия ордеров эксперта ----------------------------------+
//---------------------------------------------------------------------------------+
// false - ордеров данного эксперта нет;                                           |
// true  - есть ордера данного эксперта;                                           |
//---------------------------------------------------------------------------------+
bool ExpertOrder (int VersionID){
//--
bool result=false;

int  _OrdersTotal=OrdersTotal();
//--
if (_OrdersTotal>0) {
    for (int n=0; n<_OrdersTotal; n++) {
  
      if (OrderSelect(n, SELECT_BY_POS, MODE_TRADES)) {
        if (OrderMagicNumber()==VersionID)
           { result=true;  break; }       //Найден ордер принадлежащий эксперту
        else  
           { result=false; }
       }      
     }        
   }
else { result=false; }  
//---------------------        
return(result);
}
//---------------------------------------------------------------------------------+

Трал пока не ставил - не к спеху!
после компиллирования выдает одинаковую ошибку (20 раз)
'Cnt' - variable not defined
Понятно что я и не рассчитывал с налёта получить результат. Да и для второй пары ещё не прицепил конверт на Стохастик.
Возможно что упустил что-то - http://forum.mql4.com/ru/5661
Что по твоему на первый взгляд здесь не работает?
---------------------------------------------------------------------------------
Всё ОК!
Перечитал сейчас свой пост и сам увидел - где ошибка! Исправил. Скомпиллировалось!

Сообщение отредактировал leonid553 - 1.8.2007, 11:20
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NoName
сообщение 31.7.2007, 15:12
Сообщение #125





Группа: Активный участник
Сообщений: 514
Регистрация: 1.5.2006
Из: Украина, Кременчуг
Пользователь №: 146
Спасибо сказали: 0 раз(а)



Не заметил вовремя этот пост. Но, смотрю, ты и без меня справилсяwink.gif
На будущее: variable not defined - переменная не определена.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 31.7.2007, 15:13
Сообщение #126





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Вставил трейлинг. Работает советник.
Но.... Не так, как надо. Похоже, он по ценам открытия работает. А не по всем тикам....
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NoName
сообщение 31.7.2007, 15:28
Сообщение #127





Группа: Активный участник
Сообщений: 514
Регистрация: 1.5.2006
Из: Украина, Кременчуг
Пользователь №: 146
Спасибо сказали: 0 раз(а)



Совершенно верно.
Всё что помещено в этих скобках будет срабатывать только при появлении нового бара:
Код
if (isNewBar)
{

}

Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 31.7.2007, 15:42
Сообщение #128





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Понятно. Спасибо.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
leonid553
сообщение 31.7.2007, 15:57
Сообщение #129





Группа: Активный участник
Сообщений: 2 002
Регистрация: 14.4.2006
Из: г.Самара
Пользователь №: 28
Спасибо сказали: 11 раз(а)



Убрал - if (isNewBar) { .... }
И заработал эксперт так как надо!
Сейчас вставляю второй трал и цепляю конверт на стох для второй пары!
Да! Насколько реально предусмотреть трейлинг отдельно для длинной и для короткой позиции?
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
NoName
сообщение 31.7.2007, 16:41
Сообщение #130





Группа: Активный участник
Сообщений: 514
Регистрация: 1.5.2006
Из: Украина, Кременчуг
Пользователь №: 146
Спасибо сказали: 0 раз(а)



Цитата
Да! Насколько реально предусмотреть трейлинг отдельно для длинной и для короткой позиции?


Для того что бы не править библиотеку с тралом можно поместить вот такой код в функцию Start().
Код
if (UseTrailing == True)
{
bool   fm;
int    err;
double ldOpen=0;
double ldTake=0;

for (i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) {
        if (OrderType()==OP_BUY) {
          if (!ProfitTrailing || (Bid-OrderOpenPrice())>TrailingBuy*Point) {
            if (OrderStopLoss()<Bid-(TrailingBuy+TrailingStep-1)*Point) {
            
                ldOpen=OrderOpenPrice();
                ldTake=OrderTakeProfit();
        
              if (IsTradeAllowed()) {
              fm=OrderModify(OrderTicket(), ldOpen, Bid-TrailingBuy*Point, ldTake, 0, clModifyBuy);
              if (!fm) {
              err=GetLastError();
              Print("Error(",err,") modifying SL: ");
              }
             }
  
            }
          }
        }
        if (OrderType()==OP_SELL) {
          if (!ProfitTrailing || OrderOpenPrice()-Ask>TrailingSell*Point) {
            if (OrderStopLoss()>Ask+(TrailingSell+TrailingStep-1)*Point || OrderStopLoss()==0) {
              
              ldOpen=OrderOpenPrice();
              ldTake=OrderTakeProfit();
              
              if (IsTradeAllowed()) {
              fm=OrderModify(OrderTicket(), ldOpen, Ask+TrailingSell*Point, ldTake, 0, clModifySell);
              if (!fm) {
              err=GetLastError();
              Print("Error(",err,") modifying SL: ");
              }
             }

            }
          }
        }
      }
    }
  }
}



А также не забыть объявить внешние переменные отвечающие за работу трала:
Код

extern string _Parameters_Trailing = "----- Параметры Трейлинга -----";
extern bool UseTrailing    = false;   // Использовать трейлинг
extern bool ProfitTrailing = false;   // Включать трейлинг когда получен профит
extern TrailingBuy  =20;               // Размер трала для позиции Buy
extern TrailingSell =20;                // Размер трала для позиции Sell
extern int  TrailingStep   = 2;       // Шаг трейлинга
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

26 страниц V « < 11 12 13 14 15 > » 
Ответить в эту темуОткрыть новую тему

 



- Текстовая версия Сейчас: 13.5.2025, 21:05