ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Как се създава и тества forex система. Expert Advisors и бектестове на системи за автоматична търговия.
Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 30 ное 2017, 05:38

добре де гледам че и в Мт4 нацвъкали разни "инклудници" в папаката include
например чрез #include "Custom.mqh"
където Custom потребителския индик чертае в чарта а основния код е в сепарирания прозорец
така няма ли да го излъжеме
да не говориме че не съм го ползвал и не знам как да посоча кой е потребителския индикатор в директивата #include "Custom.mqh" то май някакъв прозорец изкачало където да го посочиш потр. индикатор, ама кой ти гледал вълци че да знае с какво се хранят
Форекса е оръжие за масово поразяване

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 30 ное 2017, 07:34

Bessen,

Защо при публикуването на код не го затваряш в директивата Code, за да се подрежда както е в оригинала?

Прави се така:

Код: Избери всички

[Code]
  тук се пише кода
    който е подравнен
      както е в оригинала
За край на кода се слага
[/Code]

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 30 ное 2017, 07:50

saxsten написа:
30 ное 2017, 05:38
добре де гледам че и в Мт4 нацвъкали разни "инклудници" в папаката include
например чрез #include "Custom.mqh"
където Custom потребителския индик чертае в чарта а основния код е в сепарирания прозорец
така няма ли да го излъжеме
да не говориме че не съм го ползвал и не знам как да посоча кой е потребителския индикатор в директивата #include "Custom.mqh" то май някакъв прозорец изкачало където да го посочиш потр. индикатор, ама кой ти гледал вълци че да знае с какво се хранят
С директивата #include посочваш външни файлове, чиито код се вмъква в кода на текущия експерт, и нищо повече. Във файла Custom.mqh се намира само един пример как се пише потребителски индикатор, и нищо повече.

Ако искаш да напишеш твой си индикатор, трябва да си напишеш собствен клас, който да наследява класа CIndicator. Ако много ти се харесва кода в класа CiCustom, копирай го в твоя клас, или пък директно можеш да наследиш и CiCustom. И в двата случая обаче ще трябва да напишеш отново трите виртуални метода GetData, Type и Initialize, където да опишеш собствената си логика.

ПП: Ти разбираш ли от обектно-ориентирано програмиране, или още си на етап структурно програмиране? Питам, за да знам аз и другите колеги по какъв начин да ти отговаряме на зададените въпроси.

Марио Димитров
Мнения: 1992
Регистриран: 10 авг 2010, 18:08
5 получени
2 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Марио Димитров » 30 ное 2017, 08:49

saxsten,
Водата тече по пътя на най-малкото съпротивление!

На самия индикатор,който е в отделен прозорец,му казваш да нарисува каквото ти искаш,където искаш.

Код: Избери всички

int deinit()
  {
   DeletesDraw("Името");
   return(0);
  }
int start()
  {
   [u]Някакви си твои изчисления[/u]
            name1="Up "+i;
            DrawArow(Име,Прозорец,Време,Стойност,Стрелка,Стил,Дебелина,Цвят);
   return(0);
  }
//+------------------------------------------------------------------+
void DrawArow(string name,int wind,datetime time1,double value,int mod,int style,int wid,color col)
  {
   ObjectCreate(name,OBJ_ARROW,wind,time1,value);
   ObjectSet(name,OBJPROP_ARROWCODE,mod);
   ObjectSet(name,OBJPROP_COLOR,col);
   ObjectSet(name,OBJPROP_STYLE,style);
   ObjectSet(name,OBJPROP_WIDTH,wid);
  }
//+------------------------------------------------------------------+
void DeletesDraw(string prefix)
  {
   for(int i=ObjectsTotal()-1;i>=0;i--)
     {
      string name=ObjectName(i);
      if(StringFind(name,prefix)==0)
        {
         ObjectDelete(name);
        }
     }
  }
//+------------------------------------------------------------------+
Това е най лесния вариант.
Търгувайте това, което виждате на графиките

Марио Димитров
Мнения: 1992
Регистриран: 10 авг 2010, 18:08
5 получени
2 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Марио Димитров » 30 ное 2017, 08:55

Вариант 2,
Ако не искаш да слагаш индикатора на графиката си го викаш(през експерт или друг индикатор) или си написваш неговата логика в тяло,което ще използваш.Аз лично не бих писал нещо наново,щом го има вече написано.

Код: Избери всички

Викам си = iCustom(Symbol(),0,"Име",Твоите параметри,i);
Написваш си условие,при което да рисува и използваш функциите,които са в горния код.
Търгувайте това, което виждате на графиките

Марио Димитров
Мнения: 1992
Регистриран: 10 авг 2010, 18:08
5 получени
2 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Марио Димитров » 30 ное 2017, 09:00

Ето как изглежда тялото на индикатора,който чертае автоматичните тренд линии.

Код: Избери всички

//+------------------------------------------------------------------+
//|                                               Ind_Trend_Line.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016,mario"
#property link      ""
#property indicator_chart_window
extern int             See_Bars  = 5000;
extern ENUM_TIMEFRAMES WorkTime  = 0;
extern int             See_Line  = 8;
extern int             See_Mark  = 20;
extern int             See_Arrow = 300;
extern bool            High_Low  = true;
extern bool            Close_    = false;
#include               <Trend_Line_Diver.mqh>
//+------------------------------------------------------------------+
int init(){ 
   return(0);
  }
int deinit(){
   ObjectsDeleteAll();
   Comment("");
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   Show(See_Bars,Symbol(),WorkTime,See_Line,See_Mark,See_Arrow,High_Low,Close_,true);   
   return(0);   
  }
//+------------------------------------------------------------------+
Изнесена функция в инклудито.
Прикачени файлове
EURUSDH1.png
EURUSDH1.png (41.59 KБ) Видяна 278 пъти
Търгувайте това, което виждате на графиките

Марио Димитров
Мнения: 1992
Регистриран: 10 авг 2010, 18:08
5 получени
2 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Марио Димитров » 30 ное 2017, 09:06

saxsten написа:
30 ное 2017, 05:38
добре де гледам че и в Мт4 нацвъкали разни "инклудници" в папаката include
например чрез #include "Custom.mqh"
където Custom потребителския индик чертае в чарта а основния код е в сепарирания прозорец
така няма ли да го излъжеме
да не говориме че не съм го ползвал и не знам как да посоча кой е потребителския индикатор в директивата #include "Custom.mqh" то май някакъв прозорец изкачало където да го посочиш потр. индикатор, ама кой ти гледал вълци че да знае с какво се хранят
Това е кода,който ти дадох за генерирането на Магика.
Обърни внимание как викам "бутонките" !

Код: Избери всички

//+------------------------------------------------------------------+
//|                                                      saxsten.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016,mario"
#property link      ""
#property strict
int     sum;
string  sy="";
bool    activate;
#include <ChartObjects\ChartObjectsTxtControls.mqh>
CChartObjectButton  m_button;
CChartObjectButton  m_button1;
//+------------------------------------------------------------------+
int init()
  {
   activate=false;
   if(ObjectFind(0,"ButtonSELL")<0)
     {
      Button_Sell("SELL",900,30);
     }
   if(ObjectFind(0,"ButtonBUY")<0)
     {
      Button_Buy("BUY",900,5);
     }
   if(sy=="" || sy=="0") sy=Symbol();
   activate=true;
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   Comment("");ObjectDelete(0,"ButtonBUY");ObjectDelete(0,"ButtonSELL");
   return(0);
  }
//+------------------------------------------------------------------+
//|Create Button1 function                                           |
//+------------------------------------------------------------------+
void Button_Buy(const string name,const int x,const int y)
  {
   m_button.Create(0,"Button"+name,0,x,y,50,15);
   m_button.Description("BUY");
   m_button.FontSize(8);
   m_button.Color(clrBlack);
   m_button.BackColor(clrDeepSkyBlue);
   m_button.BorderColor(clrWhite);
  }
//+------------------------------------------------------------------+
//|Create Button2 function                                           |
//+------------------------------------------------------------------+
void Button_Sell(const string name,const int x,const int y)
  {
   m_button1.Create(0,"Button"+name,0,x,y,50,15);
   m_button1.Description("SELL");
   m_button1.FontSize(8);
   m_button1.Color(clrBlack);
   m_button1.BackColor(clrOrangeRed);
   m_button1.BorderColor(clrWhite);
  }
//+------------------------------------------------------------------+
//|Magic Number function                                             |
//+------------------------------------------------------------------+
int Magic_Number(string sym)
  {
   int st,cnt,s=StringLen(sym);
   for(cnt=0;cnt<s;cnt++)
     {
      st=StringGetChar(sym,cnt);
      sum=sum+st;
     }
   return(sum);
  }
//+------------------------------------------------------------------+
//|Click function                                                    |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   int send;
   if(id==CHARTEVENT_OBJECT_CLICK)
     {
      if(ObjectFind(0,"ButtonBUY")==0 && sparam=="ButtonBUY")
        {
         send=OrderSend(sy,OP_BUY,0.1,Ask,0,0,0,"Hand",Magic_Number(sy),0,Blue);
        }
      if(ObjectFind(0,"ButtonSELL")==0 && sparam=="ButtonSELL")
        {
         send=OrderSend(sy,OP_SELL,0.1,Bid,0,0,0,"Hand ",Magic_Number(sy),0,Red);
        }
     }
  }
//-------------------------------------------------------------------+
//| Expert start function                                            |
//+------------------------------------------------------------------+ 
int start()
  {
   if(!activate) return(0);
   m_button.State(false);
   m_button1.State(false);
   Comment("\n comm = ",Magic_Number(sy));
   return(0);
  }
//+------------------------------------------------------------------+

Търгувайте това, което виждате на графиките

Потребителски аватар
flow
Мнения: 158
Регистриран: 16 фев 2014, 12:17
2 получени
6 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от flow » 30 ное 2017, 11:17

Привет, колеги,
Ще прекъсна дискусията по програмиране, за да питам нещо. Някой имали индикатора W%R във вид на хистограма?

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 30 ное 2017, 16:41

flow написа:
30 ное 2017, 11:17
Привет, колеги,
Ще прекъсна дискусията по програмиране, за да питам нещо. Някой имали индикатора W%R във вид на хистограма?
на, дръж, заповядай :smile:

Код: Избери всички

//+------------------------------------------------------------------+
//|                                      Williams’ Percent Range.mq4 |

//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//----
#property indicator_separate_window
#property indicator_level1 0
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 White

#property indicator_width1 2
#property indicator_width2 2
//---- input parameters
extern int p = 2,Bar=1000;
//---- buffers
double L[],L1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
//---- indicator buffer mapping
  IndicatorShortName("%R(" + p  + ")");
  IndicatorBuffers(2);
  
   SetIndexBuffer(0, L);
  SetIndexStyle (0,DRAW_HISTOGRAM);  
    SetIndexLabel(0,"L");
   SetIndexDrawBegin(0, p );
   
  SetIndexBuffer(1, L1);
  SetIndexStyle (1,DRAW_HISTOGRAM); 
    SetIndexLabel(1,"L1");
   SetIndexDrawBegin(1, p );
   
   
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Williams’ Percent Range                                          |
//+------------------------------------------------------------------+
int start()
  { int i;      
     {for(i=Bar; i>=0; i--)      
         
  L1[i] = 2*(Close[i]-High[iHighest(NULL,0,MODE_HIGH,p,i)] )/
    (High[iHighest(NULL,0,MODE_HIGH,p,i)] - Low[iLowest(NULL,0,MODE_LOW,p,i)])+1;}
         
         
          return(0); }
//============================
Форекса е оръжие за масово поразяване

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 30 ное 2017, 23:55

Марио Димитров написа:
30 ное 2017, 08:55
Вариант 2,
Ако не искаш да слагаш индикатора на графиката си го викаш(през експерт или друг индикатор) или си написваш неговата логика в тяло,което ще използваш.Аз лично не бих писал нещо наново,щом го има вече написано.

Код: Избери всички

Викам си = iCustom(Symbol(),0,"Име",Твоите параметри,i);
Написваш си условие,при което да рисува и използваш функциите,които са в горния код.
Абе Марио това което ти и VGC и останалите ми приказвате да го правя:
Пишеш си индикатора със #property indicator_separate_window , а на чарта рисуваш със ObjectCreate, като си измисляш тактика за именуване с префикс
,кажи речи съм го направил просто ме мързи да го довърша

Код: Избери всички

//+------------------------------------------------------------------+
//|                                      Williams’ Percent Range.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//----
#property indicator_separate_window
#property indicator_level1 0
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 White

#property indicator_width1 2
#property indicator_width2 2
//---- input parameters
extern int p = 2,Bar=1000;
//---- buffers
double L[],L1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
//---- indicator buffer mapping
  IndicatorShortName("%R(" + p  + ")");
  IndicatorBuffers(2);
  
   SetIndexBuffer(0, L);
  SetIndexStyle (0,DRAW_HISTOGRAM);  
    SetIndexLabel(0,"L");
   SetIndexDrawBegin(0, p );
   
  SetIndexBuffer(1, L1);
  SetIndexStyle (1,DRAW_HISTOGRAM); 
    SetIndexLabel(1,"L1");
   SetIndexDrawBegin(1, p );
   
   
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Williams’ Percent Range                                          |
//+------------------------------------------------------------------+
int start()
  { int i;      
     {for(i=Bar; i>=0; i--)      
         
  L1[i] = 2*(Close[i]-High[iHighest(NULL,0,MODE_HIGH,p,i)] )/
    (High[iHighest(NULL,0,MODE_HIGH,p,i)] - Low[iLowest(NULL,0,MODE_LOW,p,i)])+1;}
         
       OBEKT(); 
             
          return(0); }
//============================

 //============================================== 
     int OBEKT(){

//--- служебные массивы
   double Ups[],Downs[];
   datetime Times[];
//--- установим для массивов признак таймсерии
   ArraySetAsSeries(Ups,true);
   ArraySetAsSeries(Downs,true);
   ArraySetAsSeries(Times,true);
//--- сбросим код ошибки
   ResetLastError();
//--- скопируем таймсерию,содержащую время открытия последних 1000 баров
   int copied=CopyTime(NULL,0,0,1000,Times);
   if(copied<=0)
     {
      Print("Не удалось скопировать времена открытия за последние 1000 баров");
      return(0);
     }
//--- подготовим массивы Ups и Downs
   ArrayResize(Ups,copied);
   ArrayResize(Downs,copied);
//--- скопируем значения индикатора iFractals
   for(int i=0;i<copied;i++)
   {
      Ups[i]=iFractals(NULL,0,MODE_UPPER,i);
    Downs[i]=iFractals(NULL,0,MODE_LOWER,i);
   }
//---
   int upcounter=0,downcounter=0; // будем в них подсчитывать количество стрелок
   bool created;// будем получать результат попытки создания объекта
   for( i=2;i<copied;i++)// пробежимся по значениям индикатора iFractals
     {
      if(Ups[i]!=0)// нашли верхний фрактал
        {
         if(upcounter<10)// создаем не более 10 объектов "вверх"
           {
            //--- попробуем создать объект "вверх"
            created=ObjectCreate(0,string(Times[i]),OBJ_ARROW_DOWN,0,Times[i],Ups[i]);
            if(created)// если создался - сделаем ему тюнинг
              {
                //--- точка привязки сверху, чтобы не наезжать на бар
               ObjectSetInteger(0,string(Times[i]),OBJPROP_ANCHOR,ANCHOR_TOP);
               //--- последний штрих - покрасим
               ObjectSetInteger(0,string(Times[i]),OBJPROP_COLOR,clrWhite);
               upcounter++;
              }
           }
        }
      if(Downs[i]!=0)// нашли нижний фрактал 
        {
         if(downcounter<10)// создаем не более 10 объектов "вниз"
           {
            //--- попробуем создать объект "вниз"
            created=ObjectCreate(0,string(Times[i]),OBJ_ARROW_UP,0,Times[i],Downs[i]);
            if(created)// если создался - сделаем ему тюнинг
              {
                //--- точка привязки снизу, чтобы не наезжать на бар
               ObjectSetInteger(0,string(Times[i]),OBJPROP_ANCHOR,ANCHOR_BOTTOM);
             
               //--- последний штрих - покрасим
               ObjectSetInteger(0,string(Times[i]),OBJPROP_COLOR,clrAqua);
               downcounter++;
             } } }}}
Проблема не е в това да да се чертаят стрелкички чрез ObjectCreate а в това да се заобиколи директивата
#property indicator_separate_window
чрез някакво условно компирлиране
--------------------------------------------------------
Матеев аз от нищо не разбирам бре аз съм самоук и като такъв за сега се справям по добре от някои "разбирачи"
Форекса е оръжие за масово поразяване

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 01 дек 2017, 07:57

saxsten написа:
30 ное 2017, 23:55
.......
Проблема не е в това да да се чертаят стрелкички чрез ObjectCreate а в това да се заобиколи директивата
#property indicator_separate_window .......
Наистина е голям проблем да се смени гумата на една лека кола по време на движение ..... Ти искаш дори да смениш двигателя, без да спираш колата. Ако наистина това ще ти достави голямо удоволствие, продължавай да се опитваш, и недей да слушаш другите, когато ти казват, че това е невъзможно. Да, то наистина е невъзможно, но нали все пак ти търсиш удоволствието от опитите, а не удовлствие от спечелване на състезанието.

ПП: Да, наистина понякога самоуките постигат повече от учените, но това не е правило, а по-скоро изключение. Правило е обаче самоуките да си въобразяват, че са най-великите на света. За справка виж Ангел от другия форум.

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 01 дек 2017, 08:21

Да си кажа и моето мнение за генерирането на Magic Number, с което сте запълнили половината от тази тема. Според мене е една абсолютна ЛОГИЧЕСКА БЕЗСМИСЛИЦА да го генерирате от името на символа. Самите ордери можете уникално да ги разпознавате именно по името на символа и няма нужда да записвате някакво допълнително число за тази цел.

Правилния начин е Magic номера да се генерира от ИМЕТО НА СТРАТЕГИЯТА, от нейната версия, от параметрите, с които е пусната да работи, и от всичко друго, но не и от името на символа, което е абсолютно безсмислено. Не съществува универсален метод за автоматично определяне на Magic Number поради простата причина, че всяка една стратегия има различна логика на своето написване, а от там и различна логика за разпознаване на СВОИ или ЧУЖДИ ордери. Например някои стратегии не ги бърка таймфрейма, на който са пуснати, а други ги бърка. Следователно при първите таймфрейма не участва в логиката за Magic Number, а при вторите задължително трябва да участва. Освен това има и стратегии, които се нуждаят не от един, а от цял диапазон от Magic номера, за да закодират в тях някаква своя вътрешна логика.

Следователно най-добрия начин за раздаване на Magic номера е да се използва принципа на раздаване за IP адреси от DHCP сървърите. Тоест създавате си някакъв сървър (ръчен или автоматичен) и му давате изключителните пълномощия само той да раздава Magic номера и никой друг. Сървъра си поддържа база данни с раздадените номера, и никога в своя живот не ги дублира, за да не създаде конфликт. Всяка една стратегия може да си поиска един или повече номера, както и един или повече цели непрекъсваеми диапазони от номера. Сървъра ги дава тези номера, и си записва в базата с данни на кого какво е дал.

И в началния момент от време най-добрия такъв сървър се явява един файл на Excel, поддържан на ръка от самия разработчик. Ако искате, разбийте си пространството от Magic номера на участъци с фиксиран брой по подобие на публичните IP адреси, и след това раздавайте цели мрежи от по 256 или от по 65536 номера, и после оставете експерта сам да си определя вътрешната логика как да ги ползва тези свои собствени номера. Вътре в кода си експерта може да използва битови маски за бърза уникална идентификация на собствените си номера, и в рамките на една маска може да си раздава собствена последователност, подчинена на някаква собствена логика.

Вижте как е организирано IPv4 адресното пространство, и използвайте същата логика - тя е перфектна. Раздаването на мрежи от Magic номера се организира по принципа на IPv4, ресолва се на принципа на DNS сървърите, а в рамките на един експерт получените номера се раздават на принципа на DHCP сървърите.

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 01 дек 2017, 09:00

Ето един пример как може да се организира раздаването на Magic номера:
1. 32-та бита на Magic номера се разбиват на 4 групи от по 8 бита
2. Последната четворка от 8 бита определя конкретни 256 номера, които можем да ги наречем Мрежа клас C
3. Предпоследната четворка от 8 бита определя 1 мрежа от клас B, която съдържа 256 мрежи клас C
4. Втората четворка определя 1 мрежа от клас A, която съдържа 256 мрежи от клас B

Тоест в цялото адресно пространство ще имаме 256 мрежи от клас A, във всяка от които има 256 мрежи от клас B, във всяка от които има 256 мрежи от клас C, във всяка от които има по 256 Magic номера. При така направената организация приемаме следното:

Клас A мрежите ще се раздават на ФАМИЛИИ ОТ ЕКСПЕРТИ. Например:
0. Резервирано за ръчна и полуавтоматична търговия (ръчни ордери, отваряни със скрипт с Magic Number)
1. Скалпиращи експерти
2. Price Action експерти
3. Експерти, търгуващи новини
4. Експерти, търгуващи гапове
5. Арбитриращи експерти
6. Дългосрочни инвестиционни експерти
7. Мултивалутни експерти
...........
256. Последна възможна фамилия от експерти

В рамките на всяка клас А фамилия се раздават клас B мрежи на всеки един конкретен експерт с конкретно име и конкретна логика.

В рамките на всеки един конкретен експерт има конкретни негови версии, и всяка една от тези версии ще получава клас C мрежа, в която има 256 Magic номера за нейно вътрешно използване по собствено усмотрение. Разбира се нова клас C мрежа няма да давате на всяка поредна версия, а само тогава, когато новата версия промени логиката на използване на Magic номера на предишната версия.

При тази организация ще имате следния капацитет за раздаване на Magic номера.
1. Могат да се измислят до 256 възможни фамилии от експерти.
2. Във всяка една фамилия могат да се измислят по 256 различни експерта.
3. Всеки един експерт в своите версии може до 256 пъти да си смени логиката на използване на Magic номера.
4. Всяка една версия на експерта може да оперира с до 256 различни Magic номера и да ги използва по собствено усмотрение във вътрешната си логика.

И всичко това се описва в един единствен файл на Excel с няколко таблици. А когато забогатеете като Бил Гейтс, чак тогава можете да си позволите да напишете специален сървър, автоматично раздаващ мрежи от Magic номера на милионите експерти, които хилядите инвестиционни отдели на вашата фирмат ще генерират всеки божи ден.

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 01 дек 2017, 12:44

А бе Матеев до гуша си ми дошел с празниге си приказки ,колко си бил велик, колко голям програмист си и колко кода си написал
Ами покажи нещо твое,че да видиме колко си велик
Аз дали съм самоук или не съм, дали се смятам за велик или не, но ако погледнеш в този форум и в другия доста кодове имам пуснати, така за богда прости
Може би следвам примера на Марио и на vcg но по принцип ние тука така си практикуваме и не се правим на велики
Така че покажи нещо твое за да те видим какво си в действителност.

ПП И пак нищо не си разбрал от дискусията с магик номерата
Идеята е като се смени графиката , експерта автоматично да си генерира друг магик номер принадлежащ за съотвентия инструмент, така че да може да работят различните копия от експерта в отделни прозорци в собсвен инф поток и да не си пречат взаимно
А ти какво каза - било безмислица това да се сменя мажик номера според графиката и след това още много кошници с глупости
на кого му пука сървъра какви номера ще раздава
като ти казвам че дрънкаш без покритие ето подобни неща имам предвид
Просто не си в час и си приказваш каквото ти доде
Ама аз нямам всеки път време за да ти анализирам конкретните глупости и простотии
Сега това е просто изключение и както е тръгнало за да не ми губиш времето ще взема да те туря в игнора
Последна промяна от saxsten на 01 дек 2017, 13:04, променено общо 1 път.
Форекса е оръжие за масово поразяване

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 01 дек 2017, 13:03

Аз съм си разказал части от моята концепция в няколко различни форума, включая и в този. Ти можеш ли да се похвалиш със същото?

Това, че се правя на велик, ти си го измисли. От самото начало ти играеш контра на всеки един мой постинг хей-така от елементарна ЗЛОБА. Друго нищо не ми хрумва за твоето неадекватно поведение. Ако случайно не си забелязал, само ти и Ангел имате подобно поведение спрямо това, което го пиша. Опитай се да събереш две и две и ми кажи какво трябва да си мисля за тебе.

По въпроса с исканията ти - хайде изясни си какво точно искаш, за да спреш да злобееш, и аз ще го изпълня. Но не забравяй, че и ти трябва да изпълниш твоята си част от договорката. Ще спреш да злобееш и ще публикуваш толкова реда твой личен код (а не чужд), колкото публикувам и аз. Съгласен ли си?

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 01 дек 2017, 13:22

saxsten написа:
01 дек 2017, 12:44
.......
Идеята е като се смени графиката , експерта автоматично да си генерира друг магик номер принадлежащ за съотвентия инструмент, така че да може да работят различните копия от експерта в отделни прозорци в собсвен инф поток и да не си пречат взаимно
А ти какво каза - било безмислица това да се сменя мажик номера според графиката и след това още много кошници с глупости
на кого му пука сървъра какви номера ще раздава
като ти казвам че дрънкаш без покритие ето подобни неща имам предвид.....
Явно ти нищо не си разбрал и дрънкаш без покритие .......

Кажи ми как твоя автоматичен код ще помогне, ако един и същи експерт се пусне 5 пъти на един и същи финансов инструмент, но с различни настройки? Нали след рестарт на метатрейдера експерта ще си загуби собствените сделки.

Кажи ми как ще привържеш Magic номера към номера на конкретен чарт, след като метата след всеки рестарт генерира други номера на чартове?

Кажи ми как ще накараш експерта да си познае собствените сделки, ако ти гръмне един компютър и експерта го пуснеш да работи на друг?

Как един и същи експерт на един и същи символ с различни настройки може да работи на 5 различни компютъра, но върху един и същи акаунт?

Въобще има 100 различни начина твоята явтоматика за генериране на Magic Number да се обърка, но като че ли ти не го разбираш това. И вместо да прочетеш нечие чуждо мнение от човек, който отдавна се е блъскал по същите тези проблеми, ти тръгваш с рогата напред и обявавяш за глупак всеки, който има малко по-различно мнение от твоето.

С молба малко да си поспреш злобата и да си задържиш критиките за себе си, защото изпадналия в самозаблуда може да не съм аз, а ти. Всеки има правото да си изкаже мнението по въпроса, и това че мнението е различно от твоето не означава, че веднага трябва да започнеш да злобееш, да се подиграваш и да обиждаш.

Потребителски аватар
saxsten
Мнения: 1307
Регистриран: 04 апр 2010, 23:16
3 получени
1 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от saxsten » 02 дек 2017, 01:23

матеев не ми губи времето
покажи нещо твое някакъв работещ код иначе за мен си просто поредния смешник и въздухар
Форекса е оръжие за масово поразяване

Mateev
Мнения: 199
Регистриран: 02 окт 2017, 10:04
28 получени
31 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от Mateev » 02 дек 2017, 07:31

saxsten написа:
02 дек 2017, 01:23
матеев не ми губи времето
покажи нещо твое някакъв работещ код иначе за мен си просто поредния смешник и въздухар
Все още не си дорасъл да разбереш това, което го пиша по форумите, и затова злобееш. Просто Ангел номер 2 .....

Колкото до кодовете ми - всичките са работещи и са много добре обмислени и документирани. Коментарите в тях са повече, отколкото кода. За такива елементарни неща, като например Magic Number или пък рисуването на обекти по графиката, въобще няма и да си помисля да задавам въпроси по форумите. Прекалено са дребни като проблеми и са прекалено на ниско ниво. Ако ти все още задаваш такива въпроси, значи все още си на кота нула. При това положение е нормално всичко от по-високите нива да ти изглежда като празни приказки. Така е и с Ангел, който все още не е излязъл от детската градина.

Въпреки това аз не съм злобар и се опитвам да обяснявам на ниско ниво така, щото да ме разберете. Ти вместо да благодариш, изпадаш в бясна злоба, че някой знае и може повече от тебе. Дори и да започна да публикувам работещи кодове на различни класове, това само ще те озлоби още повече, защото ще осъзнаеш, че не ги разбираш въпреки перфектната документация.

ПС: Между другото публикуването на много класове е в плановете ми и постепенно ще започна да го правя, само че няма да го правя това заради тебе, а заради хората, кото ме разбират и на които това може да им влезе в употреба.

Потребителски аватар
flow
Мнения: 158
Регистриран: 16 фев 2014, 12:17
2 получени
6 дадени

Re: ЕА, скриптове, индикатори и т.н. с ОТВОРЕН КОД

Мнение от flow » 04 дек 2017, 09:04

saxsten написа:
30 ное 2017, 16:41
flow написа:
30 ное 2017, 11:17
Привет, колеги,
Ще прекъсна дискусията по програмиране, за да питам нещо. Някой имали индикатора W%R във вид на хистограма?
на, дръж, заповядай :smile:

Код: Избери всички

//+------------------------------------------------------------------+
//|                                      Williams’ Percent Range.mq4 |

//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
//----
#property indicator_separate_window
#property indicator_level1 0
#property indicator_buffers 2
#property indicator_color1 Aqua
#property indicator_color2 White

#property indicator_width1 2
#property indicator_width2 2
//---- input parameters
extern int p = 2,Bar=1000;
//---- buffers
double L[],L1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
//---- indicator buffer mapping
  IndicatorShortName("%R(" + p  + ")");
  IndicatorBuffers(2);
  
   SetIndexBuffer(0, L);
  SetIndexStyle (0,DRAW_HISTOGRAM);  
    SetIndexLabel(0,"L");
   SetIndexDrawBegin(0, p );
   
  SetIndexBuffer(1, L1);
  SetIndexStyle (1,DRAW_HISTOGRAM); 
    SetIndexLabel(1,"L1");
   SetIndexDrawBegin(1, p );
   
   
   
   return(0);
  }
//+------------------------------------------------------------------+
//| Williams’ Percent Range                                          |
//+------------------------------------------------------------------+
int start()
  { int i;      
     {for(i=Bar; i>=0; i--)      
         
  L1[i] = 2*(Close[i]-High[iHighest(NULL,0,MODE_HIGH,p,i)] )/
    (High[iHighest(NULL,0,MODE_HIGH,p,i)] - Low[iLowest(NULL,0,MODE_LOW,p,i)])+1;}
         
         
          return(0); }
//============================
Супер е, мерси жив и здрав! :ugeek:

Отговори

Върни се в “FOREX СИГНАЛИ, СИСТЕМИ И СТРАТЕГИИ”

Кой е на линия

Потребители, разглеждащи този форум: Няма регистрирани потребители и 2 госта