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, 100); DataSeries ma = SMA.Series(Close, 100); DataSeries ma_1 = SMA.Series(Close, 100); DataSeries maFast_2 = SMA.Series(Close, 10); DataSeries maSlow_3 = SMA.Series(Close, 100); DataSeries ma_4 = SMA.Series(Close, 100); DataSeries ma_5 = SMA.Series(Close, 100); DataSeries maFast_6 = SMA.Series(Close, 10); DataSeries maSlow_7 = SMA.Series(Close, 100); DataSeries ma_8 = SMA.Series(Close, 100); DataSeries maFast_9 = SMA.Series(Close, 10); DataSeries maSlow_10 = SMA.Series(Close, 100); DataSeries maFast_11 = SMA.Series(Close, 10); DataSeries maSlow_12 = SMA.Series(Close, 100); DataSeries ma_13 = SMA.Series(Close, 100); DataSeries maFast_14 = SMA.Series(Close, 10); DataSeries maSlow_15 = SMA.Series(Close, 100); DataSeries ma_16 = SMA.Series(Close, 100); DataSeries ma_17 = SMA.Series(Close, 100); DataSeries ma_18 = SMA.Series(Close, 100); DataSeries maFast_19 = SMA.Series(Close, 10); DataSeries maSlow_20 = SMA.Series(Close, 100); DataSeries ma_21 = SMA.Series(Close, 100); DataSeries maFast_22 = SMA.Series(Close, 10); DataSeries maSlow_23 = SMA.Series(Close, 100); PlotSeries(PricePane, SMA.Series(Close, 10), Color.Red, LineStyle.Solid, 2); PlotSeries(PricePane, SMA.Series(Close, 100), Color.Green, LineStyle.Solid, 2); PlotSeries(PricePane, SMA.Series(Close, 100), Color.Blue, LineStyle.Solid, 2); for (int bar = GetTradingLoopStartBar(101); bar < Bars.Count; bar++) { bool cond1 = false; if (Positions.Count == 0) { if (CrossOver(bar, maFast, maSlow)) { if (ma[bar] > ma[bar - 1]) { cond1 = true; } } bool cond2 = false; if (TurnUp(bar, ma_1)) { if (ActivePositions.Count < 1) { if (maFast_2[bar] > maSlow_3[bar]) { if (Close[bar] > ma_4[bar]) { cond2 = true; } } } } if (cond1 || cond2) { BuyAtClose(bar, "Group1|"); } bool cond3 = false; if (CrossUnder(bar, maFast_11, maSlow_12)) { if (ma_13[bar] < ma_13[bar - 1]) { cond3 = true; } } bool cond4 = false; if (maFast_14[bar] < maSlow_15[bar]) { if (ActivePositions.Count < 1) { if (TurnDown(bar, ma_16)) { if (Close[bar] < ma_17[bar]) { cond4 = true; } } } } if (cond3 || cond4) { ShortAtClose(bar, "Group2|"); } for (int _pos = ActivePositions.Count - 1; _pos >= 0; _pos--) { Position p = ActivePositions[_pos]; if (p.Active) { if (p.EntrySignal.Contains("Group1|")) { bool cond5 = false; if (Close[bar] < ma_5[bar]) { if (CrossUnder(bar, maFast_6, maSlow_7)) { cond5 = true; } } bool cond6 = false; if (Close[bar] < ma_8[bar]) { if (maFast_9[bar] < maSlow_10[bar]) { cond6 = true; } } if (cond5 || cond6) { SellAtClose(bar, p, "Group1"); } } if (p.EntrySignal.Contains("Group2|")) { bool cond7 = false; if (Close[bar] > ma_18[bar]) { if (CrossOver(bar, maFast_19, maSlow_20)) { cond7 = true; } } bool cond8 = false; if (Close[bar] > ma_21[bar]) { if (maFast_22[bar] > maSlow_23[bar]) { cond8 = true; } } if (cond7 || cond8) { CoverAtClose(bar, p, "Group2"); } } } } } } } } }