以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  [求助]请老师 金字塔图表交易系统编程的问题 ,万分感谢!  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=166438)

--  作者:lqf3618
--  发布时间:2018/11/12 13:56:03
--  [求助]请老师 金字塔图表交易系统编程的问题 ,万分感谢!
多头形成买入:=BARSLAST(多头条件)>1 AND MA5>MA10;
空头形成卖出:=BARSLAST(空头条件)>1 AND MA5<MA10;
       我的策略是:
如果出现(多头条件)后的这段时间第一次(五日大于10日均线)形成(多头形成买入);
如果出现(空头条件)后的这段时间第一次(五日小于10日均线)形成(空头形成卖出);

 这公式大部分时间条件是可以成立的,但是这样写会出现一种情况:
               (多头条件)--》(空头形成卖出)--》(MA5>MA10);
或者这样    (空头条件)--》(多头形成买入)--》(MA5<MA10);
                也就是说(多头形成买入)里面会包含(空头形成卖出),严重影响到条件形成判断逻辑,请问老师要怎么解决这个问题,程序应该如何写会比较好,
怎么样才能有效的排除这个干扰项,谢谢老师!

--  作者:FireScript
--  发布时间:2018/11/12 14:32:43
--  
你只能修改自己的策略思路了。 因为如果你多头条件和空头条件是和均线判断那个条件完全相互独立的。那么你说的这个问题的出现,其实是完全合乎自然逻辑的。

你最终要的效果是多头条件完全形成(也就是:多头形成买入)之前忽略空头的条件成立的情况?






--  作者:lqf3618
--  发布时间:2018/11/12 15:52:20
--  
老师可能没完全理解我的意思,我现在就是把(多头形成买入)形成一组买入信号,然后中间如果出现空头形成卖出信号的【ma5<ma10】时候,把这个过滤掉,忽略,这个程序不懂得用那个函数写,我有试过用not这个函数,还是不能忽略掉,请问老师如何解决这个问题,谢谢!
--  作者:lqf3618
--  发布时间:2018/11/12 16:02:12
--  
我最终要的效果是多头条件形成后(也就是,多头形成买入)之后忽略(ma5<ma10)这个条件,因为我的策略是非多即空,只有(多头形成买入,一组)开多平空,或者(空头形成卖出,一组)开空平多,请老师指教,万分感谢!
--  作者:FireScript
--  发布时间:2018/11/12 16:13:45
--  
 试下这样的逻辑处理:

VARIABLE:mark1:=0,mark2:=0;

if mark1=0 and mark2=0 and  空头条件 then mark1:=1;
if mark2=0 and mark1=0 and  多头条件 then mark2:=1;

多头形成买入:=BARSLAST(多头条件)>1 AND MA5>MA10 and mark1;
空头形成卖出:=BARSLAST(空头条件)>1 AND MA5<MA10 and mark2;

if 多头形成买入 then
begin
//交易代码
mark1:=0;
end

if 空头形成卖出 then
begin
//交易代码
mark2:=0;
end

用全局变量做个控制,多或者空 谁先触发 谁就先给全局变量做标记。并且2个全局变量的标记始终保持只能有一个是1.执行下单语句的时候再重置全局变量。
[此贴子已经被作者于2018/11/12 16:14:10编辑过]

--  作者:lqf3618
--  发布时间:2018/11/12 16:41:56
--  
好的,非常感谢firescript,有空试看看!
--  作者:lqf3618
--  发布时间:2018/11/15 14:40:14
--  
请老师再帮我看看,后面这样写行不行,语句会不会通畅,如果不通畅,麻烦帮忙改下,谢谢!


VARIABLE:mark1:=0,mark2:=0;
if mark1=0 and mark2=0 and  空头条件 then mark1:=1; 
if mark2=0 and mark1=0 and  多头条件 then mark2:=1; 
多头形成买入:=BARSLAST(多头条件)>1 AND MA5>MA10 and mark1;
空头形成卖出:=BARSLAST(空头条件)>1 AND MA5<MA10 and mark2;
if 多头形成买入 then 
begin
//交易代码
mark1:=0; 
end
if 空头形成卖出 then 
begin
//交易代码
mark2:=0; 
end

开多:=多头形成买入;
开空:=空头形成卖出;
平空开多:= 多头形成买入;
平多开空:= 空头形成卖出;

INPUT:SS(2,2,10000,2);
buy(holding=0 and 开多,ss,market); 
buyshort(holding=0 and 开空,ss,market); 

if 平空开多 then 
begin
sellshort(holding<0,holding,market);
buy(holding=0,ss,market);     
end

if 平多开空 then 
begin
sell(holding>0,holding,market);
buyshort(holding=0,ss,market);     
end
if JS then 
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);     
end




--  作者:FireScript
--  发布时间:2018/11/15 15:35:00
--  
可以,没看到有什么问题。

--  作者:lqf3618
--  发布时间:2018/11/15 22:31:31
--  
老师,VARIABLE,这个函数逻辑处理没成功,连图都出不来,如果用SUMBARS这个函数如何,可以的话帮忙编辑一下,谢谢!帅哥,在线噢!
FireScript

--  作者:FireScript
--  发布时间:2018/11/16 9:11:39
--  
 提供下你的完整代码。