以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  [原创]请求老师,编写问题  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=166120)

--  作者:大牛来了
--  发布时间:2018/10/25 16:32:28
--  [原创]请求老师,编写问题

亲爱的老师:

 

我们在编写代码的时候碰到几个问题,我们做日内交易,请老师代为编写

 

希望达到的效果如下:

 

Q1: 检测-->账户盈利-->达到-->10万港币-->立刻停止交易。

 

Q2:检测-->账户亏损-->达到-->10万港币-->立刻停止交易。

 

Q3:当账户持续盈利时,随时资金的增长,每增加10万港币,下次开仓增加1手。(举例:初始资金为30万账户-->初始开仓为1手-- >当账户资金 大于 40万 -->在原来的基础上,加1,也就是2手。同时也要考虑,出场平仓也要全部平仓)

 


--  作者:wenarm
--  发布时间:2018/10/25 16:59:34
--  

图表还是后台。你Q3和前两个矛盾。


--  作者:大牛来了
--  发布时间:2018/10/25 17:09:31
--  

图表交易


--  作者:大牛来了
--  发布时间:2018/10/25 17:12:13
--  
以下是引用wenarm在2018/10/25 16:59:34的发言:

图表还是后台。你Q3和前两个矛盾。

Q3,是检测账户资金,资金达到,在下次允许开仓时,叠加。 Q1和Q2 优先 于 Q3,Q3作为后置判断,比如前一日盈利10万,那么当日停止交易。

从第2日开始,账户资金大于40万,开始2手开仓

[此贴子已经被作者于2018/10/25 17:12:47编辑过]

--  作者:wenarm
--  发布时间:2018/10/26 1:24:06
--  
初始利润:VALUEWHEN(time=CLOSETIME(0),NETPROFIT);
日净利润:NETPROFIT-初始利润;
IF ABS(NETPROFIT-初始利润)>100000 THEN EXIT;
手数:1+if(NETPROFIT<=0,0,INTPART((ASSET-300000)/100000));
if 开仓条件 then BEGIN
 buy(1,手数,MARKET);
  
end
if 平仓条件 then BEGIN
 sell(1,HOLDING,MARKET);
end

--  作者:大牛来了
--  发布时间:2018/10/29 15:25:34
--  
以下是引用wenarm在2018/10/26 1:24:06的发言:
初始利润:VALUEWHEN(time=CLOSETIME(0),NETPROFIT);
日净利润:NETPROFIT-初始利润;
IF ABS(NETPROFIT-初始利润)>100000 THEN EXIT;
手数:1+if(NETPROFIT<=0,0,INTPART((ASSET-300000)/100000));
if 开仓条件 then BEGIN
 buy(1,手数,MARKET);
  
end
if 平仓条件 then BEGIN
 sell(1,HOLDING,MARKET);
end
 
 
你好,老师,经过测试,好像不奏效呀。 测试的时候,开多仓变成了2手,开空仓,永远只有1手。求帮助解决啊


--  作者:大牛来了
--  发布时间:2018/10/29 15:32:27
--  没有效果呀,是不是哪里出错了呢
没有效果呀,是不是哪里出错了呢
--  作者:wenarm
--  发布时间:2018/10/29 16:41:08
--  

上面的算法没有区分考虑多空的情况,其手数就是按当前资产减去初始资产三十万计算的。

你说的最多两手多头,你可以在图表中看下当前资产应该是没有过50万。所以手数才是2手。


--  作者:大牛来了
--  发布时间:2018/10/29 19:36:42
--  [原创]求回复啊

可能是我描述的不够清楚

 

我的意思在,每日交易,盈利或者亏损到一定的金额,就停止交易。我们可以假设每日账户盈利2万或者1万,亏损到2万或者1万,即刻停止交易。

 

上面所说的资金没增长10万,再下一个交易日,在原来的基础上1手,再加1手仓位,以此类推。比如,30万资金增长到40万,-->1+1手。  40万增长到50万,-->1+1+1手,开仓是3手。封顶5手。

包括wen老师说的,不是多头加仓,而且在下一个交易日,无论多头、空头,都是按照资金的增长,加大开仓手续,5手封顶啊

 

或者,不一定按照每增加10万,加仓1手。也可以按照账户资金的百分之多少开仓,请老师帮忙编写一下,确实遇到难题了


--  作者:FireScript
--  发布时间:2018/10/30 11:01:27
--  
 1.我简单注释下前面的代码,你先看下你是否有根据自己的情况修改这些数值来适应。
初始利润:VALUEWHEN(time=CLOSETIME(0),NETPROFIT);
日净利润:NETPROFIT-初始利润;
IF ABS(NETPROFIT-初始利润)>100000 THEN EXIT;//这里是按照盈亏10w就停止交易处理的
手数:1+if(NETPROFIT<=0,0,INTPART((ASSET-300000)/100000));//这里是按照初始资金是30W处理的
if 开仓条件 then BEGIN
buy(1,手数,MARKET);
end
if 平仓条件 then BEGIN
sell(1,HOLDING,MARKET);
end

2.手数还有个逻辑要处理下。如果我从30万涨到50万,但是又降到了40万,那么下单手数是?因为按照你的逻辑涨10w加一手,这个对比是和初始的30万比,还是和之前的50万对比呢?