using System;
using System.Drawing;
using System.Linq;
using PowerLanguage.Function;
using ATCenterProxy.interop;
 
namespace PowerLanguage.Strategy
{
    public class Example_StopLimit : SignalObject
    {
        private IOrderMarket buyMarketOrder, sellMarketOrder;
        private IOrderStopLimit sellStopLimitOrder;
        private double sellStopPrice, sellLimitPrice;
 
        public Example_StopLimit(object _ctx) : base(_ctx) { }
 
        protected override void Create()
        {
            buyMarketOrder = OrderCreator.MarketNextBar(new SOrderParameters(
                Contracts.Default, "EnterLong", EOrderAction.Buy));
 
            sellMarketOrder = OrderCreator.MarketNextBar(new SOrderParameters(
                Contracts.Default, "ExitLong", EOrderAction.Sell));
 
            sellStopLimitOrder = OrderCreator.StopLimit(new SOrderParameters(
                Contracts.Default, "StopLMT", EOrderAction.Sell));
        }
 
        protected override void StartCalc()
        {
            Output.Clear(); // Clear PowerLanguage Editor output tab
        }
 
        protected override void CalcBar()
        {
            // When flat, enter long on first bar of day
            if ((StrategyInfo.MarketPosition == 0) && (Bars.Time[0].Date != Bars.Time[1].Date))
            {
                buyMarketOrder.Send();
 
                sellStopPrice  = Bars.Low[0] - Bars.Range();
                sellLimitPrice = Bars.Low[0] - (Bars.Range() * 1.5);
 
                Output.WriteLine("{0} - Buy order submitted. Sell stop calculated @ {1} with limit {2}",
                    Bars.Time[0].ToString("d-M HH:mm:ss"),
                    sellStopPrice,
                    sellLimitPrice);
            }
 
            // Long order management
            if (StrategyInfo.MarketPosition > 0)
            {
                // Submit the stop-limit order as long as there is an open position
                sellStopLimitOrder.Send(sellStopPrice, sellLimitPrice);
 
                Output.WriteLine("{0} - Submitting sell stop @ {1} with limit {2}",
                    Bars.Time[0].ToString("d-M HH:mm:ss"),
                    sellStopPrice,
                    sellLimitPrice);
 
                // Time stop; exit the position after 15 bars
                double barsInPosition = Bars.CurrentBar - CurrentPosition.OpenTrades[0].EntryOrder.BarNumber;
                if (barsInPosition >= 15)
                {
                    sellMarketOrder.Send();
 
                    Output.WriteLine("{0} - Position open for {1} bars, submitting exit long market order",
                        Bars.Time[0].ToString("d-M HH:mm:ss"),
                        barsInPosition);
                }
            }
        }
    }
}

 

MC- 交易并设置止损的更多相关文章

  1. 止损+TS

    单策略单品种单策略多品种多策略单品种和加仓多策略多品种静态仓位和动态仓位 金肯特钠(kingKeltner)布林强盗(BollingerBandit)动态突破(DynamicBreakOutII)恒温 ...

  2. discuz全局数组变量 后台各项设置 完整版

    $_G 保存了 Discuz! 中所有的预处理数据 缓存能够很好的提高程序的性能,一些配置数据没必要每次都查询数据库,只要在修改了的时候更新下缓存即可. Discuz! 中所有的缓存保存在 $_G[c ...

  3. 《零起点,python大数据与量化交易》

    <零起点,python大数据与量化交易>,这应该是国内第一部,关于python量化交易的书籍. 有出版社约稿,写本量化交易与大数据的书籍,因为好几年没写书了,再加上近期"前海智库 ...

  4. just555 对话

    网易 新闻 2005-03-31 16:37:47 空!(19194697)555,你在大连炒单,单日最大盈利率多少? 2005-03-31 16:37:59 just555(79610908)最大1 ...

  5. R与金钱游戏:均线黄金交叉2

    从上一篇分析已经得知均线黄金交叉原则并不适用于震荡期,那有什么办法可以规避震荡期呢或者说有什么办法可以减少无脑跟的损失?我们继续玩一下. Required Packages library(quant ...

  6. 吐血整理,一文读懂中国金融衍生品市场的前世今生和未来[z]

    [z]https://www.gfedu.cn/cfrm/content_22687.shtml 从定义上来说,金融衍生工具(derivativesecurity)是在货币.债券.股票等传统金融工具的 ...

  7. LR12.53—第7课:分析场景

    第7课:分析场景 在前面的课程中,您学习如何设计,控制和执行方案运行.一旦您已加载您的服务器,你要分析的运行,并确定需要被淘汰,以提高系统性能的问题. 在图表和报告中有关方案的性能您的分析会议上提出的 ...

  8. python---Memcached

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  9. 17.Python笔记之memcached&redis

    作者:刘耀 博客:www.liuyao.me 博客园:www.cnblogs.com/liu-yao 一.Memcached 1.介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动 ...

随机推荐

  1. jquery 获取当前对象的id取巧验证的一种方法

    <!doctype html><html><head><meta charset="utf-8"><title>titl ...

  2. [HMLY]6.iOS Xcode全面剖析

    一.创建一个新工程 1.第一步打开Xcode,找到Xcode程序图标并点击 2.如下界面,我们点击新建一个项目,即第二项 (1).Get started with a playground playg ...

  3. NGUI中的Tween的委托使用

    public TweenPosition tweenIn; public TweenScale tweenOut; EventDelegate In = new EventDelegate(this, ...

  4. dev Gridcontrol根据其cell里面的值显示不同颜色

    要改变cell值得颜色 需要用到cellTemplate和convert <DataTemplate x:Key="PercentageCellColorTemplate"& ...

  5. [Q]将图纸转换为JPG、PNG、plt、DWF、DWFx,XPS等格式文件

    如要将图纸打印为图片,请选择“PublishToWeb JPG.pc3”或“PublishToWeb PNG.pc3”打印机. 如要将图纸打印为plt格式文件,请选择“Windows Default ...

  6. Egret 学习之 入口函数 及开始编写程序(三)

    1,Egret的程序入口: C和java是以一个main函数作为入口,但egret类似于ActionScript 是以一个文档类作为入口,确切的说是以这个文档类的构造函数作为入口: 2,文档类的构造函 ...

  7. 如何使用Maven的archetype快速生成一个新项目(解决生成项目目录不完整问题)

    Maven的archetype Plugin可能大家都听过,但不一定都能很好地用好它.缺省地如果你使用 mvn archetype:generate  会从maven的Repository里查找所有支 ...

  8. 关于ajax跨域问题

    什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...

  9. X264的版本号

    0 X264官方地扯 http://www.videolan.org/developers/x264.html 1 X264官方编译的二进制程序命名格式 官方编译出了LINUX,Win32,Win64 ...

  10. WPF之DatePicker使其只能选择日期,不能输入日期

    <DatePicker.Resources>  <Style TargetType="DatePickerTextBox">           <S ...