0
Сейчас совпадает: www.opentraders.ru/downloads/980/

avatar

AM2

  • 21 декабря 2015, 18:59
0
Код чужой, пока не знаю как это сделать.
avatar

AM2

  • 21 декабря 2015, 18:27
0
Оно?



//+------------------------------------------------------------------+
//|                                                  COT_Reports.mq4 |
//|                                                            D!m@n |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "D!m@n"
#property link      "http://www.metaquotes.net"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//#property indicator_minimum -20
//#property indicator_maximum 20
extern string name="eur_Comm.csv";
extern int period=0;

int Q,Sh,f,max,min,flag,J;
double Buffer1[];
double Buffer2[5000];
double N1,N2,Max,Min,Nh;
string A,B,C,D,E,F,date,G;
datetime time;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM,0,2);
//SetIndexStyle(1,DRAW_NONE,0,1);
   SetIndexBuffer(0,Buffer1);
//SetIndexBuffer(1,Buffer2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int handle=FileOpen(name,FILE_READ,";");
//int handle2 = FileOpen("prov.csv",FILE_CSV|FILE_WRITE,";");
//int handle3 = FileOpen("prov2.csv",FILE_CSV|FILE_WRITE,";");
   A=FileReadString(handle);
//----------характеристика индикатора-------------------------
   IndicatorShortName(A);
   IndicatorDigits(1);
   SetIndexLabel(0,"Осциллятор COT");
   SetLevelValue(0,0);
   SetLevelStyle(STYLE_DOT,1,DarkGray);
//------------------------------------------------------------
   flag=0;
   if(newBar())
     {
      while(!FileIsEnding(handle))
        {
         B="";
         while(B=="" || B==" ")
           {
            B=FileReadString(handle);
            if(FileIsEnding(handle))break;
           }
         C="";
         while(C=="" || C==" ")
           {
            C=FileReadString(handle);
            if(FileIsEnding(handle))break;
           }
         D="";
         while(D=="" || D==" ")
           {
            D=FileReadString(handle);
            if(FileIsEnding(handle))break;
           }
         E="";
         while(E=="" || E==" ")
           {
            E=FileReadString(handle);
            if(FileIsEnding(handle))break;
           }
         F="";
         while(F=="" || F==" ")
           {
            F=FileReadString(handle);
            if(FileIsEnding(handle))break;
           }
         //Print(B+" "+C+" "+D+" "+E+" "+F);
         //break;
         date=D+"."+C+"."+B+" 00:00";
         if(date==".. 00:00")break;
         time=StrToTime(date);

         for(int b=0;b<iBars(Symbol(),PERIOD_D1);b++)
           {
            if(time-iTime(Symbol(),PERIOD_D1,b)<518400 && time-iTime(Symbol(),PERIOD_D1,b)>0)
              {
               time=iTime(Symbol(),PERIOD_D1,b);
               break;
              }
           }
         N1=StrToDouble(E); //длинные
         N2=StrToDouble(F); //короткие
         if(time-iTime(Symbol(),PERIOD_D1,Bars-1)>=0)Sh=iBarShift(Symbol(),PERIOD_D1,time);
         if(time-iTime(Symbol(),PERIOD_D1,Bars-1)<-1000)Sh++;
         if(flag==0)
           {
            J=Sh;
            flag=1;
           }

         if(N1!=0)Nh=N1-N2;
         if(N1==0) N1=Nh;
         Buffer2[Sh]=N1-N2; //спред длинные - короткие
                            //Print(Buffer2[Sh]);
         //FileWrite(handle2,Sh,date,N1,N2,Buffer2[Sh]);
        }
      //FileClose(handle2);

      for(b=J;b<Sh;b++)
        {
         max=ArrayMaximum(Buffer2,period,b);
         min=ArrayMinimum(Buffer2,period,b);
         Max=Buffer2[max];
         Min=Buffer2[min];
         //Print(Max," ",Min);
         //FileWrite(handle3,b,Max," ",Min);
         Buffer1[b]=Buffer2[b];
         //Print(Buffer1[b]);
        }
      //FileClose(handle3);

     }

   FileClose(handle);
   return(0);
  }
//+------------------------------------------------------------------+

bool newBar()
  {
   bool a=false;
   if(Bars!=Q)
     {
      Q=Bars;
      a=true;
     }
   return(a);
  }
//+------------------------------------------------------------------+


Comm;;;;;;;
;15;12;2015;159943;0;;
;8;12;2015;172767;0;;
;1;12;2015;193332;0;;
;24;11;2015;163809;0;;
;17;11;2015;150669;0;;
;10;11;2015;131524;0;;
;3;11;2015;131142;0;;
;27;10;2015;115137;0;;
;20;10;2015;89409;0;;
;13;10;2015;92775;0;;
avatar

AM2

  • 21 декабря 2015, 17:35
0
Я посмотрел код. Проще и быстрее на мой взгляд переписать заново чем расшифровывать код и вносить изменения. Напишите максимально подробное ТЗ и я попробую переписать.
avatar

AM2

  • 21 декабря 2015, 13:53
0
Добавлю.
avatar

AM2

  • 21 декабря 2015, 00:07
0
индикатор работает не корректно.

С этого момента поподробнее пожалуйста. У меня на всех ТФ одна картинка.

avatar

AM2

  • 20 декабря 2015, 22:25
0
Оформляйте новым топиком, как можно подробнее опишите ТЗ, желательно со скринами или поясняющими картинками. И буду смотреть что можно сделать.
avatar

AM2

  • 20 декабря 2015, 22:13
0
Но есть одно но, он общий профит/убыток показывает, а не у каждой сделки отдельно, если их несколько.

Если заказчик объявится и попросит продолжить, тогда буду доделывать.
avatar

AM2

  • 20 декабря 2015, 17:14
+1
Читает файл бай и селл и выводит метки по средней цене.



//+------------------------------------------------------------------+
//|                                                  MiddlePrice.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property show_inputs

input int    Shift        = 55;                       // сдвиг метки влево
input string FileNameBuy  = "20151219_BUY.txt";       // файл бай
input string FileNameSell = "20151219_SELL.txt";      // файл селл
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLable(string name,double price,color clr)
  {
   ObjectDelete(0,name);
//---создадим ценовую метку
   ObjectCreate(0,name,OBJ_ARROW_RIGHT_PRICE,0,Time[Shift],price);
//--- установим цвет метки
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль окаймляющей линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
//--- установим размер метки
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int count1=0,count2=0;
   double sum1=0,mid1=0,sum2=0,mid2=0;
//--- откроем файл 
   ResetLastError();
   int file_handle=FileOpen(FileNameBuy,FILE_READ|FILE_TXT);
   if(file_handle!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для чтения",FileNameBuy);
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- вспомогательные переменные 
      int    str_size;
      string str;
      //--- прочитаем данные из файла 
      while(!FileIsEnding(file_handle))
        {
         //--- узнаем сколько символов использовано для записи времени 
         str_size=FileReadInteger(file_handle,INT_VALUE);
         //--- прочитаем строку 
         str=FileReadString(file_handle,str_size);
         //--- распечатаем строку 
         PrintFormat(str);
         count1++;
         sum1+=StringToDouble(str);
        }
      //--- закроем файл 
      FileClose(file_handle);
      PrintFormat("Данные прочитаны, файл %s закрыт",FileNameBuy);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileNameBuy,GetLastError());

//--- откроем файл 
   ResetLastError();
   int file_handle2=FileOpen(FileNameSell,FILE_READ|FILE_TXT);
   if(file_handle2!=INVALID_HANDLE)
     {
      PrintFormat("Файл %s открыт для чтения",FileNameSell);
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
      //--- вспомогательные переменные 
      int    str_size;
      string str;
      //--- прочитаем данные из файла 
      while(!FileIsEnding(file_handle2))
        {
         //--- узнаем сколько символов использовано для записи времени 
         str_size=FileReadInteger(file_handle2,INT_VALUE);
         //--- прочитаем строку 
         str=FileReadString(file_handle2,str_size);
         //--- распечатаем строку 
         PrintFormat(str);
         count2++;
         sum2+=StringToDouble(str);
        }
      //--- закроем файл 
      FileClose(file_handle2);
      PrintFormat("Данные прочитаны, файл %s закрыт",FileNameSell);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileNameSell,GetLastError());

   mid1=sum1/count1;
   mid2=sum2/count2;

   PutLable("Labale"+FileNameBuy,mid1,Blue);
   PutLable("Labale"+FileNameSell,mid2,Red);

   Comment("\n CountBuy: ",count1,
           "\n SumBuy: ",DoubleToString(sum1,Digits),
           "\n MidBuy: ",DoubleToString(mid1,Digits),
           "\n CountSell: ",count2,
           "\n SumSell: ",DoubleToString(sum2,Digits),
           "\n MidSell: ",DoubleToString(mid2,Digits));
  }
//+------------------------------------------------------------------+
avatar

AM2

  • 19 декабря 2015, 23:58
+1
Скрипт выводит в окно терминала: число элементов, их сумму и среднее. В журнал выводятся все элементы построчно.




//+------------------------------------------------------------------+
//|                                                  MiddlePrice.mq4 |
//|                                              Copyright 2015, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property show_inputs

input string FileName="20151219_BUY.txt";

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  int count=0;
  double sum=0,mid=0;
//--- откроем файл 
   ResetLastError(); 
   int file_handle=FileOpen(FileName,FILE_READ|FILE_TXT); 
   if(file_handle!=INVALID_HANDLE) 
     { 
      PrintFormat("Файл %s открыт для чтения",FileName); 
      PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); 
      //--- вспомогательные переменные 
      int    str_size; 
      string str; 
      //--- прочитаем данные из файла 
      while(!FileIsEnding(file_handle)) 
        { 
         //--- узнаем сколько символов использовано для записи времени 
         str_size=FileReadInteger(file_handle,INT_VALUE); 
         //--- прочитаем строку 
         str=FileReadString(file_handle,str_size); 
         //--- распечатаем строку 
         PrintFormat(str);
         count++;
         sum+=StringToDouble(str); 
        } 
      //--- закроем файл 
      FileClose(file_handle); 
      PrintFormat("Данные прочитаны, файл %s закрыт",FileName); 
     } 
   else 
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",FileName,GetLastError()); 
      
      mid=sum/count;
      
      Comment("\n Count: ",count,
      "\n Sum: ",sum,
      "\n Mid: ",mid);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 19 декабря 2015, 22:20
0
Скиньте образцы текстовых файлов и нарисуйте на скрине как все должно выглядеть.
В максимально упрощенном виде могу попробовать сделать, т.к. объем работы приличный.
avatar

AM2

  • 19 декабря 2015, 17:46
0
Получается уже 3 головы участвовало, змей горыныч однако! :D 
avatar

AM2

  • 18 декабря 2015, 13:27
0
Трал значение 300 — при этом стоп начинает с безубытка тянуться за ценой, можно отключить если поставить 0. Уровень бу 200пп. стоп переносится в безубыток на расстояние Пункты БУ. Тоже также отключается. Соотношение подбирайте опытным путем.
avatar

AM2

  • 18 декабря 2015, 13:25
0
Я также делал а реверс в классе библиотеки отключал :) 
avatar

AM2

  • 18 декабря 2015, 13:18
0
и чтобы сделки закрывались только по tp/sl, а то иногда они не только так закрываются


Реверс убрал

avatar

AM2

  • 18 декабря 2015, 07:55
0
А все началось с того, что у меня человек спросил, как ему лот в советнике mq5 поменять.


Лот заменил:
2015.12.18 08:43:08.885 2015.12.09 04:59:58 deal performed [#1057 buy 0.50 EURUSD at 1.09032]

avatar

AM2

  • 18 декабря 2015, 07:47
0
Задание простое. В этом советнике: www.mql5.com/en/code/1896 добавить возможность менять лот и чтобы сделки закрывались только по tp/sl, а то иногда они не только так закрываются.

Оксана, кидай в стол заказов мне как раз будет чем заняться.
avatar

AM2

  • 18 декабря 2015, 05:49
0
я тут вновь заинтересовалась mql5


Я использую самые простые вещи CTrade и самописные функции. Если что скидывай в стол заказов я посмотрю.
avatar

AM2

  • 18 декабря 2015, 02:27