Торговый советник - это просто.

Страницы: 1
RSS
Торговый советник - это просто.
 
Тема для начинающих писателей роботов.
Продолжение темы:
https://forum.quik.ru/messages/forum17/message80773/topic9417/#message80773
-------------------------
Чтобы сразу не сливать депозит,  лучше написать робот-советник, который на истории покажет , что он сможет.
---------------------------
Напишем такой советник.
Для этого в приведенный по ссылке выше скрипт добавим расчет прибыли/убытков при совершении сделок по приведенному ранее(см ссылку) алгоритму
------------------------
Примем что брокер и биржа забирают com=0.006 (0.6%)
Расчет будет проводить в %, количество лотов примем равным 1. Сделки совершаются в long и short.
В результате получился вот такой скрипт:
Код
function OnCalculate(i)
  local buy,sel;
  if i==1 then OnChangeSettings() 
    i1=0; t={}; Prof=0; Los=0; Q=Settings.Q; com=Settings.com; ProfAll=0;  BS=0;
  elseif i1~=i  then 
     ind(i1,Settings.tag,t); 
     if #t>0 then
          local Oi,Hi,Li=O(i1),H(i1),L(i1)  local prib=0;  local z=T(i1);   x=t[#t]; 
          params.DATE=100*(100*z.year+z.month)+z.day; 
          params.TIME=100*(100*z.hour+z.min)+z.sec;
          if Li>x and 0>=BS then buy=Li-0.05;  if BS==0 then prib=-com; else prib=(1-com)*(price/Oi-1); end  BS=1; price=Oi; params.YVALUE=buy-0.1; end
          if x>Hi and BS>=0  then  sel=Hi+0.05 if BS==0 then prib=-com; else prib=(1-com)*(Oi/price-1); end price=Oi;  BS=-1; params.YVALUE=sel+0.1; end
          if buy or sel then
            ProfAll=ProfAll+prib;    params.TEXT=(0.1*(1000*ProfAll//1)).."%" 
            if ProfAll>=0 then params.B=255 params.R=0 else params.B=0 params.R=255 end
            Label=AddLabel(Settings.tag,params);
          end
      end
  end
  i1=i;  
 return buy,sel;
 end

function Init() 
local t={} Settings.line =t;
   t[#t+1]={Name = "Bu",Color = RGB(0,255,0),Type = 10,Width = 4};
    t[#t+1]={Name = "Se",Color = RGB(255,0,0),Type = 11,Width = 4};
   return #t; end
    
function OnDestroy ()  DelAllLabels(Settings.tag) end
function OnChangeSettings() 
   DelAllLabels(Settings.tag); 
end


а это результат его тестирования на демо-сервере:
Страницы: 1
Читают тему
Наверх