以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  请帮看一下,写的A条件成立后记录最高价的写法有什么问题  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=162826)

--  作者:qq代人发帖
--  发布时间:2018/4/17 9:29:31
--  请帮看一下,写的A条件成立后记录最高价的写法有什么问题
你好,请帮我看一下,我写的A条件成立后记录最高价的写法有什么问题,这个写法没成功
M:=0;
if A<>0 then begin
 for i=0 to 50000 do begin
  if M[i]<>C then begin
   n:=max(M[i],C);
  if A=0 then begin
  BREAK;
  end
 end 
 end
 end
nn:n,linethick1;

--  作者:yukizzc
--  发布时间:2018/4/17 10:02:26
--  

variable:a=0,hh=0;

if cond=1 then

begin

a:=1;

end

 

if a=1 and high>hh then

hh:=high;

 

这样写,通过调节成立后去记录


--  作者:小飞哥
--  发布时间:2018/4/17 10:10:15
--  
使用high来赋值,,直接条件成立时,,HH就变成了high,,但条件成立的那一刻,C并不等于high,这个写法还是不可以麻烦再帮我想想!!我使用C就是为了过滤成立时记录的最高价就会变成了high,,,,可能条件成立的时候,可能这条K线有上影线的
[此贴子已经被作者于2018/4/17 10:11:05编辑过]

--  作者:yukizzc
--  发布时间:2018/4/17 10:22:07
--  
这个记录不到,对于历史只能记录到k线的价格,无法记录中间的价格
--  作者:小飞哥
--  发布时间:2018/4/17 10:28:52
--  
不管历史记录的,,,是在成立的那一刻从当前时间记录K线当前价的最高值,(相当于重新绘制一条K线,条件成立的那一刻C等于开盘价),,请教过写C语言的朋友是使用循环语句,但在这里不知道怎么表达!
--  作者:wenarm
--  发布时间:2018/4/17 11:21:01
--  

你不要想当然的处理,之前已经说过了,for循环值在纵向方向上的,它计算你的过程对于历史k线来说,就只有开搞低收可以使用,而对于横向的k线时间上,策略本身就是在k线时间方向上不断的循环,你这种记录方式压根就记录不到某根k线的其中一个中间过程,唯一能体现的就只有k线的最高价。

 

你不把机制理解清楚,写这些东西其实都是白费功夫。


--  作者:小飞哥
--  发布时间:2018/4/17 12:54:25
--  
第一条成立条件是用来纵向方向对比的计算呀,第二条K线就可以使用最高价来对比了,而且我不计算过去的历史K线呀,,我知道这个表达没有成功,,所以请教如何能实现呀,,,就用于买入后从买入价最高涨了多少点,,这个不应该实现不了的吧??如果一买入把赋值最高价为high,必然是错的
--  作者:wenarm
--  发布时间:2018/4/17 12:56:21
--  
图表中没法记录你要的结果的过程。
[此贴子已经被作者于2018/4/17 13:05:03编辑过]

--  作者:小飞哥
--  发布时间:2018/4/17 14:01:15
--  
没人说是图表模式呀,,,后台模式怎么记录买入后的最高价?
--  作者:wenarm
--  发布时间:2018/4/17 14:37:33
--  

你参考后台移动止损的代码的处理方式。

 

ZH1:\'1000\';
PZ1:\'IF00\';
VARIABLE:A=0;

//条件判断
MA5:MA(CLOSE,5);
MA10:MA(CLOSE,10);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);

//开仓和平仓
TBUY(CONDBUY AND TBUYHOLDINGEX( ZH1,PZ1 ,0 )<10,1,LMT,CLOSE,0,ZH1,PZ1 );
TSELL(CONDSELL,TBUYHOLDINGEX( ZH1,PZ1 ,0 ),MKT,0,ZH1,PZ1);

 

//移动止损模块部分*******************************
//A有三种数值状态:1,0,最新价;
//当A=1时表示当前有持仓,A=0时表示移动止损执行完毕,A=最新价时用于比较价格是否回落

//将A赋值为1,表示当前有持仓
IF TBUYHOLDINGEX( \'\',\'\' ,0 )>0 AND EXTGBDATA(\'a\' )=0 THEN BEGIN
EXTGBDATASET( \'a\',1 );
END

//使A始终表示监控开始后的最高价
IF DYNAINFO(  7)>EXTGBDATA(\'a\' ) and EXTGBDATA(\'a\' )>0 THEN BEGIN
EXTGBDATASET( \'a\',DYNAINFO(  7));
END

//发现价格回落止损,并将A赋值为0表示移动止损动作完成
IF EXTGBDATA(\'a\' )-DYNAINFO(  7)>5*MINDIFF and EXTGBDATA(\'a\' )>0 THEN BEGIN
TSELL(1,1,MKT );
EXTGBDATASET( \'a\',0);
END
//*******************************