: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

【TPO】

【TPO】

  1. [RecoverDrawings=False]

  2. Inputs: ResNum(2),
  3.         Precision(0),
  4.         ModeView(1),
  5.         SpcWidth(3),  //Space width for mode 2
  6.         FactorShift(20),
  7.         CorrectShiftTime(0),
  8.         PriceRange(1000),
  9.         ColorTPOFirst("Coral"),
  10.         Color_IBR("Aquamarine"),
  11.         ColorSymbol("DeepSkyBlue"),
  12.         ColorTPOMax("Maroon"),
  13.         Font("Lucida Console"),
  14.         Space(" ");


  15. Variables:
  16.             intrabarpersist prev_day(IntPortion(datetime data(ResNum))),
  17.             intrabarpersist cur_day(IntPortion(datetime data(ResNum))),
  18.             intrabarpersist SessionN(0),           
  19.            intrabarpersist UHigh(0),
  20.            intrabarpersist ULow(0),
  21.            intrabarpersist _Precision(0),
  22.            intrabarpersist DShift(0),
  23.            intrabarpersist TShift(0),
  24.            intrabarpersist StartTime(0),
  25.            intrabarpersist OneStDay(true),
  26.            intrabarpersist CalcShiftTime(0),
  27.            intrabarpersist Midl_ID(0),
  28.            intrabarpersist EndPrice(0),
  29.            intrabarpersist EndTime(0),
  30.            intrabarpersist End_ID(0),
  31.            intrabarpersist CorrectDay(0),
  32.            intrabarpersist TPOStep(0),
  33.            intrabarpersist MidlMaxPrc(0),
  34.            intrabarpersist MidlMinPrc(99999),
  35.            intrabarpersist IdxMidlPrc(0),
  36.            intrabarpersist StartSession(0),
  37.            intrabarpersist ColorIBR(0),
  38.            intrabarpersist SetNewStep(false),
  39.            intrabarpersist MidlPrice(0),
  40.            intrabarpersist OldPrice(0),
  41.            intrabarpersist ColorMaxTPO(0),
  42.            intrabarpersist TPO70(0),
  43.            intrabarpersist RangeWidth(0),
  44.            intrabarpersist CurStepPrc(0),
  45.            intrabarpersist MaxStepPrc(0),
  46.            intrabarpersist MinStepPrc(99999),
  47.            intrabarpersist RangePrc(0),
  48.            intrabarpersist IBR_ID(0),
  49.            intrabarpersist CorrectTime(2400),
  50.            intrabarpersist SymTPO(""),
  51.            intrabarpersist TextSym(""),
  52.            intrabarpersist MaxTPOID(0),
  53.            intrabarpersist SaveNum(0),
  54.            intrabarpersist TextID(0),
  55.            
  56.            //Lucida Console, Courier Regular,Bitstream Vera Sans Mono Bold,Bitstream Vera Sans Mono Roman
  57.            intrabarpersist SetRange(500),
  58.            intrabarpersist SNStep(0),
  59.            intrabarpersist FontSize(10),
  60.            intrabarpersist BGColor(0),
  61.            intrabarpersist center(0),
  62.            intrabarpersist SBGColor(0),
  63.            intrabarpersist TextColor(0),
  64.            intrabarpersist Border(false),
  65.            intrabarpersist MaxTPO(0),
  66.            intrabarpersist PRCMaxTPO(0),
  67.            intrabarpersist SaveIPMaxTPO(0),
  68.            intrabarpersist BGBlue(0),
  69.            intrabarpersist BGGreen(0),
  70.            intrabarpersist BGMagenta(0),
  71.            intrabarpersist BGGray(0),
  72.            intrabarpersist MaxTpoUpdate(false),
  73.            intrabarpersist MaxTpoTlIDXH(0),
  74.            intrabarpersist MaxTpoTlIDXL(0),
  75.            intrabarpersist MaxTpoTlIDXLeft(0),
  76.            intrabarpersist MaxTpoTlIDXRight(0),
  77.            intrabarpersist BarPrcCount(0),
  78.            intrabarpersist WidthMaxTPO(1),
  79.            intrabarpersist NumTL(0),
  80.            intrabarpersist TEST(""),
  81.            intrabarpersist SPC(""),
  82.            //----------------------
  83.            _Font(""),
  84.            intrabarpersist BarCount(0),
  85.            intrabarpersist MaxPnt(0),
  86.            intrabarpersist MinPnt(0),
  87.            intrabarpersist MaxStep(0),
  88.            intrabarpersist RznTime(0),
  89.            intrabarpersist VP(0),
  90.            intrabarpersist NewStep(false),
  91.            intrabarpersist TextShift(0),
  92.            intrabarpersist DateMin(0),
  93.            intrabarpersist TimeMin(0),
  94.            intrabarpersist DateTimeMin(0),
  95.            intrabarpersist OpenMin(0),
  96.            intrabarpersist HighMin(0),
  97.            intrabarpersist LowMin(0),
  98.            intrabarpersist CloseMin(0),
  99.            intrabarpersist SaveCloseMin(0),
  100.            intrabarpersist MinDayPrc(0),
  101.            intrabarpersist MaxDayPrc(0),
  102.            intrabarpersist StartMinDayPrc(0),
  103.            intrabarpersist DayRzn(0),
  104.            intrabarpersist CorrDay(0),
  105.            intrabarpersist TotalTPO(0),
  106.            intrabarpersist SavPMaxTPO(0),
  107.            intrabarpersist TDate(0),
  108.            intrabarpersist TTime(0),
  109.            intrabarpersist TTimeMax(0),
  110.            intrabarpersist TDateMax(0),
  111.            intrabarpersist AppSize(0),
  112.            intrabarpersist Online(false),
  113.            intrabarpersist DrawTPO(false),
  114.                            SetColorText(0),
  115.                            ColorFirstTPO(0),
  116.            intrabarpersist IdxDayRange(0),
  117.            intrabarpersist CurPrice(0),
  118.            intrabarpersist DDate(0),
  119.            intrabarpersist DTime(0),
  120.            intrabarpersist DOpen(0),
  121.            intrabarpersist DHigh(0),
  122.            intrabarpersist DLow(99999),
  123.            intrabarpersist DClose(0),
  124.            intrabarpersist MinIBR(0),
  125.            intrabarpersist MaxIBR(0),
  126.            intrabarpersist Modif(false),
  127.            intrabarpersist OLDID_MAXTPO(0),
  128.            intrabarpersist ShiftCountTPO(0),
  129.            intrabarpersist ShiftIBR(0),
  130.            intrabarpersist ShiftFTPO(0);

  131.     Arrays: intrabarpersist ID_CountTPO[](0),
  132.             intrabarpersist Table[5000,48](0),
  133.             intrabarpersist ArStepTPO[](""),
  134.             intrabarpersist ID_TPO[](0),
  135.             intrabarpersist StringTPO[](""),
  136.             intrabarpersist R_ID[](0);

  137.   once begin
  138.   
  139.        array_setmaxindex(ID_CountTPO,PriceRange);
  140.        array_setmaxindex(ArStepTPO,PriceRange);
  141.        array_setmaxindex(ID_TPO,PriceRange);
  142.        array_setmaxindex(StringTPO,PriceRange);
  143.        array_setmaxindex(R_ID,PriceRange);
  144.       
  145.        ColorMaxTPO = WEBColor(ColorTPOMax);
  146.        SetColorText = WEBColor(ColorSymbol);
  147.        ColorFirstTPO = WEBColor(ColorTPOFirst);
  148.        ColorIBR = WEBColor(Color_IBR);
  149.        _Font = Font;
  150.        SPC = Space;
  151.        if Precision = 0 then begin
  152.            _Precision = Digits;
  153.        end else begin
  154.            _Precision = Precision;
  155.        end;
  156.       
  157.        TextShift = FactorShift;   
  158.   end;
  159.   
  160.   cur_day = IntPortion(datetime);
  161.   
  162.   if SessionN = 0 then SessionN = CurrSessionNum(ResNum);
  163.   if SessionN = 0 then #return;
  164.   
  165.     DateMin = Date Data(ResNum);
  166.     TimeMin = Time Data(ResNum);
  167.     DateTimeMin = DateTime Data(ResNum);
  168.     OpenMin = Round(Open data(ResNum) ,_Precision);
  169.     HighMin = Round(High data(ResNum) ,_Precision);
  170.     LowMin  = Round(Low data(ResNum) ,_Precision);
  171.     CloseMin= Round(Close data(ResNum) ,_Precision);



  172.     if NRTime(TimeMin) then begin

  173.        if BarPeriodN(ResNum, SessionN,DDate,DTime,DOpen,DHigh,DLow,DClose) then begin

  174.            OneStDay = true;
  175.            TPOStep = 0;
  176.            StartMinDayPrc = CloseMin - PriceRange/2*SetPoint(Precision);
  177.            for value1=0 to PriceRange begin
  178.                for value2=0 to 48 begin
  179.                    Table[value1,value2] = 0;
  180.                end;
  181.                R_ID[value1]=0;
  182.                ArStepTPO[value1] = "";
  183.                StringTPO[value1] = "";
  184.                ID_TPO[value1] = 0;
  185.                ID_CountTPO[value1]=0;
  186.                
  187.            end;
  188.          
  189.            IdxDayRange =0;
  190.            
  191.            MaxTPO  = 0;
  192.            PRCMaxTPO = 0;
  193.            MaxTPOID = 0;
  194.            MaxTpoTlIDXH = 0;  
  195.            MaxTpoTlIDXL = 0;
  196.            MaxTpoTlIDXLeft = 0;
  197.            MaxTpoTlIDXright = 0;
  198.            Midl_ID = 0;
  199.            IBR_ID =0;
  200.            End_ID =0;
  201.            OLDID_MAXTPO=0;
  202.            MidlMaxPrc =0;
  203.            MidlMinPrc = 99999;
  204.            TotalTPO=0;
  205.            MaxDayPrc = 0;
  206.            MinDayPrc = 99999;
  207.            EndPrice =0;
  208.            EndTime =0;
  209.            UHigh = 0;
  210.            ULow = 0;
  211.            MinIBR = 99999;
  212.            MaxIBR = 0;
  213.         end;
  214.         
  215.         TDate = DDate+DShift;
  216.       
  217.         MinDayPrc = DLow;   //Day
  218.         MaxDayPrc = DHigh;  //Day

  219.         Online = false;

  220.         NewStep = false;
  221.         if StepTPO_N(ResNum, SessionN, DateMin, TimeMin,30,0,TPOStep) then begin
  222.             SymTPO = TPOSym(TPOStep);
  223.             NewStep = true;
  224.             MaxStepPrc = 0;
  225.             MinStepPrc = 99999;
  226.             if ModeView = 1 then begin  
  227.                  TextSym = SymTPO;
  228.                  TextColor = SetColorText;
  229.                  BGColor = black;
  230.             end else if ModeView = 2 then begin   
  231.                  switch(SpcWidth ) begin
  232.                      case 1 : TextSym = " ";
  233.                      case 2 : TextSym = "  ";
  234.                      case 3 : TextSym = "   ";
  235.                      case 4 : TextSym = "    ";
  236.                      case 5 : TextSym = "     ";
  237.                  end;
  238.                  TextColor = SetColorText;
  239.                  BGColor = SetColorText;
  240.                  _Font = "Bitstream Vera Sans Mono Roman";      
  241.             end;
  242.         end; //StepTPO

  243.         MaxStepPrc = maxlist(MaxStepPrc,HighMin); //Step
  244.         MinStepPrc = minlist(MinStepPrc,LowMin);  //Step

  245.             CurPrice = StartMinDayPrc;
  246.       
  247.             DShift=cur_day - prev_day;
  248.             //if DayOfWeek(DDate) = 5 or DayOfWeek(DDate) = 4 then begin
  249.             //     DShift=3;
  250.             //end;

  251.             for value1=0 to PriceRange begin
  252.                 if CurPrice >= MinStepPrc and CurPrice <= MaxStepPrc then begin   
  253.                     
  254.                     //========== Initial Balance Range ===============
  255.                     if TPOStep = 1 then begin
  256.                        ShiftIBR = TextShift/5;
  257.                        if IBR_ID = 0 then begin
  258.                            IBR_ID = DrawDTLine(DDate+DShift,CorrectShiftTime+DTime+ShiftIBR ,DDate+DShift,CorrectShiftTime+DTime+ShiftIBR ,MinStepPrc,MaxStepPrc,0,ColorIBR,2); //range one step
  259.                        end else begin
  260.                            TL_Correct(IBR_ID,DDate+DShift,CorrectShiftTime+DTime+ShiftIBR,MinStepPrc-SetPoint(Precision)/2,DDate+DShift,CorrectShiftTime+DTime+ShiftIBR ,MaxStepPrc+SetPoint(Precision)/2);                 
  261.                        end;
  262.                     end;   
  263.                     
  264.                     //================== Midl Price =========================
  265.                     if MidlMaxPrc < value1 then begin   
  266.                         MidlMaxPrc = value1;
  267.                     end;
  268.                     if MidlMinPrc > value1 then begin   
  269.                         MidlMinPrc = value1;
  270.                     end;

  271.                     if ArStepTPO[value1] <> SymTPO then begin
  272.                         Modif = false;
  273.                         for value2=0 to TPOStep -1 begin
  274.                            
  275.                             //====== First TPO ===========
  276.                             SBGColor = BGColor;
  277.                             if OneStDay then begin
  278.                                ShiftFTPO = TextShift/3;
  279.                                DrawDTText(" ",DDate+DShift,CorrectShiftTime+DTime+ShiftFTPO,CurPrice,TextColor,ColorFirstTPO,FontSize,"Bitstream Vera Sans Mono Roman",0,2,Border);
  280.                                OneStDay = false;
  281.                             end;

  282.                             if Table[value1,value2] = 0 then begin
  283.                            
  284.                                 //=== MAX TPO ===
  285.                                 if MaxTPO < (value2+1) then begin
  286.                                     MaxTPO = (value2+1);
  287.                                     PRCMaxTPO = CurPrice;
  288.                                 end;

  289.                                 //====== VA ======
  290.                                 TPO70 = TotalTPO*70/100;
  291.                                  
  292.                                 //========= Count TPO ==============
  293.                                 ShiftCountTPO = TextShift/5;
  294.                                 if ID_CountTPO[value1] = 0 then begin
  295.                                     ID_CountTPO[value1] = DrawDTText( NumToStr(value2+1,0),DDate+DShift,CorrectShiftTime+DTime-ShiftCountTPO ,CurPrice ,White,0,FontSize,_Font,1,2,false); //step count  
  296.                                 end else begin
  297.                                     text_setstring(ID_CountTPO[value1],NumToStr(value2+1,0));
  298.                                 end;

  299.                                 StringTPO[value1] = StringTPO[value1] + TextSym+SPC;
  300.                                 Table[value1,value2] = TPOStep;
  301.                                 EndPrice = CurPrice;
  302.                                 EndTime = TTime+TShift;
  303.                                 Modif = true;
  304.                                 TotalTPO = TotalTPO +1;
  305.                                 break;
  306.                             end;
  307.                         end; //end tpo cicle
  308.                         ArStepTPO[value1] = SymTPO;
  309.                     end;
  310.                     
  311.                   
  312.                     if Modif then begin
  313.                         if ID_TPO[value1] = 0 then begin
  314.                             ID_TPO[value1] = DrawDTText(StringTPO[value1] ,DDate+DShift,CorrectShiftTime+DTime+TextShift,CurPrice,TextColor,SBGColor,FontSize,_Font,0,2,Border); //Draw Text
  315.                         end else begin
  316.                             text_setstring(ID_TPO[value1],StringTPO[value1]);
  317.                         end;
  318.                            
  319.                         //MAX TPO
  320.                         if PRCMaxTPO = CurPrice then begin   
  321.                             text_setbgcolor(OLDID_MAXTPO,SBGColor);
  322.                             text_setbgcolor(ID_TPO[value1],ColorMaxTPO);
  323.                             OLDID_MAXTPO = ID_TPO[value1];
  324.                         end;
  325.                     end;  
  326.                  end;

  327.                //--------------------------------------------------------
  328.                 OldPrice = CurPrice;
  329.                 CurPrice = CurPrice + SetPoint(Precision);
  330.                  
  331.             end; //end price cicle   
  332.     end;//end NRTime

  333. if cur_day <> prev_day then        prev_day  = cur_day;
复制代码

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表