using System; using System.Collections.Generic; using System.Text; using System.Drawing; using WealthLab; using WealthLab.Indicators; namespace WealthLab.Strategies { public class MyStrategy : WealthScript { private double EntryPrice; StrategyParameter _Deep; StrategyParameter _Stop; StrategyParameter _Filter; public MyStrategy() { _Deep = CreateParameter("Depth Period", 14, 5, 50, 1); _Stop = CreateParameter("Stop Value", 0.3, 0.1, 0.6, 0.1); _Filter = CreateParameter("Filter Value", 0.1, 0, 0.5, 0.05); } int NumberOfActivePositions() { int c=0; for( int i=0;i0) { p = ActivePositions[0]; if( p.PositionType == PositionType.Long ) SellAtStop(bar, Position.AllPositions,LL[bar-1]*(1-Filter/100) ,"Cover Short"); else CoverAtStop(bar, Position.AllPositions, HH[bar-1]*(1+Filter/100) ,"Close Long"); if (!IsLastPositionActive) StopBar=bar; } if (ActivePositions.Count < 5 && bar!=StopBar) if (HH[bar-1]>=MAF[bar-1] && High[bar]>= HH[bar-1]*(1+Filter/100) ) { if (BuyAtStop(bar,HH[bar-1]*(1+Filter/100) ,"Buy")!=null) ActivePositions[ActivePositions.Count-1].Tag=HH[bar-1]*(1+Filter/100); } if (ActivePositions.Count < 5 && bar!=StopBar) if (LL[bar-1]<=MAF[bar-1]&& Low[bar]<= LL[bar-1]*(1-Filter/100) ) { if (ShortAtStop(bar,LL[bar-1]*(1-Filter/100) ,"Short")!=null) ActivePositions[ActivePositions.Count-1].Tag=LL[bar-1]*(1-Filter/100); } if (ActivePositions.Count>0) { //Stops for(int pos = ActivePositions.Count - 1; pos >= 0; pos--) { p = ActivePositions[pos]; if( p.PositionType == PositionType.Long ) SellAtStop(bar+1, p, (double)p.Tag*(1-Stop/100) ,"Stop Short"); else CoverAtStop(bar+1, p ,(double)p.Tag*(1+Stop/100) ,"Stop Long"); if (!IsLastPositionActive) StopBar=bar; } } } } } }