Сделать кратным 5 значение в заявке BuyAtStop

10/14/2011 2:16:37 AM
Gravatar
Total Posts 27

Сделать кратным 5 значение в заявке BuyAtStop

Обращюсь с очередным вопросом: как сделать значение NRTR_WATR кратным 5 в строке "BuyAtStop( bar+1, NRTR_WATR[bar], "nrtr" )"?

[QUOTE]

using System;

using System.Collections.Generic;

//using System.Linq;

using System.Drawing;

using System.Text;

using WealthLab;

using WealthLab.Indicators;

using WealthLab.Optimizers;

using WealthLab.Strategies;

namespace WealthLab.Strategies

{

//public class NRTR_ATR : WealthScript

public class MyStrategy : WLRT.LiveTrading.WealthScript

{

//public MyStrategy():base(true, false, "L01-00000F00/15882-SUR")

public MyStrategy():base(true, false, "SPBFUT00W52/SPBFUT00W52Ден.средства")

//Это типа конструктор для определения счета в котором будем торговать.

{}

protected override void Execute()

{

SetLogScale( PricePane, false );

int TR_Period = 20; // период WMA для True Range

int Dynamic_Channel_Period = 0; // длина динамического канала

int Max_Channel_Period = 20; // верхнее ограничение на длину динамического канала

int Trend = 0; // переменная для идентификации направления движения цены

double Reverse = 0; // NRTR_WATR

double HPrice=0; // максимальная цена за период

double LPrice=0; // минимальная цена за период

double Multiple = 2.0; // множитель для WATR

DataSeries slowma = SMA.Series(Close, 8);

DataSeries fastma = SMA.Series(Close, 3);

DataSeries peak = Highest.Series( High, 2 );

DataSeries peaklow = Lowest.Series( Low, 2);

DataSeries K = WMA.Series( TrueRange.Series( Bars ), TR_Period ) * Multiple;

DataSeries NRTR_WATR = new DataSeries( Bars, "NRTR_WATR" );

PlotSeries( PricePane, NRTR_WATR, Color.Blue, WealthLab.LineStyle.Dotted, 2 );

//PlotSeries( PricePane, NRTR_TRADE, Color.Black, WealthLab.LineStyle.Dotted, 2 );

PlotSeries( PricePane, peak, Color.Green, WealthLab.LineStyle.Solid, 1 );

PlotSeries( PricePane, peaklow, Color.Red, WealthLab.LineStyle.Solid, 1 );

SetShareSize(1);

for(int bar = 20; bar < Bars.Count; bar++)

{

if( Trend >= 0 ) // восходящий тренд

{

if (Max_Channel_Period > Dynamic_Channel_Period)

{

Dynamic_Channel_Period++; // увеличиваем период канала

HPrice = Math.Max( Bars.Close[bar], Highest.Value(bar, Close, Dynamic_Channel_Period));

}

else HPrice = Math.Max( Bars.Close[bar], Highest.Value(bar, Close, Max_Channel_Period));

Reverse = HPrice - K[bar]; // индикатор для восходящего тренда

if( Bars.Close[bar] <= Reverse ) // переворот индикатора

{

Dynamic_Channel_Period = 0; // обнуляем период канала

Trend = -1; // меняем ориентацию тренда

LPrice = Bars.Close[bar];

Reverse = LPrice + K[bar];

}

}

if( Trend <= 0 ) // нисходящий тренд

{

if (Max_Channel_Period > Dynamic_Channel_Period)

{

Dynamic_Channel_Period++; // увеличиваем период канала

LPrice = Math.Min( Bars.Close[bar], Lowest.Value(bar, Close, Dynamic_Channel_Period));

}

else LPrice = Math.Min( Bars.Close[bar], Lowest.Value(bar, Close, Max_Channel_Period));

Reverse = LPrice + K[bar]; // индикатор для восходящего тренда

if( Bars.Close[bar] >= Reverse ) // переворот индикатора

{

Dynamic_Channel_Period = 0; // обнуляем период канала

Trend = 1; // меняем ориентацию тренда

HPrice = Bars.Close[bar];

Reverse = HPrice - K[bar];

}

}

NRTR_WATR[bar] = Reverse;

if (IsLastPositionActive)

{

//code your exit rules here

//if ( CrossOver( bar, NRTR_WATR, Close) )

// SellAtMarket( bar+1, LastPosition);

Position p = LastPosition;

//ExitAtStop( bar+1, p, peaklow[bar], "exit" );

ExitAtStop( bar+1, p, NRTR_WATR[bar], "nrtr" );

}

else

{

//code your entry rules here

//if ( CrossOver( bar, Close, NRTR_WATR ) )

// BuyAtMarket( bar+1);

//BuyAtStop( bar+1, peak[bar], "Breakout" );

BuyAtStop( bar+1, NRTR_WATR[bar], "nrtr" );

}

}

}

}

}

[/QUOTE]

10/14/2011 4:46:46 PM
Gravatar
Total Posts 27

RE:Сделать кратным 5 значение в заявке BuyAtStop

Пояснение к моему вопросу: стоп-заявка ставится по команде "BuyAtStop( bar+1, NRTR_WATR[bar], "nrtr" );",

то есть уровень стопа берется из команды NRTR_WATR.

Система Квик принимает цену стопа только кратную 5-ти. Таким образом, мои заявки не срабатыают, тк NRTR_WATR далеко не всегда кратен пяти.

10/14/2011 5:09:39 PM
Gravatar
Total Posts 151

RE:Сделать кратным 5 значение в заявке BuyAtStop

Да, в велсе для этого есть SymbolInfo Manager в меню Tools. Про настройки бумаг в [URL=http://www.WLRT.ru/forum/forum19/topic711/message2373/#message2373]этой теме[/URL].

Как вариант, можно это сделать и в коде, но начать можно с этого.

10/14/2011 6:50:17 PM
Gravatar
Total Posts 27

RE:Сделать кратным 5 значение в заявке BuyAtStop

И еще вопрос про стопы: как сделать цену исполнения стоп-заявки отличной от уровня стопа?

Например, выставляем стоп-заявку на покупку по стоп-цене 150.000, но с ценой исполнения 150500.

10/14/2011 10:46:42 PM
Gravatar
Total Posts 151

RE:Сделать кратным 5 значение в заявке BuyAtStop

Есть настройка в ДДЕ сервере. там отступ следует указать в пипсах.