请教ilian老大

Discussion in 'Wealth-Lab Developer' started by ZWS, May 19, 2012.

  1. ZWS

    ZWS

    请教ilian老大,下面的script老是提示37行的else多余,还缺;?是什么原因?
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using WealthLab;
    using WealthLab.Indicators;

    namespace WealthLab.Strategies
    {
    public class MyStrategy : WealthScript
    {
    protected override void Execute()
    {
    DataSeries maFast = SMA.Series(Close, 5);
    DataSeries maSlow = SMA.Series(Close, 30);
    DataSeries maFast_1 = SMA.Series(Close, 5);
    DataSeries maSlow_2 = SMA.Series(Close, 120);
    DataSeries maFast_3 = SMA.Series(Close, 10);
    DataSeries maSlow_4 = SMA.Series(Close,60);

    PlotSeries(PricePane,SMA.Series(Close,5),Color.Red,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,30),Color.Green,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,5),Color.Red,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,120),Color.Green,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,10),Color.Red,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,60),Color.Green,LineStyle.Solid,2);

    for(int bar = 20; bar < Bars.Count; bar++)
    {
    if (IsLastPositionActive)
    {
    //code your exit rules here
    if(CrossUnder(bar,maFast_3,maSlow_4))
    {
    for(int p=ActivePositions.count-1; p>-1; p--)
    SellAtMarket(bar+1,ActivePositions[p] );
    else
    {
    if(CrossOver(bar,maFast_1,maSlow_2))
    BuyAtMarket(bar+1);
    }
    }
    }
    else
    {
    //code your entry rules here
    if(CrossOver(bar,maFast,maSlow))
    BuyAtMarket(bar+1);
    }
    }
    }
    }
    }

    请指较,谢谢!
     
  2. ZWS

    ZWS

    电脑给的答案是
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Drawing;
    using WealthLab;
    using WealthLab.Indicators;

    namespace WealthLab.Strategies
    {
    public class MyStrategy : WealthScript
    {

    protected override void Execute()
    {
    DataSeries maFast = SMA.Series(Close, 10);
    DataSeries maSlow = SMA.Series(Close, 30);
    DataSeries maFast_1 = SMA.Series(Close, 10);
    DataSeries maSlow_2 = SMA.Series(Close, 60);
    DataSeries maFast_3 = SMA.Series(Close, 20);
    DataSeries maSlow_4 = SMA.Series(Close, 120);

    PlotSeries(PricePane,SMA.Series(Close,10),Color.Red,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,30),Color.Green,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,10),Color.Red,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,60),Color.Green,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,20),Color.Red,LineStyle.Solid,2);
    PlotSeries(PricePane,SMA.Series(Close,120),Color.Green,LineStyle.Solid,2);

    for(int bar = GetTradingLoopStartBar(121); bar < Bars.Count; bar++)
    {
    if (LastActivePosition != null && LastActivePosition.Active)
    if (LastActivePosition.NetProfitAsOfBar(bar) > 0)
    {
    if (maFast_3[bar] > maSlow_4[bar])
    {
    BuyAtClose(bar, "");
    }
    }
    if (CrossOver(bar, maFast, maSlow))
    {
    BuyAtClose(bar, "Group1|");
    }

    for(int _pos = ActivePositions.Count - 1; _pos >= 0; _pos--)
    {
    Position p = ActivePositions[_pos];
    if (p.Active)
    {
    if (p.EntrySignal.Contains("Group1|"))
    {
    if (CrossUnder(bar, maFast_1, maSlow_2))
    {
    SellAtClose(bar, p, "Group1");
    }
    }

    }
    }
    }
    }
    }
    }
     
  3. ZWS

    ZWS

    不过还是搞不清楚原来的错在哪里?
    请老大指教!!!
     
  4. 结果一样吗?一样就可以了。
     
  5. ZWS

    ZWS

    第一个程序跟本就不运行,加个}后,程序提示问题跟多,
    搞不清楚.

    能帮忙指点一下吗?
     
  6. 这个策略想表达什么?
    如果是想说maFast金叉maSlow买进,maFast_1金叉maSlow_2加码,maFast_3死叉maSlow_4卖出。那么应该是下面这个写法吧。
     
  7. ZWS

    ZWS

    谢谢ilian老大!!!!

    如果空头和多头都放到一个程序里面(条件相反),位置要怎么摆呢?

    谢谢指教!!!!!!
     
  8. 看一下帮助文档有关Position 管理部分。
     
  9. 想不到今天在海洋见到一个老乡前辈,请多指教