Автоматизация поиска оптимальных точек входов\выходов - страница 4

 
Angela писал(а) >>

Опять редактор искажает имя, переименуйте как нужно.

 

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

Обратите внимание, внесены изменения в файл настроек FN, теперь в первую строку, как и раньше, пишите минимальное значение пунктов при котором можно открывать позицию, во вторую, как и раньше, пишите минимальное значение пунктов при котором можно переоткрывать позицию после отката, в третью! - значение пункта принятого для используемого инструмента, в четвертую разрешающий флаг сохранения расчетных данных, как и раньше в 3, в пятую - разрешающий флаг вывода графика, как и раньше в 4.

Ресунок выглядит теперь так:

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

Исходник программы на Матлабе:

function Adept()
clc
clear ;
Time=clock
tic
cd;
FN=load('FN.csv');
UR=FN(1,1);OT=FN(2,1);Point=FN(3,1);Saves=FN(4,1);Prints=FN(5,1);
GL=load('FClose.csv');
   dn=length(GL);
   Min=GL(1);IMin=1;
   Max=GL(1);IMax=1;
   IBuy(1,1)=0;ISell(1,1)=0;
   nb=1;ns=1;FR=0;
for i=2:dn
if ((Min>GL(i))&&(FR~=1))
     FR=-1;IMin=i;
     Min=GL(i);
elseif ((Min>GL(i))&&(FR==1))
     FR=-1;IMin=i;
     Min=GL(i); 
elseif ((Max<GL(i))&&(FR~=-1))
     FR=1;IMax=i;
     Max=GL(i);
elseif ((Max<GL(i))&&(FR==-1))
     FR=1;IMax=i;
     Max=GL(i);  
end;
if ((IMax>IMin)&&(FR==1))
  if ((Max-Min)>UR)
     Buy(1,nb)=Min; IBuy(1,nb)=IMin;
     Buy(2,nb)=Max; IBuy(2,nb)=IMax; 
  if ((Max-GL(i))>OT)
     FR=-1;IMin=i;nb=nb+1;
     Min=GL(i);
  end; end;  
elseif ((IMax<IMin)&&(FR==-1))
if ((Max-Min)>UR)    
     Sell(1,ns)=Max; ISell(1,ns)=IMax;
     Sell(2,ns)=Min; ISell(2,ns)=IMin;  
  if ((GL(i)-Min)>OT)
     FR=1;IMax=i;ns=ns+1;
     Max=GL(i);
end;end;end;      
end;   
     PF=0;
for i=1:nb-1
     PF=PF+(Buy(2,i)-Buy(1,i));
end;
for i=1:ns-1
     PF=PF+(Sell(1,i)-Sell(2,i));
end;
     PF=PF/Point;
if (Saves==1)
    dlmwrite('Buy.csv',Buy,'precision', '%.5f', 'newline', 'pc');
    dlmwrite('IBuy.csv',IBuy,',');
    dlmwrite('Sell.csv',Sell,'precision', '%.5f', 'newline', 'pc');
    dlmwrite('ISell.csv',ISell,',');
end;
    
if (Prints==1)   
plot (GL(:), 'g'), hold on,plot (ISell(:,:),Sell(:,:),'ro:',IBuy(:,:),Buy(:,:), 'b*:'),
str=strcat('Профит =  ',mat2str(PF),' пунктов');
grid on
title(str);
end;
toc
     
Комментарии к коду не писала, мало свободного времени, да там все просто и наглядно, знающий матлаб легко разберется. Если кто переведет на MQL - выставите в этой теме, большинству это будет более интересно чем мой вариант. В архиве новый вариант ехе - шника с вспомогательными файлами.
Файлы:
adept_m.zip  52 kb
 

Просит еще один dll файл: boost_signals-vc80-mt-1_34_1.dll

какая версия матлаба у вас ? каков алгоритм работы советника?

 
zan писал(а) >>

Просит еще один dll файл: boost_signals-vc80-mt-1_34_1.dll

какая версия матлаба у вас ? каков алгоритм работы советника?

Я эту dll уже выставляла выше, только редактор форума при загрузке исказил название убрав все -, загрузите и переименуйте как надо.

У меня Матлаб 7.7.0 R2008. Если Вы пытаетесь запустить на своем матлабе более ранней версии, проще будет скопировать исходник в редактор своего матлаба, откомпилировать и запускать из матлаба догрузив все вспомогательные файлы из архива.

Причина обращения: