//------------------------------------------------------------------------------
//
// Этот код создан программой.
// Исполняемая версия:4.0.30319.35312
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
//
//------------------------------------------------------------------------------
namespace TSLab.User
{
using System;
using TSLab.Script;
public sealed class Script
{
private TSLab.Script.Handlers.RelativeCommission Comission1_h = new TSLab.Script.Handlers.RelativeCommission();
private vvTSLtools.HeikenAshiMA Closses_h = new vvTSLtools.HeikenAshiMA();
private vvTSLtools.HeikenAshiMA Lows_h = new vvTSLtools.HeikenAshiMA();
private vvTSLtools.HeikenAshi HeikenAshi1_h = new vvTSLtools.HeikenAshi();
public void Execute(TSLab.Script.Handlers.IContext context, TSLab.Script.ISecurity Source1)
{
// Initialize 'Closses' item
this.Closses_h.Context = context;
this.Closses_h.Closess = true;
this.Closses_h.Highs = false;
this.Closses_h.Lows = false;
this.Closses_h.Opens = false;
// Make 'Closses' item data
System.Collections.Generic.IList Closses = context.GetData("Closses", new string[] {
this.Closses_h.Closess.ToString(),
this.Closses_h.Highs.ToString(),
this.Closses_h.Lows.ToString(),
this.Closses_h.Opens.ToString(),
"Source1"
}, delegate {
try {
return this.Closses_h.Execute(Source1);
}
catch (System.ArgumentOutOfRangeException ) {
throw new TSLab.Script.ScriptException("Ошибка при вычислении блока \'Closses\'. Индекс за пределам диапазона.");
}
});
// Initialize 'Lows' item
this.Lows_h.Context = context;
this.Lows_h.Closess = false;
this.Lows_h.Highs = false;
this.Lows_h.Lows = true;
this.Lows_h.Opens = false;
// Make 'Lows' item data
System.Collections.Generic.IList Lows = context.GetData("Lows", new string[] {
this.Lows_h.Closess.ToString(),
this.Lows_h.Highs.ToString(),
this.Lows_h.Lows.ToString(),
this.Lows_h.Opens.ToString(),
"Source1"
}, delegate {
try {
return this.Lows_h.Execute(Source1);
}
catch (System.ArgumentOutOfRangeException ) {
throw new TSLab.Script.ScriptException("Ошибка при вычислении блока \'Lows\'. Индекс за пределам диапазона.");
}
});
// Make 'ЛогичесФормула2' item data
System.Collections.Generic.IList ЛогичесФормула2;
try
{
int count = System.Math.Min(Lows.Count, Closses.Count);
bool[] list = new bool[count];
if ((context.IsLastBarUsed == false))
{
count--;
}
for (int i = 1; (i < count); i++)
{
list[i] = Closses[i]0
&& (context.IsLastBarUsed == false)))
{
list[count] = list[count-1];
}
ЛогичесФормула2 = list;
}
catch (System.ArgumentOutOfRangeException )
{
throw new TSLab.Script.ScriptException("Ошибка при вычислении блока \'ЛогичесФормула2\'. Индекс за пределам диапазона.");
}
// Make 'ЛогичесФормула1' item data
System.Collections.Generic.IList ЛогичесФормула1;
try
{
int count = System.Math.Min(Lows.Count, Closses.Count);
bool[] list = new bool[count];
if ((context.IsLastBarUsed == false))
{
count--;
}
for (int i = 1; (i < count); i++)
{
list[i] = Closses[i]>Lows[i-1];
}
if ((count>0
&& (context.IsLastBarUsed == false)))
{
list[count] = list[count-1];
}
ЛогичесФормула1 = list;
}
catch (System.ArgumentOutOfRangeException )
{
throw new TSLab.Script.ScriptException("Ошибка при вычислении блока \'ЛогичесФормула1\'. Индекс за пределам диапазона.");
}
// Initialize 'HeikenAshi1' item
this.HeikenAshi1_h.Context = context;
// Make 'HeikenAshi1' item data
TSLab.Script.ISecurity HeikenAshi1;
try
{
HeikenAshi1 = this.HeikenAshi1_h.Execute(Source1);
}
catch (System.ArgumentOutOfRangeException )
{
throw new TSLab.Script.ScriptException("Ошибка при вычислении блока \'HeikenAshi1\'. Индекс за пределам диапазона.");
}
// =================================================
// Panels
// =================================================
// Make 'Main' pane
TSLab.Script.IPane Main_pane = context.CreatePane("Main", 70D, false);
Main_pane.Visible = true;
// =================================================
// Handlers
// =================================================
// Initialize 'Comission1' item
this.Comission1_h.CommissionPct = 0.05D;
this.Comission1_h.MarginPct = 10D;
this.Comission1_h.Execute(Source1);
TSLab.Script.IPosition SHORT;
TSLab.Script.IPosition LONG;
// =================================================
// Trading
// =================================================
int barsCount = Source1.Bars.Count;
if ((context.IsLastBarUsed == false))
{
barsCount--;
}
for (int i = 0; (i < barsCount); i++)
{
SHORT = Source1.Positions.GetLastActiveForSignal("SHORT", i);
LONG = Source1.Positions.GetLastActiveForSignal("LONG", i);
if ((SHORT == null))
{
if (ЛогичесФормула2[i])
{
if ((context.TradeFromBar <= i))
{
Source1.Positions.SellAtMarket(i+1, 2D, "SHORT");
}
}
}
else
{
if ((SHORT.EntryBarNum <= i))
{
if (ЛогичесФормула1[i])
{
SHORT.CloseAtMarket(i+1, "ЗакрПозиПоРынк2");
}
}
}
if ((LONG == null))
{
if (ЛогичесФормула1[i])
{
if ((context.TradeFromBar <= i))
{
Source1.Positions.BuyAtMarket(i+1, 2D, "LONG");
}
}
}
else
{
if ((LONG.EntryBarNum <= i))
{
if (ЛогичесФормула2[i])
{
LONG.CloseAtMarket(i+1, "ЗакрПозиПоРынк1");
}
}
}
}
// =================================================
// Charts
// =================================================
// Make 'HeikenAshi1' chart
TSLab.Script.IGraphList Main_pane_HeikenAshi1_chart = Main_pane.AddList(("HeikenAshi1"
+ (" ["
+ (HeikenAshi1.Symbol + "]"))), HeikenAshi1, TSLab.Script.CandleStyles.BAR_CANDLE, true, true, true, true, 138, TSLab.Script.PaneSides.RIGHT);
HeikenAshi1.ConnectSecurityList(Main_pane_HeikenAshi1_chart);
Main_pane.UpdatePrecision(TSLab.Script.PaneSides.RIGHT, HeikenAshi1.Decimals);
// Make 'Lows' chart
TSLab.Script.IGraphList Main_pane_Lows_chart = Main_pane.AddList(((("Lows"
+ (" (" + this.Lows_h.Closess))
+ ")")
+ (" ["
+ (Source1.Symbol + "]"))), Lows, TSLab.Script.ListStyles.LINE, 9633792, TSLab.Script.LineStyles.SOLID, TSLab.Script.PaneSides.RIGHT);
Main_pane.UpdatePrecision(TSLab.Script.PaneSides.RIGHT, Source1.Decimals);
// Make 'Closses' chart
TSLab.Script.IGraphList Main_pane_Closses_chart = Main_pane.AddList(((("Closses"
+ (" (" + this.Closses_h.Closess))
+ ")")
+ (" ["
+ (Source1.Symbol + "]"))), Closses, TSLab.Script.ListStyles.LINE, 0, TSLab.Script.LineStyles.SOLID, TSLab.Script.PaneSides.RIGHT);
Main_pane.UpdatePrecision(TSLab.Script.PaneSides.RIGHT, Source1.Decimals);
}
}
}