设为首页收藏本站

 找回密码
 注册
查看: 4123|回复: 3
打印 上一主题 下一主题

请帮忙改写均线顺势交叉模板? [复制链接]

Rank: 4

精华
0
UID
1271
积分
423
帖子
74
主题
21
阅读权限
50
注册时间
2008-3-5
最后登录
2021-2-8
跳转到指定楼层
1#
发表于 2008-6-20 12:43:43 |只看该作者 |倒序浏览
举个简单的例子,希望老师给个模板,好让我参考一下,谢谢,比如简单的均线顺势交叉:
1做多:MA30均线向上,并且MA5均线金叉MA20时做多,设止勋30点,获利100点,追踪止勋40;
2做空:MA30均线向下,并且MA5均线死叉MA20时做空,设止勋30点,获利100点,追踪止勋40;
3多单平仓条件:
                MA5均线在MA30之上超出40点并且MA5均线死叉MA20时平仓多单,或者2次MA5均线死叉MA20,
                平仓条件符合后,必须还符合多持仓获利大于30点;
4空单平仓条件:
                MA5均线在MA30之下超出40点并且MA5均线金叉MA20时平仓多单,或者2次MA5均线金叉MA20,
                平仓条件符合后,必须还符合空持仓获利大于30点;
每次进单一手,以下是我自己编的老是提示出错,请老师批改,谢谢:
Params
        Numeric StopLoss(30); //止勋30点
        Numeric TrailingStop(40); //追踪止勋40
        Numeric TakeProfit(100); //获利100点
        Numeric Lots(1); //进单一手
        Numeric M5(5);
        Numeric M20(20);
        Numeric M30(30);
Vars   
        NumericSeries MA5;
        NumericSeries MA20;
        NumericSeries MA30;
        Bool BK1;
        Bool SK1;
        Bool BP1;
        Bool BP2;
        Bool SP1;
        Bool SP2;       
Begin
   MA5=AverageFC(Close,M5);
   MA20=AverageFC(Close,M20);
   MA30=AverageFC(Close,M30);
   If(MarketPosition ==0 )  // 当前空仓
     {
        BK1=COUNTIF(MA30[0]>MA30[1],3)>2&&CrossOver(MA5,MA20);
        SK1=COUNTIF(MA30[0]<MA30[1],3)>2&&CrossOver(MA20,MA5);
               if (BK1) //多条件
            {
                Buy(Lots,Close); //买进单一手
                SetStopLoss(1,StopLoss,false); //设止勋30点
                SetProfitTarget(1,TakeProfit,false); //设获利100点
               SetDollarTrailing(TrailingStop,false); //设追踪止勋40
            }

          if (SK1) //空条件
             {
                SellShort(Lots,Close); //卖出单一手
                SetStopLoss(1,StopLoss,false); //设止勋30点
                SetProfitTarget(1,TakeProfit,false); //设获利100点
               SetDollarTrailing(TrailingStop,false); //设追踪止勋40
             }
       }

If(MarketPosition ==1 )  // 有多仓的情况
   {
         SP1=MA5>MA30&&(MA5-MA30)>40&&CrossOver(MA20,MA5); //多平条件1
         SP2=COUNTIF(CrossOver(MA20,MA5),25)>=2; //多平条件2
    if ((SP1||SP2)&&A_BuyProfitLoss()>30)  //在多仓盈利超30点后并且符合多平仓条件
             {
                Sell; //卖出平仓
             }
    }
If(MarketPosition ==-1 )  // 有空仓的情况
   {
         BP1=MA5<MA30&&(MA30-MA5)>40&&CrossOver(MA5,MA20); //空平条件1
         BP2=COUNTIF(CrossOver(MA5,MA20),25)>=2; //空平条件2
    if ((BP1||BP2)&&A_SellProfitLoss()>30)  //在空仓盈利超30点后并且符合空平仓条件
             {
                BuyToCover(Lots,Close) ;  //卖出平仓
             }
    }

End       

错误提示为无法识别的字符串: if ((SP1||SP2)&&A_BuyProfitLoss()>30) 和 if ((BP1||BP2)&&A_SellProfitLoss()>30)
希望各位老师,版主帮忙修改,谢谢,谢谢了

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
2#
发表于 2008-6-20 13:21:08 |只看该作者
上面的写法,问题比较多,我重新写过如下:
  1. Params
  2.     Numeric StopLoss(30);                         // 止损30点
  3.     Numeric TrailingStop(40);                 // 追踪止损40点
  4.     Numeric TakeProfit(100);                 // 获利100点
  5.     Numeric Lots(1);                                 // 进单一手
  6.     Numeric M5(5);
  7.     Numeric M20(20);
  8.     Numeric M30(30);
  9. Vars
  10.     Numeric MinPoint;
  11.     NumericSeries MA5;
  12.     NumericSeries MA20;
  13.     NumericSeries MA30;

  14.     Bool BK1;
  15.     Bool SK1;
  16.     Bool BP1;
  17.     Bool BP2;
  18.     Bool SP1;
  19.     Bool SP2;
  20. Begin
  21.     MinPoint = MinMove*PriceScale;
  22.     SetStopLoss(1,StopLoss*MinPoint*ContractUnit*BigPointValue,false);                         //设止损30点
  23.     SetProfitTarget(1,TakeProfit*MinPoint*ContractUnit*BigPointValue,false);         //设获利100点
  24.     SetDollarTrailing(TrailingStop*MinPoint*ContractUnit*BigPointValue,false);         //设追踪止损40

  25.     MA5=AverageFC(Close,M5);
  26.     MA20=AverageFC(Close,M20);
  27.     MA30=AverageFC(Close,M30);

  28.     If(MarketPosition ==0 )          // 当前空仓
  29.     {
  30.         BK1=COUNTIF(MA30[0]>MA30[1],3)>2&&CrossOver(MA5,MA20);
  31.         SK1=COUNTIF(MA30[0]<MA30[1],3)>2&&CrossOver(MA20,MA5);

  32.         if (BK1) //多条件
  33.         {
  34.             Buy(Lots,NextOpen,True); //买进单一手
  35.             }else if (SK1) //空条件
  36.         {
  37.             SellShort(Lots,NextOpen,True); //卖出单一手
  38.         }
  39.     }Else If(MarketPosition ==1 )  // 有多仓的情况
  40.     {
  41.         SP1=MA5>MA30&&(MA5-MA30)>40&&CrossOver(MA20,MA5); //多平条件1
  42.         SP2=COUNTIF(CrossOver(MA20,MA5),25)>=2;                         //多平条件2
  43.         If((SP1 || SP2) && PositionProfit>30*MinPoint*ContractUnit*BigPointValue)//在多仓盈利超30点后并且符合多平仓条件
  44.         {
  45.             Sell(0,NextOpen,True);
  46.         }
  47.     }Else If(MarketPosition ==-1 )  // 有空仓的情况
  48.     {
  49.         BP1=MA5<MA30&&(MA30-MA5)>40&&CrossOver(MA5,MA20); //空平条件1
  50.         BP2=COUNTIF(CrossOver(MA5,MA20),25)>=2;         //空平条件2
  51.         If((BP1||BP2)&&PositionProfit>30*MinPoint*ContractUnit*BigPointValue)//在空仓盈利超30点后并且符合空平仓条件
  52.         {
  53.             BuyToCover(Lots,NextOpen,True);
  54.         }
  55.     }
  56. End
复制代码

使用道具 举报

Rank: 4

精华
0
UID
1271
积分
423
帖子
74
主题
21
阅读权限
50
注册时间
2008-3-5
最后登录
2021-2-8
3#
发表于 2008-6-22 14:55:21 |只看该作者
如何应用在5分钟上时,在15分钟上符合,在60分时上符合,日线上符合上面条件时同样也进单...谢谢

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
4#
发表于 2008-6-23 09:31:56 |只看该作者
多周期处理,请参考这个贴:
http://www.tradeblazer.net/forum/thread-2433-1-1.html

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-6 19:36

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部